Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Lets start mlops
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
shibuiwilliam
March 17, 2022
Technology
120
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Lets start mlops
https://tier4.connpass.com/event/217726/
shibuiwilliam
March 17, 2022
More Decks by shibuiwilliam
See All by shibuiwilliam
The Conductor Pattern -Multi-Granularity Feedback for Creative Agents-
shibuiwilliam
2
77
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
7
2.5k
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
660
From Prompt Engineering to Loop Engineering
shibuiwilliam
2
460
OntologyとLLMOps
shibuiwilliam
4
150
Rule repository
shibuiwilliam
3
86
LLM時代の検索アーキテクチャと技術的意思決定
shibuiwilliam
5
2.7k
Why Open Dataspacesのまとめ
shibuiwilliam
2
290
マルチモーダル非構造データとの闘い
shibuiwilliam
2
800
Other Decks in Technology
See All in Technology
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
180
絵ではじめるKubernetesセキュリティ
aoi1
3
620
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
210
LLMに渡さなかった仕事
nanaism
0
260
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.7k
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2k
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
110
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.9k
Featured
See All Featured
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Git: the NoSQL Database
bkeepers
PRO
432
67k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
Exploring anti-patterns in Rails
aemeredith
4
510
Abbi's Birthday
coloredviolet
4
10k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
From π to Pie charts
rasagy
1
370
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
We Are The Robots
honzajavorek
0
370
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
540
Transcript
今日から始める MLOps 2021/07/29 shibui yusuke 1
自己紹介 shibui yusuke • ティアフォーでよろず屋兼イベント係 • MLOpsコミュニティのオーガナイザー • もともとクラウド基盤の開発、運用。 •
ここ5年くらいMLOpsで仕事。 • Github: @shibuiwilliam • Qiita: @cvusk • FB: yusuke.shibui • 最近やってること: Golangとデータ分析とBI cat : 0.55 dog: 0.45 human : 0.70 gorilla : 0.30 物体検知 2
今日話すこと • 最近よく聞く「MLOps」について説明します。 • ティアフォーで取り組んでいる事例とともに、 MLOpsの進め方を紹介します。 3
CatOps! 放置しているとネコに 椅子を奪われる。 ネコ障害対応(餌、遊ぶ)。 「遊ぶ」を自動化する。 椅子に座っていても ハンズフリーで遊べる。 day 奪 わ
れ 回 数 ハンズフリー導入 飽き始める Dev Data-driven 4 Ops
なぜ機械学習に DevOpsが必要か 5
• PoCから次の段階に行くためには機械学習のDevOpsが必要 • 機械学習を含むプロダクトの価値を継続的に引き出すのがMLOps 0->1の次を目指す PoCの数々 ようやく成功した プロダクトやモデル 実用レベルに 品質を上げるには
なにが必要? • 実用上の指標から機械学習を評価する • 機械学習だけにフォーカスしない • データシステムの全体戦略を作る 6
機械学習を使ったプロダクト例 信号認識 信号機を検知し、色を判別 20m 物体検知 画像認識 色認識 前処理 地図 →赤!
7
機械学習を使ったプロダクトをDevOpsする 8
MLOpsの始め方 9
課題解決を導くライフサイクルを設計する • 課題 • 制約条件 • 成功の定義 データ収集 データ分析 データ生成
学習 評価 実用化 ビルド 実装 10
課題解決を導くライフサイクルを設計する • 課題 路上で信号機を検知し、正確に認識する 必要がある。 • 制約条件 計算リソースに制限がある。 全国のデータを得ることはできない。 •
成功の定義 **m手前から信号機の位置と色を **%正確に認識できる。 データ収集 データ分析 データ生成 学習 評価 実用化 ビルド 実装 デ ー タ の 収 集 アノテーション 実験 抽出、選択 整理 ETL モデル開発 テスト、分析 不足 データの 収集 実践 11
ライフサイクルに必要なリソースを実現する データ収集 データ分析 データ生成 学習 評価 実用化 ビルド 実装 デ
ー タ の 収 集 アノテーション 実験 抽出、選択 整理 ETL モデル開発 テスト、分析 不足 データの 収集 実践 クラウド データ基盤 データ検索 アノテータ 学習基盤 分析・CI/CD 組み込み センサー 自動車 モデル管理 12
課題解決に対する因果関係を明確にする データ収集 データ分析 データ生成 学習 評価 実用化 ビルド 実装 デ
ー タ の 収 集 アノテーション 実験 抽出、選択 整理 ETL モデル開発 テスト、分析 不足 データの 収集 実践 クラウド データ基盤 データ検索 アノテータ 学習基盤 分析・CI/CD 組み込み センサー 自動車 モデル管理 認識精度を 上げるためには モデル開発が必要 認識精度を評価する仕組み 良いモデルには 抜け漏れのない データが必要 13
データ検索、コードテスト、モデル管理 14
データ検索 15
データに依存する課題を抽出する 夜 夕方 逆光 影 バック 雨粒 暗がり 雪 大通り
周囲にビル 出入り口 青空 直線 16
データ課題を解決するために基盤と検索を整備する PROJECT - id - project_name - description PLACE -
id - country - prefecture - city WEATHER - id - weather_name - place_id - start_time - end_time IMAGE - id - file_name - recorded_time - project_id - place_id - latitude - longitude OBJECT - image_id - people - cars - bicycles - buses - traffic_lights DARKNESS - image_id - darkness - brightness 17
検索 18
コードテスト 19
開発の品質を維持しつつスケールする仕組みを作る 取得したデータが正しい → ←この処理が正しい 動くモデルができてる → データリークしていない → ←基準以上の評価 評価と実用が乖離しない
→ 止めずに安定して 動かせる データ取得 前処理 学習 評価 ビルド ←損失関数が下がる 動く→ 20
tldr; テストを書こう! 取得したデータが正しい → ←この処理が正しい 動くモデルができてる → データリークしていない → ←基準以上の評価
評価と実用が乖離しない → 止めずに安定して 動かせる データ取得 前処理 学習 評価 ビルド ←損失関数が下がる 動く→ ↑Data validation ↓ユニットテスト ↓early stopping ↓分析 システムテスト→ ↑接続テスト Data validation→ 接続テスト↓ 分析→ 21
• ソフトウェア開発ではプログラムを通してロジックをテストする • 機械学習ではコードを通してデータで確率をテストする データ モデル以外もテストする YES or NO 0
~ 1 ソフトウェア開発のテスト 機械学習のテスト 入力 正解 出力 assert 関数 指標 推論 evaluate モデル 関数 テスト通過率:95/100 Accuracy:0.99 Precision:0.95 Recall:0.60 22
テストのイメージ # 仮のコードです def make_dataloader(data_path: str) -> DataLoader: return dataloader(data_path)
def train(model: nn.Module, epochs: int, trainloader: DataLoader) -> List[float]: losses = [] for epoch in range(epochs): average_loss = train_once(model, trainloader) losses.append(average_loss) model.save() return losses def evaluate(model_path: str, testloader: DataLoader) -> List[float]: predictor = Model(model_path) evaluations = predictor.evaluate(testloader) return evaluations • 少量データで普通のテストを動かす。 @pytest.mark.parametrize( (“model”, “train_path”, “test_path” “epochs”), [(model, “/tmp/small_train/”, “/tmp/small_test/”, 10)], ) def test_train( model: nn.Module, train_path: str, test_path: str, epochs: int, ): trainloader = make_dataloader(train_path) testloader = make_dataloader(test_path) init_accuracy = evaluate(model, testloader) losses = train(model, epochs, trainloader) assert losses[0] > losses[-1] trained_accuracy = evaluate(model, testdata) assert init_accuracy < trained_accuracy 23
モデル管理 24
モデルを管理する 25 データ取得 前処理 学習 評価 データ基盤 ストレージ テストデータ アーティファクト
管理 Docker registry 25 PROJECT - project_id - project_name - description MODEL - model_id - project_id - model_name - description EXPERIMENT - experiment_id - model_id - algorithm - parameters - metrics - evaluations - artifacts
モデルを管理し、分析する 26 26 晴天 夜 雨 数字はサンプル 晴天 夜 雨
{ 'data_id': 'ABCD1234', 'algorithm': 'mobilenetv2', 'optimizer': 'Adam', 'learning_rate': 0.001, 'batch_size': 32, 'epochs': 300, } { 'data_id': 'EFGH5678', 'algorithm': 'mobilenetv2', 'optimizer': 'Adam', 'learning_rate': 0.005, 'batch_size': 16, 'epochs': 200, }
まとめ 27
ティアフォー MLOpsエンジニア募集中! https://herp.careers/v1/tier4/zHA-dVY6ORa4 • 2Dや3Dの物体検出モデル開発および基盤開発 • KubernetesおよびAWSインフラの構築、運用 • Deep Learningのモデル最適化および推論器開発 •
Deep LearningのためのシミュレーションとCI/CD • データパイプライン、データ基盤、検索 • 技術的に難しいことすべて 28
本を出版しました! • AIエンジニアのための機械学習システムデザインパターン • 2021年5月17日出版 • https://www.amazon.co.jp/dp/4798169447/ • Amazon.co.jp ◦
情報学・情報科学部門 1位! ◦ 人工知能部門 1位! ◦ 増刷決定! • 中国語版と韓国語訳も出るらしい! 29
機械学習を使ったプロダクト例 30
データに依存する課題を抽出する 31
機械学習を使ったプロダクトをOpsする データ収集と 整理、検索 フィードバックと ロジック開発 実装と実験 32