Slide 1

Slide 1 text

機械学習システム 構築実践ガイド 2023/11/28 shibui yusuke

Slide 2

Slide 2 text

自己紹介 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

Slide 3

Slide 3 text

技術評論社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についてあまり他では取り上げないようなテーマを 中心に記事を書いています!

Slide 4

Slide 4 text

● 発売中! ● https://www.amazon.co.jp/dp/4798173401/ ● https://github.com/shibuiwilliam/building-ml-system ● 発売中! ● https://www.amazon.co.jp/dp/4798169447/

Slide 5

Slide 5 text

● 発売中! ● https://www.amazon.co.jp/dp/4798173401/ ● https://github.com/shibuiwilliam/building-ml-system 今日はこちらの本の話。 機械学習システムを実用化する
 設計・開発・運用ノウハウが満載
 【本書の概要】
 本書は前著『AIエンジニアのための機械学習システム
 デザインパターン』では触れられなかった、
 機械学習システムを構築する上で実際に発生する
 課題を想定し、動いているシステムやワークフローに
 機械学習を組み込む方法を解説した書籍です。
 - 需要予測のためのバッチシステム
 - 違反検知システム
 - ランク学習による検索
 - 類似画像検索システム


Slide 6

Slide 6 text

● 発売中! ● https://www.amazon.co.jp/dp/4798173401/ ● https://github.com/shibuiwilliam/building-ml-system

Slide 7

Slide 7 text

今日話すこと ● 機械学習の実用化の課題 ● 違反検知システム ● 類似画像検索システム ● まとめ ● 今日のスライド <TODO>

Slide 8

Slide 8 text

機械学習の実用化の課題

Slide 9

Slide 9 text

機械学習の実用化の課題 ● 機械学習チームのソフトウェア開発の理解不足 ● ソフトウェア開発チームの機械学習の理解不足 ● 機械学習を0->1だけで終わらせているプロジェクトを散見 → 機械学習を実用化するワークフロー、システム、チーム

Slide 10

Slide 10 text

最近の機械学習界隈 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

Slide 11

Slide 11 text

最近の機械学習界隈の状況 ● 研究から利用、利用から実用へ データ 機械学習 デプロイ 利用 課題 ユーザ システム 解決 開発 課題を解くためのワークフロー ワークフローを実現するシステム システムを開発、運用するチーム

Slide 12

Slide 12 text

最近の機械学習界隈の状況 ● 研究から利用、利用から実用へ データ 機械学習 デプロイ 利用 課題 ユーザ システム 解決 開発 ここの方法論は増えてきた 課題からデータまで紐づけて 解決できるスキルが求められている

Slide 13

Slide 13 text

ユーザに使われる機械学習へ 固定化された デザイン 画像処理 写真を撮る タイトル入力 説明入力 投稿する 自然言語処理 違反検知 あるコンテンツ投稿アプリ

Slide 14

Slide 14 text

機械学習を使ったプロダクト 画像処理 写真を撮る タイトル入力 説明入力 投稿する 自然言語処理 違反検知 登録情報から違反を フィルタリング 入力情報から 入力補助 超解像による 画質改善 ねこ 検索 協調フィルタリングや ランク学習による 並べ替え あるコンテンツ投稿アプリ 画像分類と 検索

Slide 15

Slide 15 text

機械学習を使うための技術 写真を撮る タイトル入力 説明入力 投稿する ねこ 動物画像SNSアプリ ログ DB Storage 監視 学習 モデル proxy 画像 API 推論 API batch デプ ロイ 認証 認可 ID 検索 API Item API 推薦 API BI クラウド・インフラ

Slide 16

Slide 16 text

動物画像SNS『AI Animals』

Slide 17

Slide 17 text

バックエ ンドAPI Elastic Search Postgre SQL Storage Argo Workflow MLflow キャッシュ Prome theus RabbitMQ Grafana 検索ML 違反検知 システム AI Animals全体像

Slide 18

Slide 18 text

システムとワークフロー 写真を撮る タイトル入力 説明入力 投稿する AI Animals ねこ 機械学習 データ 評価 DWH 推論 API 推論 batch BI 評価 アノテー ション 学習 Pipeline ML 基盤 投稿 API 利用

Slide 19

Slide 19 text

AI Animals 機械学習を実用化するチーム 写真を撮る タイトル入力 説明入力 投稿する ねこ 機械学習 データ DWH 推論 API 推論 batch BI 評価 アノテー ション 学習 Pipeline ML 基盤 データ ML SWE アノテーション PdM 投稿 API

Slide 20

Slide 20 text

機械学習システム 違反検知編

Slide 21

Slide 21 text

違反とは 写真を撮る タイトル入力 説明入力 登録する ねこ 公序良俗に反する画像 著作権違反の画像 グロテスクな画像 サービスに則さない画像 ・・・を違反として排除したい AI Animals

Slide 22

Slide 22 text

