Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Vertex AI Experimentsの実態 - コードを辿った先にあったもの -

Tomonori Hayashi
November 25, 2024
280

Vertex AI Experimentsの実態 - コードを辿った先にあったもの -

Tomonori Hayashi

November 25, 2024
Tweet

Transcript

  1. Tomonori Hayashi • NTT コミュニケーションズ イノベーションセンター所属 ◦ ノーコード時系列分析ツール「 Node-AI」の開発/運用 ◦

    ソフトウェアエンジニア ▪ Front:TypeScript - React/Next.js ▪ Infra:Google Cloud • Google Cloud Partner Top Engineer 2024 - 2025 • Google Cloud Partner Tech Blog Challenge 2024 個人カテゴリ 優秀ブログ • Google Cloud All Certifications • コミュニティ ◦ Jagu’e’r デジクラ人材育成分科会 ◦ Jagu’e’r O11y-SRE 分科会 2 @pHaya72 @t_hayashi
  2. Node-AI の紹介 • ノーコードで AI モデルを作成できる WEB アプリケーション • カードを直感的につなげるだけで

    時系列データの前処理から AI モデルの学習・評価までの パイプラインを作成・実行 できる • 技術スタック ◦ TypeScript + React / Next ◦ Python + Django ◦ C# + ASP.NET Core + SignalR ◦ Kubernetes ◦ Google Cloud ◦ Scikit-learn / Tensorflow / Pytorch 3
  3. 本日お話しすること • MLFLow を Vertex AI Experiments に置き換える時に生じた課題の一つ • Vertex

    AI Experiments の裏がどうなっているか 本日お話ししないこと • MLFlow を Vertex AI Experiments に置き換えた検証の全貌 • Vertex AI Experiments を操作する python-aiplatform ライブラリのコードの詳細な読み解き ◦ Zenn にまとめています
  4. 7 検討の中で見えてきた課題 MLFlow の互換性の検証 Vertex AI Experiments は MLFlow と互換性があり、どの程度現状のコードを置き換えられるのかを中心に検証した

    MLFlow の API で利用していたのは主に下記の 3 点(右記してあるのは MLFlow のライブラリ利用時の関数) これらがそのまま置き換えられると労力少なく検討進むため大きなポイント • 学習毎の評価精度を記録する  : log_metrics() • 学習毎のパラメーターを記録する: log_params() • 学習毎のメタデータを記録する : set_tags()
  5. 8 検討の中で見えてきた課題 MLFlow の互換性の検証 Vertex AI Experiments は MLFlow と互換性があり、どの程度現状のコードを置き換えられるのかを中心に検証した

    MLFlow の API で利用していたのは主に下記の 3 点(右記してあるのは MLFlow のライブラリ利用時の関数) これらがそのまま置き換えられると労力少なく検討進むため大きなポイント • 学習毎の評価精度を記録する  : log_metrics() • 学習毎のパラメーターを記録する: log_params() • 学習毎のメタデータを記録する : set_tags() メタデータを記録するための set_tags のみ実装されていなかった
  6. 10 課題に対するアプローチ Python ライブラリである aiplatform を読み解く 最初に思いついた選択肢としてはメタデータを学習時のパラメーターと捉えて log_params() で代用する ➡

    正直できないわけではなかったが微妙に気持ち悪い感じがした、やはりパラメーターではない・・ set_tags() の実装がないことには 何か意味があるのでは?と考えて Vertex AI Experiments を扱う際に 利用するライブラリを読み解くことにした 引用:https://github.com/googleapis/python-aiplatform
  7. 11 課題に対するアプローチ Python ライブラリである aiplatform を読み解く 最初に思いついた選択肢としてはメタデータを学習時のパラメーターと捉えて log_params() で代用する ➡

    正直できないわけではなかったが微妙に気持ち悪い感じがした、やはりパラメーターではない・・ set_tags() の実装がないことには 何か意味があるのでは?と考えて Vertex AI Experiments を扱う際に 利用するライブラリを読み解くことにした 読み解いてみてわかったことは・・・ 引用:https://github.com/googleapis/python-aiplatform
  8. 14 Vertex ML Metadata とは? 重要な要素であるコンテキスト 例えば、右図のような ML ワークフローをメタデータで表現できる •

    Execution:ML ワークフローのステップ • Artifact:データセットやモデルといった ML ワークフローで     生成・使用される個別のエンティティ • Context:Artifact と Execution を単一のクエリ可能な     タイプ付きカテゴリにグループ化 引用:https://cloud.google.com/vertex-ai/docs/ml-metadata/introduction?hl=ja
  9. 15 Vertex AI Experiments との関係性 実態は Context オブジェクト どのようにコードを辿っていったかは Zenn

    に記載 辿った先にわかったのは右図のように Vertex AI Experiments の Experiment オブジェクト と ExperimentRun オブジェクト は Vertex ML Metadata の Context オブジェクト の中でも SchemaTitle が Experiment と ExperimentRun であった
  10. 16 Vertex AI Experiments との関係性 実態は Context オブジェクト どのようにコードを辿っていったかは Zenn

    に記載 辿った先にわかったのは右図のように Vertex AI Experiments の Experiment オブジェクトと ExperimentRun オブジェクトは Vertex ML Metadata の Context オブジェクトの中でも SchemaTitle が Experiment と ExperimentRun であった さらに Context オブジェクト には metadata フィールド が存在し log_metrics() と log_params() の実行結果は metadata フィールドの _METRICSKEY と _PARAMS_KEY の 値として格納されていた
  11. 17 課題だった set_tags() の解決策 Context オブジェクト の metadata フィールド Context

    オブジェクト には update(metadata) を持っており、独自のメタデータを付与することができる ➡ メタデータによる検索関数もあることから Vertex ML Metadata の Context オブジェクトを操作する ことで、  気持ちよくメタデータを付与する ことができ解決するに至った
  12. Vertex AI Experiment と Vertex ML Metadata の関係性 • python-aiplatform

    ライブラリを読み解くことで Vertex AI Experiments の Experiment / ExperimentRun オ ブジェクトは Vertex ML Metadata の Context オブジェクトであることがわかった • 互換性の観点では set_tags() が実装されていなかったが、 Context オブジェクトのメタデータを操作すること により置き換えることを実現できた 今回の取り組みを通しての学び • log_params() でもできたところに気持ち悪さを感じてコード読み解き気持ち良い実装にできた ➡ 目的を達成するための手段を最適化するきっかけとして「気持ち悪さ」を感じるの重要性 • Vertex ML Metadata の実験管理観点を Vertex AI Experiments として表現されていることがわかった ➡ Google Cloud としてのアーキテクチャとしてのあり方とサービスとしての見せ方を一例を知れた まとめと学び
  13. CREDITS: This presentation template was created by Slidesgo, and includes

    icons by Flaticon, and infographics & images by Freepik Thanks! 19 @pHaya72 @t_hayashi