この記事は速報として記載したものであるため、新機能の網羅性や各機能の説明の正確さなどについては保証しておりません。
ぜひソースとなる動画をご確認いただければ幸いです。
BUILDとは
BUILDはSnowflakeの公式イベントの一つで、エンジニア・デベロッパー向けの情報を集めたグローバルなオンラインイベントです。
アメリカから開催して、他のエリアにもローカライズして順次展開されるのが慣例になっており、日本向けには2024/12/17に開催される予定です。
記事のソースとなる動画
本記事は以下の動画をソースとして記載しています。
- Opening Keynote
- What's New: Snowflake Horizon Catalog
- What’s New: Storage, Apache Iceberg, Apache Polaris (Incubating)
- What’s New: Hybrid Tables
- What's New: Advanced ML in Snowflake
- What's New: Unlocking New SaaS Efficiency: What’s new Snowflake Native Apps and Expanded Platform Capabilities
- What's New: Conversational Applications and NLP with Cortex AI
用語と注意事項
- GA:Generally Available。一般提供。
- PuPr:Public Preview。誰でも試せる。本番ワークロードに使うのは非推奨。
- PrPr:Private Preview。Snowflakeに申し込んで許可された人だけが試せる。PuPrになるタイミングで仕様が変わることも。
- Announcement:開発中(In-Development)。おそらくまだSnowflakeの中の人以外は触っていない。
AWSだけGA、AzureだけPuPrなどもあるのですが、以下の記載ではざっくりと丸めて紹介します。
また、BUILDのセッションは直近数カ月程度のリリースも含まれています。以下の記載では新発表だけではなく既に発表されているものも含みますので、ご留意ください。
機械学習
Snowflake Notebooks [GA]
無事にGAしました。よかったよかった。
講演会場でも万雷の拍手でお祝いされていました。
ドキュメント
Snowflake Notebooks in Container Runtime [PuPr]
Jupyter NotebookライクなUIであるSnowflake Notebooksの実行バックエンドとしてSnowpark Container Services(SPCS)が選べるようになりました。
GPUコンテナを選べるので機械学習したいときやLLMをホストしたいときに有用ですね。
ドキュメント
Snowflake Model Registry [GA]
機械学習モデルとそのメタデータをSnowflake上に保存できるレジストリです。
このレジストリから例えばSageMakerへのデプロイもできるのですが、それだけではなくSnowpark MLというSQLから機械学習モデルを使った推論を実行できる機能と組み合わせられるのがいいですね。
メジャーな機械学習フレームワークには対応しているので、ドキュメントをご確認ください。
ドキュメント
ML Lineage [PuPr]
機械学習モデルがSnowflake上のどのテーブルやビューから作られたものなのか、リネージュを描けるようになっています。
具体的な記録方法はregistry.log_model
関数にソースを明示してあげればいいようです。
ドキュメント
Model Serving in Snowpark Container Services [PuPr]
機械学習モデルを任意の大きさのコンテナで動かせます。さらに、依存するパッケージも自由に選べます。
gpu_requests
もできるぞ!
ドキュメント
Model Explainability [PuPr]
機械学習モデルのシャープレイ値を記録できる!
EXPLAIN
関数でそのシャープレイ値を確認できるようです。
ドキュメント
ML Observability [PuPr]
推論データと推論結果をログとして記録することで、ドリフトが起こっていないかを確認できる機能です。
確認はSnowsight上でできます。
なお、機械学習モデル1つごとにモデルモニターと呼ばれるオブジェクトを作成しておく必要があるようです。
ドキュメント
Snowflake Feature Store [GA]
生データが入力されたときにあらかじめ定義した特徴量に変換して管理するための機能です。
日々流れてくるタイムスタンプ付きのデータに対して推論する、というシーンはよくあると思いますが、タイムスタンプそのままではなく曜日を特徴量として用いたいときにはこの機能で曜日への変換を設定しておけば、増分データを用いて推論するMLパイプラインを構築することができるようになります。
ドキュメント
Snowflake ML Modeling APIのSPCS対応 [PuPr]
Snowflake ML Modeling APIはSnowflake上での機械学習をscikit-learn、LightGBM、XGBoostなどのメジャーな機械学習フレームワークで行えるAPIです。
これまでは仮想ウェアハウスで分散処理していましたが、SPCSのコンピューティングクラスタで分散処理できるようになったようです。
ドキュメント
LLM
Serverless Fine-tuning [PuPr]
SQLベースでLlamaなどをファインチューニングできる機能です。
そろそろクラウドやリージョンを限定してGAなのかな?
ドキュメント
Snowflake AI & ML Studio [PuPr]
誰でもアクセスできる、これです。
機械学習やLLMに関するあれこれをノーコードで操作できるUIです。
今後、ファインチューニングなどもここから実行できるようになる…はずです。
AI Observability [PrPr]
LLMについてのオブザーバビリティを実現するための機能です。
一連のチャットのトレースや、関連性・根拠性・有害性の3つのメトリクスを評価するUIがSnowsightに統合されているスクリーンショットが公開されていました。
メトリクスについては内部的に他のLLMを呼んでスコアリングさせていると推測されます。
また、Cortex AI以外の生成AIサービスにも対応しているということで、TruLensを統合した機能なのかな?と考えています。
Cortex Chat API [PrPr]
Cortex AnalystとCortex Searchの両方をラップしたAPIのようです。
おそらく、分析ロジックはCortex Analystが、関連するデータの検索はCortex Searchが担うのかな?Cortex Analystが半構造化データや非構造化データも分析できるようになるんじゃないかなと期待できそうですね!
Cortex Analyst [PuPr]
テーブルに格納されているデータとセマンティックモデル(そのテーブルがどういうデータを格納しているかを定義したファイル)に基づいて、ビジネス的な質問にクエリを実行しながら回答してくれる生成AIサービスです。
APIとして提供されており、StreamlitなどでUIを作成してあげる必要があります。
これについては、Classmethodのさがらさんの記事が詳しいです。
ドキュメント
Cortex Search [GA]
Retrieval-Augmented Generation(RAG)を組むために利用するハイブリッド検索エンジンです。
先日、無事にGAになりました。
ドキュメント
Snowflake Connector for SharePoint [PuPr]
Cortex SearchがSharePointのファイルにアクセスできるようになるコネクタです。Snowflake Marketplaceから入手できます。
対応しているファイルはPDF、ドキュメント、パワポとのことです。
内部的にはCORTEX.PARSE_DOCUMENT
という別の新機能を使っているようです。
ドキュメント
Meta Llama 3.2およびマルチモーダル対応 [PrPr Soon]
Cortex AIでテキストと画像をマルチモーダルで入力できるようになります!
当面は対応する生成AIモデルはLlama 3.2だけになりそうで、ファインチューニングは非対応。
Cortex Playground [PrPr]
ノーコードで複数の生成AIモデルの出力を同時に比較できるUIです。
生成AIモデルを切り替えたりプロンプトエンジニアリングしたりで欲しい出力が得られるか確認しながら、でもランニングコストも気になるからできるだけ小さい生成AIモデルを使いたいな…というシーンは多いので、助かりますね。
Provisioned Throughput [PuPr Soon]
LLMを固定コストで契約することで、時間あたりの入出力トークン数を保証する機能が提供されるとのことです。PuPrはAWSから提供開始。
MetaとMistral AIの生成AIモデルが対象で、1ヵ月単位もしくは3ヵ月単位で契約できるとのこと。
LLMをお得に使うためというより、クラウド側のリソース起因でレートリミットを課されることを防ぐという意味合いが強そうです。
Cortex Parse Document [PuPr]
PDFなどのファイルから文章を抜き出す関数です。RAGを組むために使います。
これまではPython UDFで作成していましたが、CORTEX.PARSE_DOCUMENT
関数というものが用意されています。
レイアウトを考慮した抜き出しができるようです。
ドキュメント
Text Chunking [PuPr]
文章をチャンクという細かい単位に分割する関数です。RAGを組むために使います。
こちらもこれまではPython UDFで作成していましたが、CORTEX.SPLIT_TEXT_RECURSIVE_CHARACTER
関数というものが用意されています。
ドキュメント
Knowledge from Publishers & Industry Experts [PrPr]
ドメイン固有の知識をCortex Searchに与えることができる機能らしいです。
Snowflake Marketplaceからアクセスできるっぽい。ちょっと面白い!
Snowflake Intelligence [Announcement]
今回のハイライト!
LLMに関する機能を全部盛りして、企業のデータ全体からインサイトを引き出すエージェントです。
API呼び出しもサポート予定とのことでリリースされれば色々な活用ができそうですね。
ニュースリリース
Copilot for Listings [PrPr]
Snowflake MarketplaceのデータプロダクトをSnowflake Copilotで分析してもらえるサービスです。
「このデータセットの使用例を教えて」のような質問ができます。
Internal Marketplaceの文脈で紹介されていましたので、もしかしたら通常のSnowflake Marketplaceでは使えない…のかも?使えると嬉しいな。
Secure Model Sharing [PuPr]
Cortex AIでファインチューニングした生成AIモデルを共有できます。
分類結果を特定のラベルで出力するようにファインチューニングした生成AIモデルを社内で共有する…みたいなシーンで使えるかも。
まとまったドキュメントがまだないのですが、こことここに記載があります。
データプラットフォーム
Iceberg Tables [GA]
Iceberg TablesがGAしました!おめでとうございます!
ドキュメント 1
Snowflake Open Catalog [GA]
Apache Polarisのマネージド版であるSnowflake Open CatalogもGAしています。
こちらはカタログという名称なのですが、いわゆるデータカタログではなく、Iceberg Tablesを管理するためのソフトウェア…みたいなイメージです。
ドキュメント
Storage Lifecycle Policies [PrPr]
古いデータを自動的にコールド層に移したり、完全に削除したりするポリシーです。
古いかどうかを判断するために各データ行にタイムスタンプが必要になります。
例えば会社のルールで一定の期間はデータを保管しておかないといけないけどぶっちゃけクエリする機会はほとんどない…みたいなときはコールド層に移すことでコストが節約できそうですし、
例えば会社のルールで90日以上前のデータは完全に破棄しないといけない!みたいなときにも使えそうです。
前者についてはコールド層に移したデータはクエリの検索範囲から完全に外れるので、うっかりフルスキャンが古いデータにまで!ということを防げそうなのが嬉しいですね。
逆にコールド層に移したデータにアクセスしたいときはFROM ARCHIVE OF
というSQL句を使うようです。
Document AI COPY INTO Integration [PuPr]
Document AIとCOPY INTOを組み合わせることで、非構造化データを処理しながらロードすることができるようになりました。
Document AIのモデルさえ準備できていれば、かなりシンプルにデータをロードすることができますね。
頼むっ!日本語に対応してくれっ!
ドキュメント
Hybrid Tables [GA]
長い時を経て、満を持して、とうとうHybrid TablesがGAになりました!
SnowflakeがUnistoreと呼んでいる、HTAP的なワークロードを処理できるテーブルです。
今回のBUILDでもHybrid Tablesの詳細を紹介するセッションがあったのでチェックしてみてください。
ドキュメント 2
Grouped Query History UI [PuPr]
頻繁に実行されるクエリのパフォーマンスを監視・追跡するためのUIです。
クエリハッシュIDによってグループ化されたものをドリルダウンできるので、Grouped Query History UI…だそうです。
前述のHybrid Tablesを本番運用するとき、アプリからは同じようなトランザクショナルクエリが大量に発行されるため一つ一つ確認するのは不可能です…そういうときに、レイテンシーやクエリスループットがどれくらい出ているかを全体的にチェックするのに役に立ちそう。
ドキュメント
Snowpipe Streaming to Apache Iceberg tables [GA]
Snowpipe Streamingのデータ挿入先を通常のテーブルじゃなくてSnowflakeマネージドのIcebergテーブルにできます。
ずっと流れ込んできて総量がすごいことになりそうなデータに使えるかも。
Apache Iceberg tables: new load modes to COPY and Snowpipe [GA]
COPY INTO
でIcebergテーブルにデータをロードできます。
そして、ParquetファイルであればRewriteなしでそのままデータをロードできるそうです。検索したときの性能が大丈夫なのかなーという点は気になりますが、ロードは爆速で終わりそう!
また、前述の通り、Snowpipe Streamlingに対応しているのですが、SnowpipeでもSnowflakeマネージドのIcebergテーブルにデータをロードできるらしい…?
Delta Lake Direct [PuPr]
外部ストレージにあるDelta LakeテーブルからCREATE ICEBERG TABLE
できる機能です。
Delta Lakeテーブルを使っていてSnowflakeとデータ連携したい場合、Delta LakeテーブルからParquetファイルにダンプして、それをSnowflakeから外部テーブルとしてアクセスする…ということをするよりもパフォーマンスが有利ですね。
読み取り専用なので注意。
Catalog Integration for Apache Iceberg REST [GA]
外部のIceberg RESTカタログを統合して、そこに対してSnowflakeから読み取りができます。
BUILDでは、どんなIceberg RESTカタログでもいけるよ!という趣旨のことを説明していました。オープンソースってすごい!
Automatically refresh Apache Iceberg tables [GA Soon]
外部管理のIcebergテーブルのメタデータを自動更新できます。
実は今まではALTER ICEBERG TABLE … REFRESHが必要でした。
ドキュメント
Storage for Apache iceberg tables: Working with Amazon S3-compatible storage [GA]
S3互換のストレージをIcebergテーブルに使える、ということで「もしかしてMinIOやNetAppも使えるのか!?」と思ったんですが、ドキュメント上はAzureやGoogle Cloudの話のようです。
ここと同じ話で、使えば使えるような気はしますが。
ドキュメント
Apache Iceberg tables: Support for Microsoft Fabric OneLake storage [PuPr]
CREATE EXTERNAL STORAGE
を使って、Icebergテーブルのデータ保存先をOneLakeにできるようになったそうです。
今後も相互運用性の向上を期待しちゃいますね!
Apache Iceberg Merge-on-Read [PrPr]
IcebergテーブルにUPDATEやDELETEをするとき、現在はデータファイルを作り直すCopy-on-Write (COW) という方法を採用していますが、変更内容をデータファイルと別々に記録しておいてクエリするときに双方を参照して結果を考えるMerge-on-Read (MOR) という方法がPrPrになったそうです。
性能的には一長一短があるのでそこに選択肢ができたという意味もあるのですが、Apache Icebergを使える他の製品との相互運用性が向上するというのが大きい印象です。
Dynamic Iceberg Tables [GA / PuPr Soon]
データ変換パイプラインに使いやすそう!
SnowflakeマネージドのIcebergテーブルでGA、外部管理のIcebergテーブルでもうすぐPrPrだそうです。
ドキュメント
Snowpark Iceberg Configs: save_as_table [GA]
Snowpark DataFrameを書き出すときにIcebergテーブルとして書き出せるようになっているそうです。知らなかった。
Apache Iceberg tables Zero-Copy Cloning [PuPr]
Icebergテーブルもクローンできるようになっています。
Apache Iceberg tables Replication [PrPr]
Icebergテーブルをクラウド間でレプリケーションできるようになるそうです。
アプリケーションプラットフォーム
Egress Cost Optimizer [GA Soon)
複数のクラウドにデータ転送するときに1カ所分のコストで済むようになるそうです。
ありがたい。
Native Apps with Snowpark Container Services [GA]
つい先日、GAしました。
SPCSが必要なアプリケーションをNative Apps化することができます。
AI/MLをバリバリ使えるアプリをリリースできる!
Outbound Private Link Connectivity [GA/PuPr]
これまではインバウンド接続、つまりパブクラからSnowflakeへの接続(例えばクエリ実行)にPrivate Linkが使えました。
これがアウトバウンド接続、つまりSnowflakeからパブクラへの接続もPrivate Linkにも使えるようになっています。
例えばSnowpark Container ServicesからAmazon BedrockやAmazon S3にアクセスする、などが考えられるかなと思っています。
以下の3つにカテゴリ分けされており、それぞれでリリース状況が違うようです。
- External Access
- External Function
- External Stage
Snowflake CLI Update [GA]
ちょこちょこアップデートされていますが、例えば定義ファイルを書くときにMixin(流用)できるようになっているそうです。
VisualStudio Code Integration [PuPr]
Native App Frameworkを使った開発をVisualStudio Codeで管理しやすくなったらしいです。
Event sharing for Snowflake Native Apps [GA]
コンシューマ側で発生したイベントをプロバイダ側に共有してトレースすることができます。
コンシューマ側とプロバイダ側でそれぞれイベントテーブルを作っておく必要があるので、勝手にデータを吸い上げられた!みたいなことはなさそう。
AI/MLアプリの収益化
Snowflake Native App Framework Integration with Snowpark Container Servicesがリリースされたことで、AI/MLアプリをSnowflake上で収益化することができるようになっています。
具体的な事例はGenesis Computing、Kumo AI、LandingAI、RelationalAIです。それぞれ個性的なサービスを提供しています。
ただ、これ日本国内で収益化できるのかなぁ?
セキュリティとガバナンス
Sensitive Data Auto-Classification [PuPr]
テーブルに機密データが入っていないかを自動的にチェックしてタグ付けしてくれる機能です。
機密データの定義はこちらのドキュメントを確認してください。
日本で使われている情報への対応がかなり少ないのがネック…具体的には2024/11/21時点では電話番号のみですね。
チェックの精度やタグの設計など、まだ難しい点もあるので検証してみてください。
ドキュメント
Bad Record Extraction [PuPr]
オープニングキーノートで紹介されていた機能。
どんなものかなんとなく想像はできるのですが、具体的にどの機能のことか分からなかったので、あとで調べたい…。
Leaked Password Protection [GA]
ダークウェブなどに流出しているパスワードを使っている場合、それを検出して無効化してくれるそうです。
なかなか直してくれないから仕方ない…のか?パスワードにhimawariとかtakahiroとかを使うのは避けましょう。
この機能はデフォルトで有効になる、かつ無効化できません。ACCOUNTADMINがログインできなくなる可能性もあるので、SSO認証ではない環境はACCOUNTADMINを複数人設ける、パスワードが強固なものになっているかを確認する、などの対策を打っておきましょう。
ドキュメント
Trust Center Threat Intelligence scanner package [GA]
Trust CenterにThreat Intelligenceというスキャナーが追加されました。
スキャナーというのはどういうチェックをするかを定義したルールセットです。
Threat IntelligenceはRAS秘密鍵やMFA、ネットワークポリシーの状況をチェックしてアカウントハックのリスクが高いユーザをリストアップしてくれます。
Snowflakeを利用開始するときは特に小まめにチェックした方がよさそうです。
ドキュメント
Trust Center Extensibility [PuPr Soon]
Snowflake Native AppsでTrust Centerを拡張できるようになるとのことです。
おそらく独自のスキャナーを定義できるのかな?
Differential Privacy [GA]
差分プライバシーがGAになりました!
データを集計するときに裏でノイズを加えることで、一つ一つの値を集計結果から推測できなくする(匿名化する)機能です。
こちらの記事で詳しく解説されているのでぜひご一読ください。
ドキュメント
Synthetic Data Generation [PuPr]
合成データ(Synthetic Data)というものを生成する機能がPuPrになりました!
合成データは、本物のデータを参考にした偽物のデータで、一つ一つの値はランダムっぽいんだけど例えば集計したときやJOINしたときは上手くそれっぽくなるように工夫されています。直接的には個人情報を含まないので、アプリの開発・テストや機械学習での活用が期待されています。
こちらの記事ですごく詳しく解説されています。面白いから頑張って読もう!
ドキュメント
Internal Marketplace [GA]
組織内だけで使えるマーケットプレイスがGAになりました!
ある程度の規模の企業になるとOrganizationの下に各部署・各プロジェクトのアカウントがぶら下がる…でもお互いにデータ連携はしたい!という形になるので、そういったところで活用できそうです。
ドキュメント
Organizational Listings Data Access Governance [PuPr Soon]
監査レポートが生成できるらしい。
Contacts [PrPr Soon] / Request for Access [PrPr]
要確認。
テーブルやスキーマに対してメタデータとして担当者の情報を含めたり、権限を要求したりできる機能かな?
もしかしたらInternal MarketplaceやOrganizational Listingsの文脈かも…
Programmatic Access Token (PAT) [PuPr Soon]
Programmatic Access Token (PAT)はプログラム向けに一時的に払い出されるアクセストークンです。
プログラムやサービスがSnowflakeにセキュアにアクセスするための選択肢になりそうですね。
Restricted Caller’s Right (RCR) [PuPr Soon]
Streamlit in SnowflakeはOwner’s rightsで動作しているので、アプリの利用者がデータにアクセスする権限がなくても、アプリの開発者の権限でデータにアクセスすることになります。
…なのですが、これだと色んなデータに適用できるアプリを作るとどの利用者もその色んなデータにアクセスできてしまう、という状況になります。そこで、利用者と開発者の双方がデータにアクセスする権限を持っているときだけデータにアクセスできる…という設定が用意されたということだと思います。
自信がないので、あとでもうちょっと調べたい。
関連ドキュメント
Data Quality Monitoring [GA]
Data Quality MonitoringがGAになりました。
NULLがどれくらい含まれているか、Freshnessがどれくらいか、は確認していきたいですね。
ドキュメント
Universal Search [GA]
Universal SearchがGA。
まあまあ雑に検索してもなんとかなるので個人的によく使っています。
検索対象は今後もちょっとづつ拡充されていきそうな雰囲気。
ドキュメント 3
コンプライアンスバッジ [PrPr]
SOC 2などのサードパーティによる認証がSnowflake Marketplace上に表示されるようになります。
うちの会社では認証を取得した安心安全なデータプロダクトのみ使おう、みたいなことがやりやすくなりますね。
ニュースリリース