Share
Embed
簡単に始めるSnowflakeの機械学習
DevelopersIO 2024のDay8で発表した内容となります。
- https://classmethod.jp/m/odyssey/
Nayuta S.
July 23, 2024
Transcript
50 slides
-
本セッションの⽬的 • Snowflakeでは、ますます機械学習向けの機能が充実してきている。 ◦ Snowpark MLでは機械学習のロジックを、従来のPythonによる開発と同じように実装しつつ、 計算資源はSnowflakeにオフロードできる。 ◦ Snowflake AI
and MLでは、SQLをインターフェースに、Snowflakeに格納したデータに対し て、LLM・機械学習機能で処理を実⾏できる。 5 • 以下を通して、実際に使い始める準備の機会にしたい ◦ 全体像を把握する(各機能について詳細な話はしない) ◦ 推しの機能について使い⼼地をご紹介する ◦ この1年ほどの経緯を踏まえて、 最新の機能がどうなっているのか分かるようにする。 -
⽬次 • Snowflakeについて • 機械学習について • Snowflakeの機械学習機能 • 使い⼼地のご紹介 ◦
Snowpark ML ◦ ML Functions(時系列予測・要因分析) • 運⽤や結果の活⽤のご紹介 6 -
スピーカー紹介 7 ⽒名 鈴⽊ 那由太(スズキ ナユタ) 所属 データ事業本部 インテグレーション部 機械学習チーム
受賞 2024 Japan AWS Top Engineers(Analytics) -
Snowflakeとは 9 • AIデータクラウド(SaaS) • 独⾃の SQLクエリエンジン・アーキテクチャを採⽤することで、従来型のDWHでは対応 できなかったパフォーマンス最⼤化・シンプルな操作・無制限の同時処理を実現している。 • サービスのコンポーネントすべてがパブリッククラウドインフラストラクチャで実⾏される。
◦ AWS ◦ Google ◦ Azure • Snowsight(ウェブインターフェイス)・Pythonなどのプログラム・SQLクライアントなどから アクセスできる。 -
Snowflakeのメリット 11 • コンピュートリソースのスケールアウト・スケールアップが⾮常に簡単で管理が楽 • SaaSのため初期構築が簡単 • StreamlitやWorksheetなど分析のためのインターフェースも充実している • ネイティブのAI・機械学習機能により気軽により発展的な分析を実施できる
• 各種パブリッククラウドとの連携も⼿厚い ◦ 例えば、AWSのS3バケットに対して直接ロード・アンロードができるなど -
Snowflakeの機械学習機能 12 Snowflakeにはネイティブで格納したデータを機械学習で利⽤する機能が搭載されている。 • Snowpark ML︓Pythonによる機械学習モデル構築 ◦ ML Modeling ◦
Feature Store ◦ Model Registry • Snowflake AI and ML ※分析に関するところだけ記載 ◦ Cortex LLM Functions︓LLMによるテキスト処理 ◦ ML Functions︓機械学習による分析・推論 ◦ Document AI︓LLMによるドキュメント分析 2023/12にGA 2025/5にGA(既にPuPrのリージョン) 2023/12にGA 2024/5にGA 今年6⽉のData Cloud Summit 2024では、 Cortex SearchやFine-tuningなど、 新しい機能も発表︕ -
機械学習とは 14 •LLMなどを利⽤し、幅広い⼊⼒に対して、⼈間に近い出⼒をする機械学習アルゴリズムのこと。 •SnowflakeのSnowflake AI and MLではLLMを利⽤した機能も搭載されている。 ⼈⼯知能 (Artificial Intelligence,
AI) 機械学習 (Machine Learning, ML) •LLMよりも⼩さなモデルを利⽤し、0から訓練しても⼀般に現実的な時間で利⽤できる、 特定のタスクに特化した機械学習アルゴリズムのこと。 •Snowpark MLやSnowflake AI and MLのML Functionsではこれらアルゴリズムを利⽤できる。 LLMの登場で、多くの⼈がイメージする ”⼈⼯知能(AI)” が実現しつつある。 今回の発表では、以下の使い分けで説明する。 -
MLによる解決のアプローチ 16 機械学習を使って解決したい場合、以下の選択肢がある。 • 既存のツール・サービスを活⽤ ◦既存のAI・機械学習系のクラウドサービスやサードパーティ製品を活⽤ ◦Snowflake AI and MLの組み込み機能の利⽤など
• ⼀般的な⼿法(アルゴリズム)を使⽤ ◦AI・機械学習⽤のフレームワークやライブラリを活⽤して有名な⼿法を適⽤ ◦Snowpark MLのAPIの利⽤など • 独⾃⼿法(アルゴリズム)の開発 ◦既存の⼿法を応⽤したり、独⾃⼿法を開発する マネージド性⾼ カスタム性⾼ -
データ種別と適⽤領域 17 データ種別 • テーブルデータ(トランザクションデータなど) ◦ 分類、予測、異常検知、レコメンデーション • テキスト(⾃然⾔語) ◦
ドキュメント分類、キーワード抽出、 回答⽣成など • 画像・動画 ◦ 画像分類、物体検出 など Transaction Text Image Movie 適⽤領域 • 流通・⼩売 ◦ 需要・売上予測、在庫予測、 ⾃動発注、レコメンデーション など • 製造 ◦ 異常検知、故障予測、予知保全 など • ⾦融 ◦ 不正検出、与信判定 など • エンターテイメント・ゲーム ◦ ⾒込み顧客判定、離反予測、 不正検出、レコメンデーション など 必要なデータ種別と適⽤領域から、実現したいタスクに対してどんな準備が必要なのか考える。 -
Snowflakeの機械学習機能(再掲) 20 Snowflakeにはネイティブで格納したデータを機械学習で利⽤する機能が搭載されています。 • Snowpark ML︓Pythonによる機械学習モデル構築 ◦ ML Modeling ◦
Feature Store ◦ Model Registry • Snowflake AI and ML ※分析に関するところだけ記載 ◦ Cortex LLM Functions︓LLMによるテキスト処理 ◦ ML Functions︓機械学習による分析・推論 ◦ Document AI︓LLMによるドキュメント分析 -
Snowpark ML 21 •Snowflake内で完結するML ワークフローを実現するための、Pythonライブラリとそのインフラストラクチャ •前処理、特徴量エンジニアリング、モデルトレーニングに使い慣れたPythonフレームワークを使⽤できる •ML Modeling・Feature Store・Model Registryの3つからなる
※ https://docs.snowflake.com/developer-guide/snowpark-ml/overviewより2024/0720に引⽤ -
Cortex LLM Functions 22 •LLMを使ったFunctionsが利⽤可能 ◦COMPLETE︓選択した⾔語モデルを使⽤して回答を⽣成する ◦EMBED_TEXT︓英語の⼊⼒テキストをエンベディングする ◦EXTRACT_ANSWER︓与えられた質問に対する答えをテキストから抽出する ◦SENTIMENT︓英語の⼊⼒テキストの感情を-1〜1のスコアで返す ◦TRANSLATE︓指定したソース⾔語からターゲット⾔語へテキストを翻訳する
◦SUMMARIZE︓英語の⼊⼒テキストの要約を返す •AWS US Eastなど⼀部リージョンで利⽤可能 •token(⽂字数)に応じてコストがかかる •Cortex Fine-tuning︓モデルのFine Tuning ◦アメリカのリージョンだけでパブリックプレビュー ※ https://dev.classmethod.jp/articles/snowflake-try-cortex-llm-functions/ より引⽤ -
ML Functions 23 •機械学習を使ったFunctionsが利⽤可能 ◦Anomaly Detection( 異常検知) ◦Forecasting(時系列予測) ◦Classification(分類) ※パブリックプレビュー
◦Contribution Explorer( 要因分析 ) ※パブリックプレビュー -
Document AI 24 •Snowflake独⾃の⼤規模⾔語モデル (LLM) であるArctic-TILT を使⽤してドキュメントからデータを抽出する機能 •⼿書きのテキストだけでなく、ロゴやチェックマークなども読み取り情報を抽出することが可能 •ウェアハウスとストレージコストに加え、AI Services
computeの費⽤が発⽣ •英語のドキュメントの処理をサポート ※ https://dev.classmethod.jp/articles/snowflake-try-document-ai-tutorial/ より引⽤ -
各機能でなにができるのか 25 主要なタスク ビジネス課題例 機能 回帰 発電量の推定など Snowpark ML 分類
分類の⾃動化・離反予測など Snowpark ML, ML Functions 時系列予測 未来の売上の推定など ML Functions 異常検知 予知保全・不正検出など ML Functions 感情分析 ユーザーの感情分析 Cortex LLM Functions 要因分析 重要な要因の特定 ML Functions ドキュメントの分析 領収書処理など Document AI -
Snowflakeの機械学習機能 27 本⽇は 箇所を中⼼にご紹介する。 • Snowpark ML • Snowflake AI
and ML ◦ Cortex LLM Functions ◦ ML Functions ◦ Document AI -
データの流れ Snowpark DataFrame Snowpark ML Modeling Snowpark ML Model Registry
Snowpark MLの処理の流れ 29 ⽣データ 前処理 モデル 訓練 推論 -
Snowpark ML Modeling 30 •Scikit-learn互換(有名な機械学習ライブラリ互換)の APIにより、PythonからSnowflakeのリソースを使い、 機械学習モデルを構築・利⽤できる。 •データはSnowpark Pythonのデータフレームが主な対象。 実⾏イメージ
※ https://dev.classmethod.jp/articles/try-quickstart-snowpark-ml-modeling/ より -
Model Registry 32 •Pythonから利⽤する。Snowpark MLで訓練したモデルをバージョン情報やメトリクスを含めて登録できる。 •パイプラインごと登録できる点も⼤きなポイントとなる。 •推論時に取り出してSnowpark DataFrameに対して推論を実⾏する。 •SQLから呼び出すこともできる。 実⾏イメージ
※ https://dev.classmethod.jp/articles/try-snowparkml-model-registry-preview/ より -
Snowpark MLのメリット 36 •データが格納されているSnowflake上のリソースを使い、シームレスに機械学習モデルの構築・運⽤が できる。 •データ前処理・モデルのトレーニング・推論にSnowflakeのウェアハウスを利⽤でき、 ⾼いスケーリングが期待できる。 •Snowflakeだけでモデルの開発ができ(Notebook)、機械学習パイプライン全体のバージョン管理が できる(Model Registry)。
•訓練済みの機械学習パイプラインをSQLから簡単に呼び出せるため、定期バッチ化しやすく、 データエンジニアとの分担もしやすい。 -
ML Functions 39 •機械学習を使ったFunctionsが利⽤可能 ◦Anomaly Detection( 異常検知) ◦Forecasting(時系列予測) ◦Classification(分類) ※パブリックプレビュー
◦Contribution Explorer( 要因分析 ) ※パブリックプレビュー -
要因分析 41 • 時系列データに対して適⽤できる。 • 過去データとテストしたい期間のデータを⼊⼒し、各セグメントごとに期待される値と実際の値を⽐較し、 その⽐(RELATIVE_CHANGE)や差(SURPRISE)により、どのセグメントが期待と実際が乖離していたか評価することで、 起きている事象の要因を分析する。 ※ 説明に必要な出⼒に絞って表⽰した結果
※※ Contribution Explorerの例を実施した際の結果 (https://docs.snowflake.com/en/user-guide/ml-functions/contribution-explorer) 実⾏イメージ -
ML Functionsについて 43 <よいところ> •SQLから簡単に機械学習による分析・予測が実⾏できる。 •機械学習に関する知識は不要。 <知っておきたいところ> • アルゴリズムの詳細はSnowflakeが公開している情報に限られるため、評価は実際に試してみてになる。 •
性能が出ない場合は、カスタマイズできないため、データ側をエンリッチすることとなる。 • 現時点でモデル管理はないため、定期的にモデルを更新する場合は、モデル名に⽇付を⼊れるなど運⽤側 で⼯夫が必要。 -
定期実⾏ 45 • タスクでストアドプロシージャを定期実⾏できる。タスク間の前後関係も定義できる。 • Python・SQLともに対応しており、ML機能の定期実⾏には⼗分。 • より複雑な依存関係がある場合などは、AirflowやDagsterなど別のオーケストレーターと併⽤することになる。 実⾏イメージ ※
https://dev.classmethod.jp/articles/snowpark-ml-stored-procedure-task/ より -
まとめ 48 • SnowflakeのML機能で、幅広い機械学習タスクに対応することができる。 • 従来の機械学習向けに、⼤きく分けて2つのアプローチがある ◦ PythonによるSnowpark ML ◦
SQLによるML Functions • タスクによる定期実⾏ができ、 Snowpark MLのモデルはModel Registryで管理できる。 • 推論結果はテーブルに保存することで、ダッシュボードやstreamlitでシームレスに利⽤ できる。