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
MLOpsを実現するSRE激闘の歴史
Search
Kenta Sato
September 19, 2020
Technology
2
1.2k
MLOpsを実現するSRE激闘の歴史
XP祭り2020登壇資料
MLOpsを実現するSRE激闘の歴史
Kenta Sato
September 19, 2020
Tweet
Share
More Decks by Kenta Sato
See All by Kenta Sato
Infra Study #4 AI SaaSの機械学習インフラ基盤とMLOpsの取り組み
kenta_sato3
1
1.1k
Other Decks in Technology
See All in Technology
クラウドとリアルの融合により、製造業はどう変わるのか?〜クラスメソッドの製造業への取組と共に〜
hamadakoji
0
450
webpack依存からの脱却!快適フロントエンド開発をViteで実現する #vuefes
bengo4com
4
3.6k
SRE × マネジメントレイヤーが挑戦した組織・会社のオブザーバビリティ改革 ― ビジネス価値と信頼性を両立するリアルな挑戦
coconala_engineer
0
290
頭部ふわふわ浄酔器
uyupun
0
230
OPENLOGI Company Profile for engineer
hr01
1
46k
Retrospectiveを振り返ろう
nakasho
0
130
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.4k
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
3
880
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
4
890
AI時代、“平均値”ではいられない
uhyo
8
2.7k
20251027_findyさん_音声エージェントLT
almondo_event
2
480
Zero Trust DNS でより安全なインターネット アクセス
murachiakira
0
110
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
GitHub's CSS Performance
jonrohan
1032
470k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
190
55k
Agile that works and the tools we love
rasmusluckow
331
21k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Balancing Empowerment & Direction
lara
5
700
Making Projects Easy
brettharned
120
6.4k
Building a Scalable Design System with Sketch
lauravandoore
463
33k
How to Ace a Technical Interview
jacobian
280
24k
Side Projects
sachag
455
43k
Transcript
.-0QTΛ࣮ݱ͢Δ43&ܹಆͷྺ࢙ ετοΫϚʔΫגࣜձࣾ 4JUF3FMJBCJMJUZ&OHJOFFSࠤ౻ ݡଠ 91ࡇΓ
4UPDLNBSL *OD ࣗݾհ
4UPDLNBSL *OD ࣗݾհ • 佐藤 賢太 (@kenta_sato3) • 36歳 •
2児の父 • 福岡出身 • 元野球選手(アメリカ・オーストラリア・スウェーデン) • コールセンター・企業向けUC (ユニファイドコミュニケーション)パッケージ製品べンダーのSEと して5年ほど経験し、2019年10月にストックマークにSREとして入社 • ストックマークではクラウド、AWSやGCP上でのシステム構築及び運用、SREやMLOpsに携わる
© 2020 Stockmark Inc. 会社名 ストックマーク株式会社 Stockmark Inc. オフィス 東京都港区南青山1丁目12-3
LIFORK MINAMI AOYAMA S209 設 立 2016年11月15日 創業者 代表取締役CEO 林 達 取締役CTO 有馬 幸介 事業内容 自然言語処理技術を活用した ビジネス意思決定サポートサービスの提供 従業員数 54名 (2020年6月 現在) URL http://stockmark.co.jp | 会社概要 会社概要
4UPDLNBSL *OD ࣍
4UPDLNBSL *OD ࣍ • プロダクト概要 • システムアーキテクチャ概要とMLで実現したいこと • ML初心者SREがMLOpsに挑戦することになった背景 •
MLOpsとはなにか、なぜ必要か • MLOpsを実現するSREの激闘の歴史 • 課題設定と継続的な改善 • これから
4UPDLNBSL *OD プロダクト概要
© 2020 Stockmark Inc. Z c"TUSBUFHZͷػೳ ಛఆͷྖҬʹରͯ͠ɺओཁಈɾւ֎ಈɺͦͷଞͷಈ͖ͱͯࣗ͠ಈͰྨɻ ͜Ε·ͰߏԽͰ͖ͳ͔ͬͨࢢͷಈ͖ͱϓϨΠϠʔΛՄࢹԽɻ େͳใΛ၆ᛌ্ͨ͠ͰಛఆྖҬΛ"*͕ߏԽ ػೳ
Ωʔϫʔυ͔ΒಛఆͷྖҬΛݕࡧ ۀքߏΛ"*͕ߏԽ ओཁͳϓϨʔϠʔΛநग़
© 2020 Stockmark Inc. ֤اۀ͕ͲͷΑ͏ͳࣄۀʹऔΓΜͰ͍Δͷ͔Λཧɺ ֤ࣾͷࠩผԽཁҼΛՄࢹԽ͠ɺଧͪखग़ͷώϯτΛఏڙɻ ಛఆྖҬͷاۀͷऔΓΈͱࠩผԽཁҼͷՄࢹԽ ػೳ c"TUSBUFHZͷػೳ
ࠩผԽཁҼΛՄࢹԽ اۀผʹهࣄΛྨ
© 2020 Stockmark Inc. ϓϨΠϠʔͷࢀೖλΠϛϯάͱهࣄྔΛՄࢹԽ͢Δ͜ͱͰɺ ಛఆྖҬͷ৳ͼΛఆྔతʹ͍ɺࢢͷՄೳੑΛ୳ΔώϯτΛఏڙɻ ࣌ܥྻͰࢀೖϓϨΠϠʔͱهࣄͷ৳ͼΛՄࢹԽ ػೳ c"TUSBUFHZͷػೳ
ϓϨΠϠʔΛϦετΞοϓ ݄ผͷهࣄྔΛදࣔ
© 2020 Stockmark Inc. اۀ໊நग़ʹ͍ͭͯ اۀ໊Λਖ਼͘͠நग़͢Δʹɺจ຺͔Β୯ޠͷ ҙຯΛஅ͢Δඞཁ͕͋Γɺίϯϐϡʔλʔʹ ͱ͍ͯ͠ɻ 4UPDLNBSLɺจ຺ΛߟྀͰ͖Δ"*ͷʮ#&35ʯ Λ༻͍ͨख๏Λ։ൃɻ
˔ ˔ cࢀߟ
4UPDLNBSL *OD システム概要とMLで実現したいこと
4UPDLNBSL *OD ΞʔΩςΫνϟ • サーバレス基盤で記事データ収集 • Cloud TPUで汎用言語モデルを作成 • オンプレGPUでモデルのファインチューニング
• AWSのGPUでMLバッチ処理 • マイクロサービスウェブアプリケーション
4UPDLNBSL *OD هࣄσʔλऩू
4UPDLNBSL *OD Ϗδωεʹڧ͍ࣄલֶशࡁΈ൚༻ݴޠϞσϧ
4UPDLNBSL *OD Cloud TPU: 事前学習済み汎用言語モデル構築 出典: https://cloud.google.com/tpu?hl=ja • ディープラーニングを高速化 •
精度向上
4UPDLNBSL *OD オンプレGPU: モデルのファインチューニング • 汎用言語モデルをタスクに特化してチューニング • 長時間要するタスク
4UPDLNBSL *OD ΣϒΞϓϦέʔγϣϯΞʔΩςΫνϟ
4UPDLNBSL *OD .-όονͰΓ͍ͨ͜ͱ
© 2020 Stockmark Inc. Z c"TUSBUFHZͷػೳ ಛఆͷྖҬʹରͯ͠ɺओཁಈɾւ֎ಈɺͦͷଞͷಈ͖ͱͯࣗ͠ಈͰྨɻ ͜Ε·ͰߏԽͰ͖ͳ͔ͬͨࢢͷಈ͖ͱϓϨΠϠʔΛՄࢹԽɻ େͳใΛ၆ᛌ্ͨ͠ͰಛఆྖҬΛ"*͕ߏԽ ػೳ
Ωʔϫʔυ͔ΒಛఆͷྖҬΛݕࡧ ۀքߏΛ"*͕ߏԽ ओཁͳϓϨʔϠʔΛநग़
4UPDLNBSL *OD .-ॳ৺ऀ͕.-0QTʹઓ
4UPDLNBSL *OD .-ॳ৺ऀ͕.-0QTʹઓ MLOpsの必要性感じています 佐藤さん興味あります? ͱ͋Δͷ͜ͱ
4UPDLNBSL *OD ࢲͷͦΕ·Ͱͷ.-ࣝ • DevOps実践 • MLシステム運用歴なし • MLは個人的に勉強(実務経験なし) •
Coursera Machine Learning • Kaggleに登録したら次にやること ~ これだけやれば十分闘える Titanicの先へ行く入門 10 Kernel ~
4UPDLNBSL *OD .-ॳ৺ऀ͕.-0QTʹઓ やらせてください! ϊϦͰ"TUSBUFHZͷ.-0QTΛΒͤͯΒ͏͜ͱʹ
4UPDLNBSL *OD .-0QTͱɺͳͥඞཁ͔
4UPDLNBSL *OD .-0QTͱ • 明確な定義はなく、Googleの人が提唱したのが最初(自分の観測範囲) • DevOpsのML版 • MLOpsは、MLシステム開発(Dev)とMLシステムオペレーション(Ops)を統合することを目的とし たMLエンジニアリングの文化と実践です。MLOpsを実践するということは、統合、テスト、リリー
ス、デプロイ、インフラストラクチャ管理を含む、MLシステム構築のすべてのステップで自動化 とモニタリングを提唱することを意味します。 出典: MLOps: 機械学習における継続的デリバリーと自動化のパイプライン https://cloud.google.com/solutions/machine-learning/mlops-continuous-delivery-and- automation-pipelines-in-machine-learning?hl=ja
4UPDLNBSL *OD ͳͥ.-0QT͕ඞཁ͔ • 役割の溝 • データ収集 → データエンジニア •
モデル構築 → データサイエンティスト • 本番運用 → ソフトウェアエンジニア、SRE • 同一の予測結果を得る難しさ • CACEの原則 • データや実験の管理 • 経済的な問題 • 継続的な学習とサービングの必要性 • 予測時のデータが学習時から変わってくる
4UPDLNBSL *OD .-γεςϜෳࡶ ML システムの要素。機械学習システムの隠れた技術的負債からの抜粋
4UPDLNBSL *OD .-4VQFSIFSP なんでもできるML superheroに依存するとスケールしなくなる ML superhero What is ML
Ops? Best Practices for DevOps for ML (Cloud Next '18)から転載.
4UPDLNBSL *OD .-0QTΛ࣮ݱ͢Δ43&ͷܹಆͷྺ࢙
4UPDLNBSL *OD .-0QTΩοΫΦϑϛʔςΟϯά • MLエンジニアの感じている課題感を共有してもらう • コードとモデルのCI/CD機構がほしい • ニュース記事のローデータ(HTML)が欲しい •
オンプレで作成しているモデルのデプロイをもっといい感じにしたい • MLバッチシステムは構築済みなので、一緒にどこから手を付けて行けばよいかを深堀りすることに
4UPDLNBSL *OD ॳظߏ • CloudWatch Eventをトリガー • LambdaでRDSのデータを抽出 • S3にデータを格納
• EC2でバッチ処理 • Elasticsearchに登録
4UPDLNBSL *OD ॳظߏͷ՝ • コード更新のたびに手作業であたたかみのあるデプロイ • EC2 x 2(CPU, GPUインスタンス)
• SCPコマンドで開発環境からコードをアップロード • SCPコマンドでモデルのアップロード (合計10 GB超え) • SSHでEC2にログインし、Docker imageをビルド (1時間弱) • Lambda x 3にzipで固めたコードをコンソールからデプロイ • 直列で10種類のMLタスクを回すので実行時間が長くなる • デバッグが大変
4UPDLNBSL *OD MLタスク毎にインスタンスを用意して並列処理
4UPDLNBSL *OD MLタスク毎にインスタンスを用意して並列処理 インフラ構築、デプロイ、運用全て一人のMLエンジニアをがやっていた
4UPDLNBSL *OD σϓϩΠ͖ͭ͗͢ൃੜ コード x モデルを各インスタンスに手動デプロイで大半の時間を取られる
4UPDLNBSL *OD ՝ઃఆᶃ 1. 継続的インテグレーション (CI) 機構がない。 → テストで防げるような不具合が検知できないため、デ プロイ後に発覚して手戻りが発生する。
2. 継続的デプロイ (CD) 機構がない。 → デプロイ運用コストが大きく、かつ手動デプロイによるミスが 発生しやすい。 3. 監視機構がない。 → バッチ処理が無事完了したかどうかを毎日手動でElasticsearchとS3に確認しないと いけない。
4UPDLNBSL *OD $*$% $PEF .PEFM • CI • PR作成時にAWS CodeBuild上で自動テスト
• CD • PRマージ • Lambda: Serverless Framework • EC2 • Python boto3のec2とssm • ML model • S3にpush • EFSへ同期し、EC2からマウント
4UPDLNBSL *OD όονࢹ • Lambdaを定期実行し、期待するデータが 期待する場所に入っていることをチェック
4UPDLNBSL *OD ۤ࿑ͨ͜͠ͱ • 全体の構成の把握 • 構成図等はなく、MLエンジニアの頭の中をdumpしてまとめる作業 • Dockerビルドに長時間かかる •
マルチスレッドのPythonスクリプトを書いて並列リモートビルド • EC2へのコード、モデルのデプロイ方法
4UPDLNBSL *OD ޮՌ MLエンジニアの運用負荷が激減
4UPDLNBSL *OD ޮՌ MLエンジニアが本来のML研究開発など創造的な仕事に集中することができるようになった
4UPDLNBSL *OD ՝ઃఆᶄ • EC2インスタンスの管理が必要 • 新しいMLタスクができた時などは専用のEC2を立ててプロビジョニングする必要がある • 各EC2を起動するLambdaの作り込みが必要 •
S3更新を起点で処理が走り、記事数が多い時は複数データファイルに分割して並列処理をするようにし ているが、lock制御などをシェルスクリプトで作り込む必要がある • 実行結果監視用機構を作り込む必要がある • 全体のフローの把握が困難
4UPDLNBSL *OD ղܾํ๏ • コンピューティング環境は、EC2からAWS Batchに移行する • EC2の管理が不要になる • Step
Functionsから直接ジョブ登録できる • ワークフロー制御にはStep Functionsを使う • ワークフローを一元管理し、ジョブの依存関係(DAG)表現できる • フローの途中で通知処理を加えたい場合などに、アプリケーションロジックと分離して実装できる • 並列、配列処理やリトライ、例外処理がフローで実装でき、アプリケーションロジックをシンプル にできる • インフラはterraformでコード化する • インフラ構成をコードとしてドキュメント化 • 変更管理をGitでレビュー • インフラもCI/CDに組み込める
4UPDLNBSL *OD "84#BUDI4UFQ'VODUJPOT • 重いMLジョブもデータを分割して、配列ジョブとして実行 • 異なるMLタスクは並列実行
4UPDLNBSL *OD "84#BUDI4UFQ'VODUJPOT
4UPDLNBSL *OD "84#BUDI4UFQ'VODUJPOTʢޭ࣌ʣ
4UPDLNBSL *OD "84#BUDI4UFQ'VODUJPOTʢࣦഊ࣌ʣ
4UPDLNBSL *OD $*$% • GitHub & CodeBuild • ServerlssフレームワークでLambdaをデプロイ •
Terraformでインフラ管理 • DockerfileやPipfile変更時にDockerイメージをビル ドし、ECRにPUSH • モデルはS3からEFSに同期
4UPDLNBSL *OD ۤ࿑ͨ͜͠ͱ • 並列実行で、共有ファイルシステムの同じ名前のtmpファイルに同時に読み書き(想定外)に失敗 • Step Functionsで拾えない例外に遭遇し、GPUサーバーが暴走
4UPDLNBSL *OD ޮՌ • 全体のフローが可視化できて良い • リトライ処理などをアプリケーションに組み込 む必要がなくなり、コードが減り保守しやすく なった •
処理の途中経過をSNSに通知することで、他のア プリケーションが連携しやすくなった。 • トラブルシューティングが容易になった。 • MLタスクの追加が容易になった。
4UPDLNBSL *OD ՝ઃఆͱܧଓతͳվળ
4UPDLNBSL *OD ՝ઃఆͱܧଓతͳվળ • なぜやるのかを明確にする • 「MLOpsをする」ことは目的ではない • ツールありきではない •
ユーザー(MLエンジニア)と話したり、ボトルネックを特定し、課題を明確にする • どうやるのか • 自分のスキルで解決できそうな課題からやる。ドメイン知識やスキルが増えると徐々に他のところ にも手を出せるようになる。 • すぐに完璧を目指さない。
4UPDLNBSL *OD ͜Ε͔Β
4UPDLNBSL *OD ͜Ε͔Β • 実験管理, • データのバリデーション • データ・パイプラインのバージョン管理とか
4UPDLNBSL *OD ͜Ε͔Β • 実験管理, • データのバリデーション • データ・パイプラインのバージョン管理とか •
引き継つぎました
© 2020 Stockmark Inc. | Product | Anewsの機能 AIが人力では抽出できない膨大なビジネスニュースから、 組織や個人の関心事に合わせて、ビジネスに直結したニュースをレコメンド。
テーマに合わせてAIが組織に必要なニュースを配信 機能 01
4UPDLNBSL *OD ͜Ε͔Β • インフラもゼロから構築 • CI/CD • 運用・監視 •
B2B SaaSの推薦システム 独特の課題
4UPDLNBSL *OD ࢀߟ
4UPDLNBSL *OD ࢀߟ https://tech.stockmark.co.jp/
4UPDLNBSL *OD