Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vertex AI Experimentsの実態 - コードを辿った先にあったもの -
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Tomonori Hayashi / ぴーはや
November 25, 2024
1.3k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vertex AI Experimentsの実態 - コードを辿った先にあったもの -
Tomonori Hayashi / ぴーはや
November 25, 2024
More Decks by Tomonori Hayashi / ぴーはや
See All by Tomonori Hayashi / ぴーはや
BigQuery の Cross-cloud Lakehouse への歩み
phaya72
2
600
ビジネス要望の翻訳が生む アーキテクチャの複雑性とトレードオフ
phaya72
2
540
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
34
22k
OpenTelemetry が拡げる Gemini CLI の可観測性
phaya72
3
3.6k
Pub/Sub vs Cloud Tasks - その違い、わかりますか?-
phaya72
2
490
OpenTelemetry SpanProcessor を Let's カスタマイズ!
phaya72
3
400
非同期処理でも分散トレーシングしたい!- OpenTelemetry × Pub/Sub -
phaya72
2
880
エラーバジェット枯渇の原因 - 偽陽性との戦い -
phaya72
2
210
オブザーバビリティと開発優先度との向き合い方
phaya72
5
1k
Featured
See All Featured
Building Adaptive Systems
keathley
44
3k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
610
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
410
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Designing for humans not robots
tammielis
254
26k
Agile that works and the tools we love
rasmusluckow
331
21k
Ruling the World: When Life Gets Gamed
codingconduct
0
250
Bash Introduction
62gerente
615
210k
Transcript
Vertex AI Experiments の実態 -コードを辿った先にあったもの - Jagu’e’r AI/ML分科会 Meetup#8 -
Tomonori Hayashi 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
Node-AI の紹介 • ノーコードで AI モデルを作成できる WEB アプリケーション • カードを直感的につなげるだけで
時系列データの前処理から AI モデルの学習・評価までの パイプラインを作成・実行 できる • 技術スタック ◦ TypeScript + React / Next ◦ Python + Django ◦ C# + ASP.NET Core + SignalR ◦ Kubernetes ◦ Google Cloud ◦ Scikit-learn / Tensorflow / Pytorch 3
本日お話しすること • MLFLow を Vertex AI Experiments に置き換える時に生じた課題の一つ • Vertex
AI Experiments の裏がどうなっているか 本日お話ししないこと • MLFlow を Vertex AI Experiments に置き換えた検証の全貌 • Vertex AI Experiments を操作する python-aiplatform ライブラリのコードの詳細な読み解き ◦ Zenn にまとめています
5 アプリの技術的負債(になりつつあるところ) 実験管理機能の一部を利用していた MLFlow 機械学習周りのタスクを担うコンポーネントの中で学習時の 学習状況を記録する API を利用 開発当初は問題なく利用できていたが、運用を続ける中でユーザー数や 学習規模の増大による課題が顕著となった
パフォーマンス メンテナンス R/W が遅くマシンパワーで なんとかもたせている 定期的に脆弱性が発見され お守りもそこそこしんどい
6 アプリの技術的負債(になりつつあるところ) 実験管理機能の一部を利用していた MLFlow 機械学習周りのタスクを担うコンポーネントの中で学習時の 学習状況を記録する API を利用 開発当初は問題なく利用できていたが、運用を続ける中でユーザー数や 学習規模の増大による課題が顕著となった
パフォーマンス メンテナンス R/W が遅くマシンパワーで なんとかもたせている 定期的に脆弱性が発見され お守りもそこそこしんどい アプローチの 1 つとして Vertex AI Experiments の検討を開始
7 検討の中で見えてきた課題 MLFlow の互換性の検証 Vertex AI Experiments は MLFlow と互換性があり、どの程度現状のコードを置き換えられるのかを中心に検証した
MLFlow の API で利用していたのは主に下記の 3 点(右記してあるのは MLFlow のライブラリ利用時の関数) これらがそのまま置き換えられると労力少なく検討進むため大きなポイント • 学習毎の評価精度を記録する : log_metrics() • 学習毎のパラメーターを記録する: log_params() • 学習毎のメタデータを記録する : set_tags()
8 検討の中で見えてきた課題 MLFlow の互換性の検証 Vertex AI Experiments は MLFlow と互換性があり、どの程度現状のコードを置き換えられるのかを中心に検証した
MLFlow の API で利用していたのは主に下記の 3 点(右記してあるのは MLFlow のライブラリ利用時の関数) これらがそのまま置き換えられると労力少なく検討進むため大きなポイント • 学習毎の評価精度を記録する : log_metrics() • 学習毎のパラメーターを記録する: log_params() • 学習毎のメタデータを記録する : set_tags() メタデータを記録するための set_tags のみ実装されていなかった
そんなに甘くなかった・・ set_tags がないと何が困るか 特定の学習タイミングの記録を検索したい場合に その検索対象となるような情報( = メタデータ)を記録できない
10 課題に対するアプローチ Python ライブラリである aiplatform を読み解く 最初に思いついた選択肢としてはメタデータを学習時のパラメーターと捉えて log_params() で代用する ➡
正直できないわけではなかったが微妙に気持ち悪い感じがした、やはりパラメーターではない・・ set_tags() の実装がないことには 何か意味があるのでは?と考えて Vertex AI Experiments を扱う際に 利用するライブラリを読み解くことにした 引用:https://github.com/googleapis/python-aiplatform
11 課題に対するアプローチ Python ライブラリである aiplatform を読み解く 最初に思いついた選択肢としてはメタデータを学習時のパラメーターと捉えて log_params() で代用する ➡
正直できないわけではなかったが微妙に気持ち悪い感じがした、やはりパラメーターではない・・ set_tags() の実装がないことには 何か意味があるのでは?と考えて Vertex AI Experiments を扱う際に 利用するライブラリを読み解くことにした 読み解いてみてわかったことは・・・ 引用:https://github.com/googleapis/python-aiplatform
Vertex AI Experiments は Vertex ML Metadata のラッパーと捉えられること
13 Vertex ML Metadata とは? Vertex AI で利用されるメタデータ全般を扱う 引用:https://cloud.google.com/vertex-ai/docs/ml-metadata/introduction?hl=ja
14 Vertex ML Metadata とは? 重要な要素であるコンテキスト 例えば、右図のような ML ワークフローをメタデータで表現できる •
Execution:ML ワークフローのステップ • Artifact:データセットやモデルといった ML ワークフローで 生成・使用される個別のエンティティ • Context:Artifact と Execution を単一のクエリ可能な タイプ付きカテゴリにグループ化 引用:https://cloud.google.com/vertex-ai/docs/ml-metadata/introduction?hl=ja
15 Vertex AI Experiments との関係性 実態は Context オブジェクト どのようにコードを辿っていったかは Zenn
に記載 辿った先にわかったのは右図のように Vertex AI Experiments の Experiment オブジェクト と ExperimentRun オブジェクト は Vertex ML Metadata の Context オブジェクト の中でも SchemaTitle が Experiment と ExperimentRun であった
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 の 値として格納されていた
17 課題だった set_tags() の解決策 Context オブジェクト の metadata フィールド Context
オブジェクト には update(metadata) を持っており、独自のメタデータを付与することができる ➡ メタデータによる検索関数もあることから Vertex ML Metadata の Context オブジェクトを操作する ことで、 気持ちよくメタデータを付与する ことができ解決するに至った
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 としてのアーキテクチャとしてのあり方とサービスとしての見せ方を一例を知れた まとめと学び
CREDITS: This presentation template was created by Slidesgo, and includes
icons by Flaticon, and infographics & images by Freepik Thanks! 19 @pHaya72 @t_hayashi