違反検知を考える ● あなたはスマホアプリAI Animalsを提供する会社で働く機械学習エンジニアです。 ● AI Animalsではユーザがスマホから動物写真を投稿し、共有することができます。 ● 可愛い動物写真がみつかることで好評で、リリース1年で月間アクティブ・ユーザ数が50,000人、 動物写真の総投稿数が10,000,000件を突破しました。 ● ユーザが増えるとマナーの悪いユーザも増えてしまい、最近では動物写真以外の画像が投稿され、ユーザ に不快な思いをさせる事態が散見されます。 ● AI Animalsでは動物が写っていない写真(ただし人間は動物と判断しない)の投稿は禁止 しています。禁止事項に該当する画像は違反画像として公開停止対象とします。 ● 機械学習エンジニアであるあなたは、毎日5万枚の写真が投稿されるAI Animalsで、 違反画像を効率的に検知して公開停止にするプロジェクトに参加します。 ● 機械学習で違反画像を検知するシステムを考案してください。

Slide 23

Slide 23 text

たくさんの疑問 ● 違反画像検知の現状 ● 違反画像検知の成功の定義は? ○ 数字で計測できるか? ● 違反とは? 違反画像とは? ● 画像が投稿されてAI Animalsアプリで公開されるまでの流れ ● 投稿されるのは画像だけ? ● 画像のフォーマットは? ● リリーススケジュール ● 違反画像が公開されるリスク ● 機械学習による違反検知が間違った場合の対処 ● 違反を繰り返すユーザをどうするか ● そもそも機械学習で違反検知を実施する価値は? ● 人間の目視確認では駄目? ● ・・・

Slide 24

Slide 24 text

違反検知の現状のワークフロー 動物大好きアプリ 動物大好きアプリ ● 社内のメンバーが違反画像を目視確認している。 ● 投稿された画像は公開されると同時に全て 違反確認待ちリストに追加され、メンバーが 確認。 ● 違反の場合は公開停止。違反テーブルに登録する。 ● 違反ではない場合はそのまま公開維持。

Slide 25

Slide 25 text

開発の前にデータ 機械学習には大量のデータが必要 ● 集める ● アノテーション ● 管理する 正常 違反 集める アノテーション 管理する データ 違反 違反項目 false NULL false NULL true human true patent

Slide 26

Slide 26 text

アノテーション ● データにラベルを付ける作業。 ● AI Animalsの違反検知の場合、 画像データに「正常」ラベルと 「違反」ラベルをつけていく。 ● 「違反」が複数種類ある場合、それぞれの 「違反」ラベルを付けることもある。 ● AI Animalsにはすでに10,000,000点以上の 画像が存在するため、すべての画像にラベルを 付けるのは社内メンバーだけでは不可能。 正常 動物ではない 違反 動物 グロ 画像 グロ画像違反 動物 グロ 画像

Slide 27

Slide 27 text

実験して性能を評価する 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 実験を繰り返して性能を評価する。 必要に応じてDataやPlanに戻る。 ここでGPUや分散処理→コスト増大。 正常 違反 性能が低い データが足りない 遅い 戻る

Slide 28

Slide 28 text

違反検知のワークフローを考える

Slide 29

Slide 29 text

バックエンド 違反検知システム データベース システムを設計する キュー 違反検知機械学習 登録処理 違反検知待ち 違反登録待ち 1. 投稿 2.1. 画像データを 登録 2.3. 画像IDを登録 画像 ストレージ 2.2. 画像を登録 3. 画像IDを取得 4. 画像データを 取得 5. 違反を登録 6. 違反を取得 7. 違反を登録、 画像の公開停止 違反時のみ実行 常時実行 8. 違反画像を ダブルチェック ↑ ボトルネック ボトルネック ↓

Slide 30

Slide 30 text

実験的なコード:頻繁に書き直す、 途中から実行、使い捨て 本番コード: 動かし続ける、再現性、 デバッグ 実験的なコードを清書する 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 正常 違反 動かし方がわからない・・・

Slide 31

Slide 31 text

Jupyter NotebookからPythonに書き直す ● Jupyter Notebookは機械学習の実験や レポートを作るためのツール。 ● Jupyter Notebookのままではソフトウェアに 組み込むことはできない。 ● Pythonは.pyファイルに書き直す必要がある。

Slide 32

Slide 32 text

違反検知モデルを学習するシステム データ取得 前処理 学習 評価 ビルド ● データパイプラインや MLパイプラインのワークフローは DAG(有向非巡回グラフ)として定義。 ● DWHやストレージから取得したデータを各フローで処 理し、結果をモデルレポジトリに記録。 ● モデル生成後にビルド。ビルドのアウトプットは実行環 境含めてDockerイメージとしてビルドすることもあれ ば、モデルのみをビルドし、実行環境はメタデータとし て定義することもある。 ● メタデータにはモデルの学習、評価に使った 再現可能なデータ、パラメータ、評価値を登録。 DWH ストレージ Hold out test メタデータ モデルレポジトリ Image builder Docker registry Docker registry パラメータ チューニング

Slide 33

Slide 33 text

しかしそれは始まりでしかなかった・・・ リリース・・・ 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 正常 違反

Slide 34

Slide 34 text

