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
SageMakerで試行錯誤する推論パイプライン
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
moajo
August 21, 2020
Programming
0
1.4k
SageMakerで試行錯誤する推論パイプライン
moajo
August 21, 2020
Tweet
Share
Other Decks in Programming
See All in Programming
JPUG勉強会 OSSデータベースの内部構造を理解しよう
oga5
2
230
オブザーバビリティ駆動開発って実際どうなの?
yohfee
3
690
LangChain4jとは一味違うLangChain4j-CDI
kazumura
1
150
AHC061解説
shun_pi
0
320
エラーログのマスキングの仕組みづくりに役立ったASTの話
kumoichi
0
110
Event Storming
hschwentner
3
1.3k
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
440
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
1.6k
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
150
nilとは何か 〜interfaceの構造とnil!=nilから理解する〜
kuro_kurorrr
3
1.6k
AI活用のコスパを最大化する方法
ochtum
0
120
浮動小数の比較について
kishikawakatsumi
0
380
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.6k
ラッコキーワード サービス紹介資料
rakko
1
2.5M
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
110
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
300
Speed Design
sergeychernyshev
33
1.6k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Claude Code のすすめ
schroneko
67
220k
Skip the Path - Find Your Career Trail
mkilby
1
72
New Earth Scene 8
popppiees
1
1.7k
Transcript
SageMakerで試⾏錯誤する 推論パイプライン moajo SoftwareEngineer DeNA
⾃⼰紹介 2 • moajo • 新卒2年⽬ • 普段はmlops的な仕事をしている • 趣味はフリークライミング
3 とあるプロジェクトにて
プロジェクト要件 • 「試合」の動画を撮影 • 翌⽇までにいい感じに解析して「チーム」にフィードバック • 「チーム」が強くなる! 4
当初のつらみ • 今までPoC段階でずっと⽣EC2上でモデル実装、検証してきていた • 推論パイプラインはjobがSQSに投げられると、ベタ書き推論処理⼊りのAMIが EC2上にオートスケールしてそれを捌くというだけの質素なものだった • そしてじわじわと近づく限界 • パイプラインの全ステップが密結合
→バージョン管理困難 • ⼀番リソースを⾷うステップに合わせてインスタンス選択 →リソースの無駄 • 依存関係が分離できてない →ライブラリバージョンが固定しづらい 5
Amazon SageMaker • AWSのマネージド機械学習基盤 • GCPでいうAI platform? • 学習、推論、データセット管理など⾊々な機能が⼊ってる 6
7 とりあえず導⼊してみた
とりあえず作ってみた構成 • SageMaker Batch Transformで推論 • Batch推論はAirflowからキック • Airflowでは短いスパンでSQSをポーリングしてdagをトリガーする •
sagemakerは `[model_name]/[timestamp]` みたいなpathに書き出し 8 ポーリング 順序の管理 書き出し
とりあえず作ってみた構成はどうだったか • Airflowの管理がちょっと⾯倒くさい • composerとか使うともっと楽なのかなぁ・・・ • 書き出し先のpathが分散しててイケてなかった • ⼀回のdag実⾏の結果が分散してて⼀覧性が低かった •
BatchTransformへの書き換えが⾟い • BatchTransformは `model_fn`、`predict_fn`のような特定の名前の関数 を定義しておくといい感じに呼び出されるという仕組み • 今までベタ書きだった学習推論コードを書き換えないといけない • BatchTransform⾃体もちょっとイケてなかった(後述) 9
BatchTransformのイケてなさ • SageMaker Endpointという推論エンドポイントホスティング機能がある • BatchTransformとEndpointは同⼀コードを使い回せるようになってる • 実はBatchTransformでは内部的にはendpointを建ててそこにhttp経由でリク エストしてる •
データサイズがデカすぎたりするとhttpレイヤーから 例外が⾶んできてつらい(デフォルト設定だと) • 設定をちゃんと管理するのはそれはそれで⾯倒くさい・・・ • たぶん「もともとEndpointを普段使ってるけど、たまにそのモデルでバッチ推 論もしたい」みたいなユースケースを想定してるのでは? • 今回のケースではそもそもバッチ処理しかしない 10
修正した構成 • BatchTransformの代わりにProcessingを使う • Processingは前処理、後処理⽤サービスで、任意のコードを実⾏できる • GCPのai platform training jobとだいたい⼀緒
• 逆にモデルはマネージドじゃなくなるので、⾃分でロードしたりバージョ ン管理しないといけない • 書き出し先pathをdag_idでまとめた • [run_id]/[model_id]/にした • めちゃくちゃ快適になった。絶対こっちのほうが良い 11
修正した構成はどうだったか • コードの修正は最⼩限になった • ベタ書きコードをそのまま実⾏できる • データサイエンティストの負担減 • 割とUXは良くなったが、お⾦が結構掛かるのがつらい •
スポットインスタンス未対応 12
コスト最適化の検討 • AWS Batchを使う? • ECSでバッチ処理を実⾏できる • スポットインスタンスも使える • もはやSageMakerじゃないが・・・
• SageMaker Training jobを使う • 学習jobとして「推論」する • いいのか、こんな使い⽅して・・・ • でもスポットインスタンスも使える • 地味にProcessingより使えるインスタンスタイプが多い 13
最終的な構成 • Training jobで推論 • trainjobのマネージドな出⼒は丸ごと1ファイルに圧縮された上でs3に吐か れる • しかも出⼒なしに設定することもできない •
推論結果は1ファイルに勝⼿に圧縮してほしくないので、推論処理の⼀部と して⼿動upload • 出⼒はダミーのパスに書き捨てる • 「70% saving」とか表⽰されるのでとてもお得感がある • Processingと⽐べてデータのマウント先が制約されるが、manifest fileは使い 回せた 14
未だ残るつらさ • manifest fileがローカルモードに対応してない • ローカルでの動作検証ができない • せめて出⼒を⾮圧縮で書き出すオプションがほしい 15
16 まとめ
まとめ • 動画を⼊⼒とする推論パイプラインをSageMakerで作った • BatchTransformは純粋なバッチ処理には実は適してない • Processingは任意処理の実⾏環境として使い勝⼿が良い • Training jobはちょっと癖があるが、学習以外の⽤途にも使える
• 若⼲余分な機能と制約が付いてるがほぼ任意コードを実⾏できる • 現状sagemakerでスポットインスタンスが使えるのはtraining jobのみ • 完全マネージドで従量課⾦なので、定常コストゼロで運⽤できていい感じ 17