Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
CADDi AI LabにおけるマネージドなMLOps
vaaaaanquish
June 15, 2022
Technology
2
1.4k
CADDi AI LabにおけるマネージドなMLOps
第20回 MLOps 勉強会
https://mlops.connpass.com/event/248331/
登壇資料です
vaaaaanquish
June 15, 2022
Tweet
Share
More Decks by vaaaaanquish
See All by vaaaaanquish
RustとCADDi AI LabとML
vaaaaanquish
0
18
機械学習OSSの変遷と未来
vaaaaanquish
1
1.6k
文字列(ダジャレを言いシャレ)
vaaaaanquish
0
11k
xonshとかいうshellの話
vaaaaanquish
1
840
gokartの運用と課題について
vaaaaanquish
4
10k
【ML@Loft #6】ゼロベースからの論文レコメンドシステムの構築
vaaaaanquish
5
6.8k
【PyCon2019】 Python製シェルXonshの紹介
vaaaaanquish
6
7k
宇宙誕生の歴史と人類が赤ポチという到達点に至るまで
vaaaaanquish
0
1.5k
機械学習エンジニアの実情とキャリアの話
vaaaaanquish
10
6.7k
Other Decks in Technology
See All in Technology
覗いてみよう!現場のスクラムチーム
tkredman
0
940
UWBを使ってみた
norioikedo
0
380
誰が正解を知っているのか / Who knows the right answer
takaking22
1
220
PUTとPOSTどっち使う?
hankehly
0
170
セキュリティ 開運研修2022 / security 2022
cybozuinsideout
PRO
2
3.2k
多様な成熟度のデータ活用を総合支援するKADOKAWA Connectedのデータ組織について
kadokawaconnected
PRO
0
180
さいきんのRaspberry Pi。 / osc22do-rpi
akkiesoft
4
4.5k
Data in Google I/O - IO Extended GDG Seoul
kennethanceyer
0
150
HoloLens2とMetaQuest2どちらも動くWebXRアプリをBabylon.jsで作る
iwaken71
0
160
Amazon ECRに無駄なコストがかかっていた
iwamot
0
150
20220622_FinJAWS_あのときにAWSがあったらこうできた
taketakekaho
0
100
2022年度新卒技術研修「Docker」講義
excitejp
PRO
0
350
Featured
See All Featured
Three Pipe Problems
jasonvnalue
89
8.7k
What’s in a name? Adding method to the madness
productmarketing
11
1.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Music & Morning Musume
bryan
35
4.2k
Making the Leap to Tech Lead
cromwellryan
113
7.4k
Thoughts on Productivity
jonyablonski
43
2.3k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
11
4.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
49k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
The Language of Interfaces
destraynor
148
20k
The Art of Programming - Codeland 2020
erikaheidi
32
9.8k
Navigating Team Friction
lara
175
11k
Transcript
CADDi AI LabにおけるマネージドなMLOps 第20回 MLOps 勉強会 2022/06/15 CADDi AI Lab
Tech Lead Shunsuke Kawai
I AM • CADDi, inc. AI Lab Tech Lead M3,
inc. Engineering Fellow Developers Guild Bolder’s Owner Shunsuke Kawai (@vaaaaanquish)
AGENDA 1. CADDi AI Lab 2. CADDiでのスケーラブルなMLOps 3. まとめ
CADDi AI Lab
CASE • CADDiは製造業を変える企業です • Tech Blog、Speaker Deck、テックイベントで応用事例を公開中
Algorithm Eng 2D/3D Image Processing AtCoder Ranker PdM / EM
ex - PFN, NTT, CTO ML Eng ex - DeNA, M3, Mckinsey Kaggle Master/Grandmaster Data Eng ex-Yahoo! DataAnalyst MEMBERS • +海外にManager/MLEメンバー • ML EngineerとAlgorithm Engineerが共存している • MLOps Engineerが居ない
TECH STACK • PythonとRustが共存 • Python:機械学習 • Rust:画像処理アルゴリズム、WebAssembly • データの管理、検索にも対応
• Opensearch:情報検索、ANN • dbt:全社データPipeline
MLOps • 機械学習エンジニア、アルゴリズムエンジニア、データエンジニアが プラットフォームチーム(5名)と協業しながらMLOpsをしている • Productionへの提供スピードを上げるためにデプロイ、運用までが基本 • マネージドでスケーラブルなサービスに乗っかる事だけを考えたい
CADDiでの スケーラブルなMLOps
BACKGROUND • Kubernetes (GKE) を極力避けたい ◦ GPUの扱いの難しさ ▪ CPUマシンとのリソースの取り方の違いによるAuto ScalingやProvisioning
◦ k8sクラスタ管理の大変さ ▪ MLモデルに起因した問題か一見して判別出来るようになるまでに整備が必要 ▪ yaml, ArgoCD, CLI, Logging ,監視, Driver, …など関連ツールや権限の管理 ◦ サービス毎に必要な単位でGKEクラスタ自体はあるが、横断組織であるAI Labにはない ◦ MLOps Engineerが居る場合やSREチームが面倒見てくれる場合は良いがAI LabにはToo Match • モデルファイル用のバージョン管理だとかストレージだとかloaderとかも頑張りたくない • Cloud Runくらい簡単なコンテナベースでマネージドな上に粗結合なシステムで運用したい! ◦ Cloud RunでGPUはAnthosで出来なくはないけど… • 定期学習/推論を考えるとAPIとBatch両方扱える必要がある
10 • 最大限Vertex AIに依存したMLOps ◦ Vertex Pipeline ◦ Vertex Model/Endpoint/Batch
Prediction ◦ Vertex Matching Engine • ユースケースに合わせてServingや認証認可も出来る限り省エネに ◦ Tract:DNNモデルをONNXに変換しRustから呼び出す (Rust、何もわからない... #2) ◦ TorchServe ◦ Cloud Run / Cloud Functions ◦ IAM / Auth0 Vertex AI & Tools
Vertex Pipeline • Good ◦ kubeflowのDSLのような形式で PythonのみでPipelineの記述が可能 ◦ 各Task毎に独自のContainer/GPU ▪
RustとPython、CPU/GPU共存 ◦ GCSマウント等も可能かつサーバレス • Bad ◦ デバッグがつらい ▪ 起動時のImage Buildに時間がかかる ▪ 既に動作しているスクリプトを Pipelineに乗せるという運用が良い
© 2022 CADDi Inc. Cloud Storage train vertex pipeline RECOMMENDATION
PIPELINE Recommendation for manufacturing supplier • 受発注の会社を紐付けるための社内向けレコメンドエンジン Using • Vertex Pipeline • LightGBM Big Query predict vertex pipeline CADDi AI Lab Description - speakerdeck
Vertex Model/Endpoint/Batch Prediction • Model ◦ GCRよりCustom Containerを指定 ◦ Input/Outputの固定Interfaceを返せるHTTP
Serverが立っていれば良い • Endpoint ◦ Modelに設定したContainerをAPIとしてHostingできる ◦ Good ▪ min_replica_count(>1) から max_replica_countの間でオートスケール ▪ GPUが指定できる ◦ Bad ▪ Cloud Run等と違ってインスタンスを0の状態にはできない ▪ DataDog等を使っている場合接続が厄介(VertexAI MetricsもあるがBETA) • Batch Prediction ◦ Modelに設定したContainerをBatchとして実行できる ◦ Good ▪ アウトプットをGCSに設置する前提ならGPUも使えて十分機能する ▪ 予測利用者側がnode数やリソースを指定するようにできる ◦ Bad ▪ GCSに設置された結果を触るCloud Functionsなりが必要
TorchServe • 良い感じにServingしてくれるAWS/Facebookが作っているツール • Flask/FastAPI/gunicorn/uvicorn/…等でServingすると xxxicornのwokerとPyTorchのスレッド数とGPUとk8s podのバランスを考えたり… ◦ 良い感じに解決してくれる ◦
CPU/GPU/woker管理、複数モデル管理、Management API、監視 • Bad point程ではないがGCSのmodel file設置には現時点で未対応 (S3はある) APP BESTPRACTICE - PyTorch Document Google Cloud上のPyTorch:VertexAIにPyTorchモデルをデプロイする方法 - Google Cloud TorchServe を使用した大規模な推論のための PyTorch モデルをデプロイする - AWS
Vertex Endpoint + TorchServe • Vertex Endpoint → Cloud Run • Vertex
Batch Prediction → GCS + Cloud Functions/PubSub TorchSearve Vertex Model Model File torch-model-archiver Model File hundler Inference API Vertex Endpoiont / Batch Prediction 各種サービスへ提供
Vertex Endpoint + TorchServe • Good • ModelのServingやAuto Scalingについてはほぼ考えなくて良い •
MLEがPythonでFastAPI実装するよりも簡単 • 複雑な設定ファイルやツール郡は不要になる (gcloud, aiplatform, terraform程度) • Rustなどでの画像処理アルゴリズムも同様に乗せる事ができる • サービス間の連携、認証認可のみ考えれば良い • Bad • Model FileをDocker内に収める必要あり • Vertex EndpointがInterface固定なためTorchServeのManagementAPIが十分に使えない
Vertex Matching Engine • ANN検索を提供するフルマネージドサービス(近い〇〇をフルマネージドで提供できる) • Good • Opensearch等より簡易にANN類似画像検索が提供可能 •
DNNモデルがあるなら提供までが一番早い • SaaS用に作ったものから社内検証のために利用 • indexの張替え等もフルマネージド • response速度がかなり早い (< 10ms) • Bad • 任意のidに対する類似、のような機能はない • AI LabではFirestoreに{id, 特徴vector}を保存 • やや高い (> $1000/month) あらゆるデータの瞬時アクセスを実現する Google のベクトル検索技術 - Google Cloud
MISTAKE • Vertex workbench • ホスティングされたNotebook • カスタムコンテナも使えて任意のサービスアカウントでGUI内から直接BigQuery等が見える • notebookを使わないアルゴリズムエンジニアも居るためベース環境ではなくなった
• Rust扱いづらいしインスタンス立てた方が…となった • 最初のモデルはFastAPIに乗ってしまった • Dockerの状態で出来てしまっていたため移植簡単だと判断 • thread/woker設定、k8s設定の調整で足元持っていかれた • 負荷テストを書いたりして検証していった • MLOps EngineerをAI Lab設立から半年採用できなかった • スケールするには必須(何も考えてませんでした…)
SUMMARY • Vertex Endpoint + TorchServeが良いぞ • Vertex Pipelineが良いぞ •
CADDiにおけるMLOps/Data Engineerの ファーストペンギンになりませんか?