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
機械学習システム構築実践ガイド
Search
shibuiwilliam
November 27, 2023
Technology
1
870
機械学習システム構築実践ガイド
「機械学習システム構築実践ガイド-Forkwell Library #37」の登壇資料です。
https://forkwell.connpass.com/event/301543/
shibuiwilliam
November 27, 2023
Tweet
Share
More Decks by shibuiwilliam
See All by shibuiwilliam
生成AIのためのデータ収集とデータエンジニアリング
shibuiwilliam
3
370
LLMで推論するライブラリを整理する
shibuiwilliam
5
1.1k
生成AIの研究開発を事業につなげる データ、仕組み、コミュニケーション
shibuiwilliam
1
65
デプロイして本番システムで使うことから考えるAI
shibuiwilliam
2
570
今日からRAGを 始めることを考える
shibuiwilliam
2
1.6k
2024年生成AI新年会登壇資料
shibuiwilliam
0
300
Creative as Software Engineering
shibuiwilliam
2
620
Kubernetesクラスターを引き継ぐ技術
shibuiwilliam
3
310
GPT, Langchain, Faiss, FastAPIを組み合わせた Chat検索システム開発
shibuiwilliam
4
4.3k
Other Decks in Technology
See All in Technology
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
27
12k
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
190
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
440
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
複雑性の高いオブジェクト編集に向き合う: プラガブルなReactフォーム設計
righttouch
PRO
0
110
非機能品質を作り込むための実践アーキテクチャ
knih
3
1.1k
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
720
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
410
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
243
12k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Designing Experiences People Love
moore
138
23k
Side Projects
sachag
452
42k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.2k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Transcript
機械学習システム 構築実践ガイド 2023/11/28 shibui yusuke
自己紹介 shibui yusuke • もともと文学部の大学院卒。 • いろいろ → 12月から新しい会社で働きます! •
MLOpsとかいろいろエンジニア • もともとクラウド基盤の開発、運用 • ここ6年くらいMLOpsとバックエンドとインフラとたまに データ分析とAndroidで仕事 • Github: @shibuiwilliam • FB: yusuke.shibui • 最近の趣味:ルービックキューブ cat : 0.55 dog: 0.45 human : 0.70 gorilla : 0.30 物体検知 2
技術評論社Software Designで MLOpsについて連載中! • 2023年8月号 MLOpsの概要 • 2023年9月号 MLOpsのためのスキルセットとチーム構成 •
2023年10月号 方針策定とMLOpsのためのツール • 2023年11月号 MLOpsのための技術選定 • 2023年12月号 LLMのためのDevOps • 2024年1月号 MLOpsと評価(予定) • 2024年2月号 推論システム(予定) MLOpsについてあまり他では取り上げないようなテーマを 中心に記事を書いています!
• 発売中! • https://www.amazon.co.jp/dp/4798173401/ • https://github.com/shibuiwilliam/building-ml-system • 発売中! • https://www.amazon.co.jp/dp/4798169447/
• 発売中! • https://www.amazon.co.jp/dp/4798173401/ • https://github.com/shibuiwilliam/building-ml-system 今日はこちらの本の話。 機械学習システムを実用化する 設計・開発・運用ノウハウが満載 【本書の概要】
本書は前著『AIエンジニアのための機械学習システム デザインパターン』では触れられなかった、 機械学習システムを構築する上で実際に発生する 課題を想定し、動いているシステムやワークフローに 機械学習を組み込む方法を解説した書籍です。 - 需要予測のためのバッチシステム - 違反検知システム - ランク学習による検索 - 類似画像検索システム
• 発売中! • https://www.amazon.co.jp/dp/4798173401/ • https://github.com/shibuiwilliam/building-ml-system
今日話すこと • 機械学習の実用化の課題 • 違反検知システム • 類似画像検索システム • まとめ •
今日のスライド <TODO>
機械学習の実用化の課題
機械学習の実用化の課題 • 機械学習チームのソフトウェア開発の理解不足 • ソフトウェア開発チームの機械学習の理解不足 • 機械学習を0->1だけで終わらせているプロジェクトを散見 → 機械学習を実用化するワークフロー、システム、チーム
最近の機械学習界隈 Machine learning Deep learning Generative AI Platform 2011 2012
2013 2023 2022 2021 2020 2014 2015 2016 2017 2019 2018 BigQuery dbt Kubeflow AlexNet DCGAN TensorFlow DQN AlphaGo AlphaZero XGBoost LightGBM ONNX PyTorch Anaconda GoogleNet ResNet Kaggle SageMaker Keras Core ML MediaPipe TensorRT Nvidia K80 Jupyter Notebook Google Colab Word2Vec Vertex AI MLflow Spark CLIP BERT GPT-3 OpenAI Hidden debt paper Diffusion model HuggingFace AutoML Optuna Katib ChatGPT Snowflake Airflow Cycle GAN Style GAN Magenta VAE CatBoost Flax TFServing TorchServe Stable Diffusion Nvidia A100 TPU Transformer イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション イノベーション CodeX BQML
最近の機械学習界隈の状況 • 研究から利用、利用から実用へ データ 機械学習 デプロイ 利用 課題 ユーザ システム
解決 開発 課題を解くためのワークフロー ワークフローを実現するシステム システムを開発、運用するチーム
最近の機械学習界隈の状況 • 研究から利用、利用から実用へ データ 機械学習 デプロイ 利用 課題 ユーザ システム
解決 開発 ここの方法論は増えてきた 課題からデータまで紐づけて 解決できるスキルが求められている
ユーザに使われる機械学習へ 固定化された デザイン 画像処理 写真を撮る タイトル入力 説明入力 投稿する 自然言語処理 違反検知
あるコンテンツ投稿アプリ
機械学習を使ったプロダクト 画像処理 写真を撮る タイトル入力 説明入力 投稿する 自然言語処理 違反検知 登録情報から違反を フィルタリング
入力情報から 入力補助 超解像による 画質改善 ねこ 検索 協調フィルタリングや ランク学習による 並べ替え あるコンテンツ投稿アプリ 画像分類と 検索
機械学習を使うための技術 写真を撮る タイトル入力 説明入力 投稿する ねこ 動物画像SNSアプリ ログ DB Storage
監視 学習 モデル proxy 画像 API 推論 API batch デプ ロイ 認証 認可 ID 検索 API Item API 推薦 API BI クラウド・インフラ
動物画像SNS『AI Animals』
バックエ ンドAPI Elastic Search Postgre SQL Storage Argo Workflow MLflow
キャッシュ Prome theus RabbitMQ Grafana 検索ML 違反検知 システム AI Animals全体像
システムとワークフロー 写真を撮る タイトル入力 説明入力 投稿する AI Animals ねこ 機械学習 データ
評価 DWH 推論 API 推論 batch BI 評価 アノテー ション 学習 Pipeline ML 基盤 投稿 API 利用
AI Animals 機械学習を実用化するチーム 写真を撮る タイトル入力 説明入力 投稿する ねこ 機械学習 データ
DWH 推論 API 推論 batch BI 評価 アノテー ション 学習 Pipeline ML 基盤 データ ML SWE アノテーション PdM 投稿 API
機械学習システム 違反検知編
違反とは 写真を撮る タイトル入力 説明入力 登録する ねこ 公序良俗に反する画像 著作権違反の画像 グロテスクな画像 サービスに則さない画像
・・・を違反として排除したい AI Animals
違反検知を考える • あなたはスマホアプリAI Animalsを提供する会社で働く機械学習エンジニアです。 • AI Animalsではユーザがスマホから動物写真を投稿し、共有することができます。 • 可愛い動物写真がみつかることで好評で、リリース1年で月間アクティブ・ユーザ数が50,000人、 動物写真の総投稿数が10,000,000件を突破しました。
• ユーザが増えるとマナーの悪いユーザも増えてしまい、最近では動物写真以外の画像が投稿され、ユーザ に不快な思いをさせる事態が散見されます。 • AI Animalsでは動物が写っていない写真(ただし人間は動物と判断しない)の投稿は禁止 しています。禁止事項に該当する画像は違反画像として公開停止対象とします。 • 機械学習エンジニアであるあなたは、毎日5万枚の写真が投稿されるAI Animalsで、 違反画像を効率的に検知して公開停止にするプロジェクトに参加します。 • 機械学習で違反画像を検知するシステムを考案してください。
たくさんの疑問 • 違反画像検知の現状 • 違反画像検知の成功の定義は? ◦ 数字で計測できるか? • 違反とは? 違反画像とは? •
画像が投稿されてAI Animalsアプリで公開されるまでの流れ • 投稿されるのは画像だけ? • 画像のフォーマットは? • リリーススケジュール • 違反画像が公開されるリスク • 機械学習による違反検知が間違った場合の対処 • 違反を繰り返すユーザをどうするか • そもそも機械学習で違反検知を実施する価値は? • 人間の目視確認では駄目? • ・・・
違反検知の現状のワークフロー 動物大好きアプリ 動物大好きアプリ • 社内のメンバーが違反画像を目視確認している。 • 投稿された画像は公開されると同時に全て 違反確認待ちリストに追加され、メンバーが 確認。 •
違反の場合は公開停止。違反テーブルに登録する。 • 違反ではない場合はそのまま公開維持。
開発の前にデータ 機械学習には大量のデータが必要 • 集める • アノテーション • 管理する 正常 違反
集める アノテーション 管理する データ 違反 違反項目 false NULL false NULL true human true patent
アノテーション • データにラベルを付ける作業。 • AI Animalsの違反検知の場合、 画像データに「正常」ラベルと 「違反」ラベルをつけていく。 • 「違反」が複数種類ある場合、それぞれの
「違反」ラベルを付けることもある。 • AI Animalsにはすでに10,000,000点以上の 画像が存在するため、すべての画像にラベルを 付けるのは社内メンバーだけでは不可能。 正常 動物ではない 違反 動物 グロ 画像 グロ画像違反 動物 グロ 画像
実験して性能を評価する 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 実験を繰り返して性能を評価する。 必要に応じてDataやPlanに戻る。
ここでGPUや分散処理→コスト増大。 正常 違反 性能が低い データが足りない 遅い 戻る
違反検知のワークフローを考える
バックエンド 違反検知システム データベース システムを設計する キュー 違反検知機械学習 登録処理 違反検知待ち 違反登録待ち 1.
投稿 2.1. 画像データを 登録 2.3. 画像IDを登録 画像 ストレージ 2.2. 画像を登録 3. 画像IDを取得 4. 画像データを 取得 5. 違反を登録 6. 違反を取得 7. 違反を登録、 画像の公開停止 違反時のみ実行 常時実行 8. 違反画像を ダブルチェック ↑ ボトルネック ボトルネック ↓
実験的なコード:頻繁に書き直す、 途中から実行、使い捨て 本番コード: 動かし続ける、再現性、 デバッグ 実験的なコードを清書する 写真を撮る タイトル入力 説明入力 登録する
ねこ AI Animals 正常 違反 動かし方がわからない・・・
Jupyter NotebookからPythonに書き直す • Jupyter Notebookは機械学習の実験や レポートを作るためのツール。 • Jupyter Notebookのままではソフトウェアに 組み込むことはできない。
• Pythonは.pyファイルに書き直す必要がある。
違反検知モデルを学習するシステム データ取得 前処理 学習 評価 ビルド • データパイプラインや MLパイプラインのワークフローは DAG(有向非巡回グラフ)として定義。
• DWHやストレージから取得したデータを各フローで処 理し、結果をモデルレポジトリに記録。 • モデル生成後にビルド。ビルドのアウトプットは実行環 境含めてDockerイメージとしてビルドすることもあれ ば、モデルのみをビルドし、実行環境はメタデータとし て定義することもある。 • メタデータにはモデルの学習、評価に使った 再現可能なデータ、パラメータ、評価値を登録。 DWH ストレージ Hold out test メタデータ モデルレポジトリ Image builder Docker registry Docker registry パラメータ チューニング
しかしそれは始まりでしかなかった・・・ リリース・・・ 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 正常
違反
偽陽性と偽陰性 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 偽陽性:違反なのに正常と判定。 偽陰性:正常なのに違反と判定。
データの品質や網羅性が足りないと、 偽陽性や偽陰性が高くなる。 同じ間違いでも、ビジネス的な影響は異なる。 正常なのに 違反と判定された 投稿者は不快 閲覧者は不快 違反なのに 正常扱い
ヒューマンインザループ 写真を撮る タイトル入力 説明入力 登録する ねこ 動物大好きアプリ 自動化が進んだ仕組みにおいて、 一部の判断に人間を介在させること。 機械学習の誤りを正すためには人間の
ダブルチェックが必要。 正常 違反 違反と間違え やすい正常 正常と間違え やすい違反 アノテーションしてデータを作る!
正常 違反 推測するな計測せよ 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals
機械学習の判定と実用上の価値を評価する。 評価に応じて次のActionを決める。 正答率: xx Precision: yy Recall: zz 違反画像閲覧数: aa クレーム数: bb コスト: cc Go: 改善Plan No Go: 停止措置
推測するな計測せよ • 2022年8月1日から機械学習による違反検知を導入開始して、 10月31日まで運用した結果。 見逃さない 調査する 仮説を立てる 対策する
機械学習システム 検索編
自動化しなければ成り立たないシステム • データの変化が激しく、追随する必要がある場合、機械学習のシステムをEnd-to-endで自動化する 必要がある。 • 検索やレコメンデーションで機械学習を使う場合、実験や評価は人間の作業が必要な一方で、 学習、デプロイ、推論の過程は自動化することが望ましい。 • 初期の開発(Dev)は人間が評価しつつ、運用開始後(Ops)のプロセスはデータ追加含めて 自動化する。
機械学習を使ったプロダクト 画像処理 自然言語処理 検索 ランク学習による 並べ替え 画像検索 Query Understanding AI
Animals
類似画像検索 • 似ている画像を検索する技術。 • クエリの画像からディープラーニングで特徴量を抽出し、その 特徴量に似た特徴を持つ画像を返す。 DL 特徴量 特徴量抽出 類似ベクトル検索
類似画像検索の評価 • 似ているかどうかは人間の主観。 • 全件検査はN:Nの比較となり実質不可能。 • 同一個体で比較、同じ猫種や犬種に絞って比較等、評価対象を減らす工夫をする。 DL 特徴量 特徴量抽出
類似ベクトル検索 似てる?
Argo Workflow ワークフローエンジン 学習のパイプライン 類似画像検索Tensorflow Serving MobileNet v3 + SCaNN
画像 ストレージ 3. デプロイ 0. 投稿 類似画像検索学習 DL 特徴量 SCaNN 1. 学習 2. ビルド • ディープラーニングによる特徴量抽出: 画像をベクトル(数値表現)に変換 • SCaNN:似ているベクトルを検索 AI Animals
類似画像検索Tensorflow Serving MobileNet v3 + SCaNN 推論のパイプライン バックエンドAPI 類似画像検索プロキシ 1.
類似画像検索 4. 類似画像検索 2. 類似画像検索 画像 ストレージ 3. クエリ画像を取 得 DL 特徴量 SCaNN 5. 類似画像 AI Animals
学習と推論のパイプライン バックエンドAPI 類似画像検索プロキシ 類似画像検索Tensorflow Serving MobileNet v3 + SCaNN Argo
Workflow ワークフローエンジン 類似画像検索学習 Tensorflow Serving デプロイ 類似画像検索プロキシ デプロイ 類似画像検索 類似画像検索の学習 1. 類似画像検索 4. 類似画像検索 2. 類似画像検索 画像 ストレージ 3. クエリ画像を取 得 1. 検索対象画像を収集 2. モデルを更新 3. リクエスト先の Tensorflow Servingを 更新 AI Animals
まとめ
機械学習を実用化する • 課題を解決するためにデータを含めて End to endで考える。 • そのための解決策(ワークフロー、システム、チーム)を段階的に作る。 • データに基づいて試し、評価し、
GO/NO GOを判断する。
• 発売中! • https://www.amazon.co.jp/dp/4798173401/ • https://github.com/shibuiwilliam/building-ml-system • 発売中! • https://www.amazon.co.jp/dp/4798169447/
MLOpsコミュニティ • 機械学習の実用化を学ぶコミュニティ。毎月 MLOps勉強会を開催中! • 11/29(水)、12/18(月)にMLOps勉強会を開催します!
MLOps Advent Calendar 2023 今年1年で得た知見をぜひ共有してください! https://qiita.com/advent-calendar/2023/mlops