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
MLプロジェクトのリリースフローを考える
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Takashi Suzuki
February 01, 2022
Technology
24
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
MLプロジェクトのリリースフローを考える
2022/02に行われた社内 AI技術勉強会の発表資料
Takashi Suzuki
February 01, 2022
More Decks by Takashi Suzuki
See All by Takashi Suzuki
到着予想時間サービスの特徴量のニアリアルタイム化
t24kc
0
200
Kubernetes超入門
t24kc
0
240
AI予約サービスのMLOps事例紹介
t24kc
0
44
GOの機械学習システムを支えるMLOps事例紹介
t24kc
0
160
Optuna on Kubeflow Pipeline 分散ハイパラチューニング
t24kc
0
56
GOの実験環境について
t24kc
0
43
MOVの機械学習システムを支えるMLOps実践
t24kc
0
48
タクシー×AIを支えるKubernetesとAIデータパイプラインの信頼性の取り組みについて
t24kc
0
56
MOV お客さま探索ナビの GCP ML開発フローについて
t24kc
0
29
Other Decks in Technology
See All in Technology
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
770
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
1
240
noUncheckedIndexedAccess、3時間、1万円。 / noUncheckedIndexedAccess, 3 Hours, 10,000 JPY.
kaonavi
1
340
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
8.9k
あなたの AI ワークスペースに、 専門コーダーを連れてくる - Amazon Quick Desktop 最新情報
kawaji_scratch
1
110
MCP Appsを作ってみよう
iwamot
PRO
4
160
ポケモンの型をTypeScriptの型システムで表現してみた
subroh0508
0
350
社内 AI エージェント Synapse と セマンティックレイヤーの育て方
hiroakis
0
440
Chart.js が簡単に使えるようになっていたので OGP 画像生成に使った話
kamekyame
0
170
AIにフローを作らせようとして挫折した話
hamatsutaichi
0
230
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
1
680
Platform engineering for developers, architects & the rest of us (AI agents)
danielbryantuk
0
190
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
300
Game over? The fight for quality and originality in the time of robots
wayneb77
1
190
Side Projects
sachag
455
43k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
Facilitating Awesome Meetings
lara
57
6.9k
sira's awesome portfolio website redesign presentation
elsirapls
0
270
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
エンジニアに許された特別な時間の終わり
watany
107
250k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Ruling the World: When Life Gets Gamed
codingconduct
0
250
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Transcript
Mobility Technologies Co., Ltd. MLエンジニアリンググループ 鈴木 隆史 MLプロジェクトのリリースフローを考える
Mobility Technologies Co., Ltd. 自己紹介 2 鈴木 隆史 | Takashi
Suzuki 開発本部 AI技術開発部 MLエンジニアリンググループ • 2019年DeNA入社 機械学習の実験基盤やパイプラインの設計開発を担当 • 2020年Mobility Technologies転籍
Mobility Technologies Co., Ltd. MLプロジェクトのリリースフローの話 • どんな課題があるのか • 技術コンポーネント例 •
活用方法 今日話すこと 3
Mobility Technologies Co., Ltd. MLリリースフローの課題 01 4
Mobility Technologies Co., Ltd. プロジェクトごとのドメイン知識が必要 • 複雑な依存関係のためリリース作業が属人化しがち • 各プロジェクトで独自リリース手順が存在する •
A/Bテストができたりできなかったり MLプロジェクトのリリースフローの課題 5
Mobility Technologies Co., Ltd. • データパイプライン:生データ作成、整形データ作成 • 学習パイプライン:特徴量作成、モデル学習、(統計値作成)(数日おき) • バッチ推論パイプライン:ML予測値作成(数分おき)
• オンライン推論サーバ:ML予測値作成(リアルタイム) 一般的なMLプロジェクト 6
Mobility Technologies Co., Ltd. リリース時に現行推論パイプラインを停止させない • 学習・推論時でコンテナ、特徴量、モデルが共有されていると、学習パイプラ インだけ更新したつもりが推論で失敗することがある • 推論パイプラインは上記データがないと動かない
考慮すべき項目(1/2) 7
Mobility Technologies Co., Ltd. リリース時の手動作業をなくす • 特に特徴量の依存関係が複雑になりやすく手動更新が発生することがある ため、すべてワークフロー側に処理を寄せる • 開発者はリリースバージョンを更新してmainブランチにマージすれば、コンテ
ナ、ワークフロー、特徴量、モデルなど全てのリソースが自動更新されるよう にする 考慮すべき項目(2/2) 8
Mobility Technologies Co., Ltd. 技術コンポーネント例 02 9
Mobility Technologies Co., Ltd. システム構成例 10
Mobility Technologies Co., Ltd. リリース環境分離のためGitフローにのせCI/CDで自動化 • 作業ブランチ:feature, fix, などのCI •
developブランチ:開発環境へCD • mainブランチ:本番環境へCD リリースフローの自動化(1/2) 11
Mobility Technologies Co., Ltd. CDで自動デプロイするコンポーネント • コンテナイメージ:ワークフロー実行時に利用 • 学習Adhoc Job:学習パイプラインをAdhoc実行
推論に必要な特徴量、モデルを事前作成 • ワークフロー:Job完了後に学習・推論パイプラインを登録 リリースフローの自動化(2/2) 12 学習Adhoc Jobで事前作成
Mobility Technologies Co., Ltd. コードの管理 • GitHubとContainer Registryで管理 • 追いやすいようにリリースバージョンはコード側で管理
◦ そこからgit tagやreleases、コンテナimage tagを作成 ◦ 例)gcr.io/project/container_image:version • CDで自動でビルド、プッシュされる リソースのバージョン管理(1/6) 13
Mobility Technologies Co., Ltd. ワークフローの管理 • ワークフローエンジン側でバージョン管理 ◦ Kubeflow Pipelinesだとバージョン管理の仕組みがあるので、そこで管
理 ◦ Airflowだとまだバージョン管理の仕組みがないので、DAG_IDにsuffix追 記して管理 • CDで自動で学習Adhoc Job実行、DAG登録される • ワークフローが並列実行できるとA/Bテストが実施しやすい ◦ 例)パイプライン1をAユーザクラスタ、パイプライン2をBユーザクラスタ リソースのバージョン管理(2/6) 14
Mobility Technologies Co., Ltd. ワークフローの管理 • Kubeflow Pipelinesの例 リソースのバージョン管理(3/6) 15
Pipeline Versions Recurring Runs
Mobility Technologies Co., Ltd. 特徴量の管理 • BigQueryなどのデータセットで管理 ◦ カラム変更が想定される場合は、バージョンごとにデータセットやテーブ ルを分割して管理
◦ カラム変更がない場合は、バージョンカラムをもたせて管理 • 学習Adhoc Job実行で自動で作成される • 毎バージョンごとに特徴量を作り直すコストがかかる場合は、特徴量独自に バージョン情報をもたせる リソースのバージョン管理(4/6) 16
Mobility Technologies Co., Ltd. 学習済みモデルの管理 • Cloud Storageで管理 ◦ 例)gs://project_bucket/models/version/name.pkl
◦ コードは不変だが学習モデルが継続的に更新される場合に有効 • コンテナイメージに内蔵して管理 ◦ 例)学習用と推論用のコンテナイメージを分離して管理 • 学習Adhoc Job実行で自動で作成される リソースのバージョン管理(5/6) 17
Mobility Technologies Co., Ltd. プロダクトに提供する予測データの管理 • バッチ推論の場合 ◦ ワークフローでBigQueryやCloud Storageにバージョン付き予測データを
出力 • オンライン推論の場合 ◦ GKEで複数DeploymentとIngress ruleを設定して、バージョンごとに別エ ンドポイントを提供 • バージョンごとに予測データが分離されているとA/Bテストが実施しやすい リソースのバージョン管理(6/6) 18
Mobility Technologies Co., Ltd. システム構成例(再掲) 19
Mobility Technologies Co., Ltd. まとめ 03 20
Mobility Technologies Co., Ltd. リリースフローの自動化 • 特徴量やモデルなどの依存データ更新を全てワークフロー処理に寄せる • 開発者はリリースバージョンを更新してmainブランチにマージすれば、CI/CD でコンテナ、ワークフロー、特徴量、モデルなど全てのリソースを自動更新す
るようにする • リリース作業の属人化をなくせる まとめ(1/2) 21
Mobility Technologies Co., Ltd. リソースのバージョン管理 • 現行の推論パイプラインを停止させないために、コンテナ、ワークフロー、特 徴量、モデルにバージョン管理を導入 • 並列でパイプラインを提供することで、ブルーグリーンデプロイメントやA/Bテ
ストの導入がしやすくなる まとめ(2/2) 22
Mobility Technologies Co., Ltd. Appendix 04 23
Mobility Technologies Co., Ltd. コードバージョンの一元管理 • ライブラリが増えてくるとバージョンが複数ファイルに跨ることがある • 更新忘れがあるため一元管理、または機能を寄せると良い Appendix(1/2)
24 pyproject.toml invoke.yaml
Mobility Technologies Co., Ltd. コードバージョンの一元管理 • poetry(パッケージ管理)、invoke(タスクランナー)、hydra(パラメータ管理)の例 Appendix(2/2) 25 pyproject.toml
invoke.yaml
confidential 文章·画像等の内容の無断転載及び複製等の行為はご遠慮ください。 Mobility Technologies Co., Ltd. 26