偽陽性と偽陰性 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 偽陽性:違反なのに正常と判定。 偽陰性:正常なのに違反と判定。 データの品質や網羅性が足りないと、 偽陽性や偽陰性が高くなる。 同じ間違いでも、ビジネス的な影響は異なる。 正常なのに 違反と判定された 投稿者は不快 閲覧者は不快 違反なのに 正常扱い

Slide 35

Slide 35 text

ヒューマンインザループ 写真を撮る タイトル入力 説明入力 登録する ねこ 動物大好きアプリ 自動化が進んだ仕組みにおいて、 一部の判断に人間を介在させること。 機械学習の誤りを正すためには人間の ダブルチェックが必要。 正常 違反 違反と間違え やすい正常 正常と間違え やすい違反 アノテーションしてデータを作る!

Slide 36

Slide 36 text

正常 違反 推測するな計測せよ 写真を撮る タイトル入力 説明入力 登録する ねこ AI Animals 機械学習の判定と実用上の価値を評価する。 評価に応じて次のActionを決める。 正答率: xx Precision: yy Recall: zz 違反画像閲覧数: aa クレーム数: bb コスト: cc Go: 改善Plan No Go: 停止措置

Slide 37

Slide 37 text

推測するな計測せよ ● 2022年8月1日から機械学習による違反検知を導入開始して、 10月31日まで運用した結果。 見逃さない 調査する 仮説を立てる 対策する

Slide 38

Slide 38 text

機械学習システム 検索編

Slide 39

Slide 39 text

自動化しなければ成り立たないシステム ● データの変化が激しく、追随する必要がある場合、機械学習のシステムをEnd-to-endで自動化する 必要がある。 ● 検索やレコメンデーションで機械学習を使う場合、実験や評価は人間の作業が必要な一方で、 学習、デプロイ、推論の過程は自動化することが望ましい。 ● 初期の開発(Dev)は人間が評価しつつ、運用開始後(Ops)のプロセスはデータ追加含めて 自動化する。

Slide 40

Slide 40 text

機械学習を使ったプロダクト 画像処理 自然言語処理 検索 ランク学習による 並べ替え 画像検索 Query Understanding AI Animals

Slide 41

Slide 41 text

類似画像検索 ● 似ている画像を検索する技術。 ● クエリの画像からディープラーニングで特徴量を抽出し、その 特徴量に似た特徴を持つ画像を返す。 DL 特徴量 特徴量抽出 類似ベクトル検索

Slide 42

Slide 42 text

類似画像検索の評価 ● 似ているかどうかは人間の主観。 ● 全件検査はN:Nの比較となり実質不可能。 ● 同一個体で比較、同じ猫種や犬種に絞って比較等、評価対象を減らす工夫をする。 DL 特徴量 特徴量抽出 類似ベクトル検索 似てる?

Slide 43

Slide 43 text

Argo Workflow ワークフローエンジン 学習のパイプライン 類似画像検索Tensorflow Serving MobileNet v3 + SCaNN 画像 ストレージ 3. デプロイ 0. 投稿 類似画像検索学習 DL 特徴量 SCaNN 1. 学習 2. ビルド ● ディープラーニングによる特徴量抽出: 画像をベクトル(数値表現)に変換 ● SCaNN:似ているベクトルを検索 AI Animals

Slide 44

Slide 44 text

類似画像検索Tensorflow Serving MobileNet v3 + SCaNN 推論のパイプライン バックエンドAPI 類似画像検索プロキシ 1. 類似画像検索 4. 類似画像検索 2. 類似画像検索 画像 ストレージ 3. クエリ画像を取 得 DL 特徴量 SCaNN 5. 類似画像 AI Animals

Slide 45

Slide 45 text

学習と推論のパイプライン バックエンドAPI 類似画像検索プロキシ 類似画像検索Tensorflow Serving MobileNet v3 + SCaNN Argo Workflow ワークフローエンジン 類似画像検索学習 Tensorflow Serving デプロイ 類似画像検索プロキシ デプロイ 類似画像検索 類似画像検索の学習 1. 類似画像検索 4. 類似画像検索 2. 類似画像検索 画像 ストレージ 3. クエリ画像を取 得 1. 検索対象画像を収集 2. モデルを更新 3. リクエスト先の Tensorflow Servingを 更新 AI Animals

Slide 46

Slide 46 text

まとめ

Slide 47

Slide 47 text

機械学習を実用化する ● 課題を解決するためにデータを含めて End to endで考える。 ● そのための解決策(ワークフロー、システム、チーム)を段階的に作る。 ● データに基づいて試し、評価し、 GO/NO GOを判断する。

Slide 48

Slide 48 text

● 発売中! ● https://www.amazon.co.jp/dp/4798173401/ ● https://github.com/shibuiwilliam/building-ml-system ● 発売中! ● https://www.amazon.co.jp/dp/4798169447/

Slide 49

Slide 49 text

MLOpsコミュニティ ● 機械学習の実用化を学ぶコミュニティ。毎月 MLOps勉強会を開催中! ● 11/29(水)、12/18(月)にMLOps勉強会を開催します!

Slide 50

Slide 50 text

MLOps Advent Calendar 2023 今年1年で得た知見をぜひ共有してください! https://qiita.com/advent-calendar/2023/mlops