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
130
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
110
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
8
2.7k
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
4
6.4k
From Prompt Engineering to Loop Engineering
shibuiwilliam
2
500
OntologyとLLMOps
shibuiwilliam
4
220
Rule repository
shibuiwilliam
3
100
LLM時代の検索アーキテクチャと技術的意思決定
shibuiwilliam
5
2.8k
Why Open Dataspacesのまとめ
shibuiwilliam
2
320
マルチモーダル非構造データとの闘い
shibuiwilliam
2
880
Other Decks in Technology
See All in Technology
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
260
PHPカンファレンス関西の招待状 / Invitation to PHP Conference Kansai
ykanoh
0
110
NDIでApple Vision Proにリアルタイム映像送信
jyouryuusui
0
120
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
730
AI導入は済んだ。次は統制を作り替える番だ_AI×開発組織 Summit 2026
techtekt
PRO
0
220
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
How to Design Configuration for Rails Applications
willnet
1
780
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
140
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
120
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.7k
AI時代のPRレビューにどう向き合うか?
kairim0
1
240
go-sqletch
moznion
0
140
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Visualization
eitanlees
153
17k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
The Limits of Empathy - UXLibs8
cassininazir
2
720
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
エンジニアに許された特別な時間の終わり
watany
109
250k
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