# 機械学習システムデザイン ## 概要 Chip Huyen による *Designing Machine Learning Systems* (O'Reilly, 2022) の日本語訳。モデルのアルゴリズムではなく、実運用に載る機械学習システム**全体**——ビジネス目標の翻訳、データエンジニアリング、訓練データ、特徴エンジニアリング、モデル開発と評価、デプロイ、分布シフトと監視、継続学習、インフラとツール、人的側面——を、反復的な設計プロセスとして一冊で扱う。スタンフォード大学の講義「CS 329S: Machine Learning Systems Design」の講義資料がベースになっている。(Source: 本書 著者紹介) ## 書誌情報 - 書名: 機械学習システムデザイン ―実運用レベルのアプリケーションを実現する継続的反復プロセス - 原書: *Designing Machine Learning Systems: An Iterative Process for Production-Ready Applications* (O'Reilly Media, 2022) - 著者: [[Chip Huyen]] - 訳者: 江川崇、平山順一 - 出版社: 株式会社オライリー・ジャパン(発売: 株式会社オーム社) - 発行日: 2023 年 8 月 30 日(初版第 1 刷) - ISBN: 978-4-8144-0040-9 - 構成: 全 11 章 + 付録 A + あとがき(本文 408 ページ)。**付録 A は原著になく、日本語版のために書き下ろされた寄稿**である - 原本: `.raw/books/designing-machine-learning-systems/` ## 構成と主要テーマ 本書に Part 区分はない。11 章がおおよそ「設計の枠組み(1〜2 章)→ データ(3〜5 章)→ モデル(6 章)→ 実運用(7〜9 章)→ 基盤と人(10〜11 章)」という順で並ぶ。 ### 設計の枠組み(1〜2 章) 機械学習を使うべきか、使うならどう問題を立てるかを扱う。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 1 機械学習システムの概要]] — 機械学習を使うべき条件と使うべきでない条件を整理したうえで、研究の機械学習と実現場の機械学習の違い(要求・計算優先度・データ・公正さ・説明能力)、および機械学習システムと従来のソフトウェアエンジニアリングの違いを論じ、本書全体の見取り図を与える。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 2 機械学習システム設計の概要]] — ビジネス目標に沿った目標設定と信頼性・拡張性・保守性・適応性の 4 要件を土台に、反復型プロセスで開発し、問題を入力・出力・目的関数として組み立てる。目的の分割(デカップリング)が難易度を左右する。 ### データ(3〜5 章) 機械学習システムの成否を握るデータ側の工学を、基盤・訓練データ・特徴の 3 層で扱う。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 3 データエンジニアリングの基礎知識]] — データフォーマット(行優先・列優先)、データモデル(リレーショナル・ドキュメント・グラフ)、ストレージエンジン(OLTP・OLAP・ETL)、データフローの 3 形態(データベース経由・サービス経由・リアルタイム伝送経由)、バッチ処理とストリーム処理という、機械学習システムを支えるデータ工学の基礎を一通り解説する。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 4 訓練データ]] — 質のよい訓練データを手に入れる技法として、サンプリング手法、ラベル付けの課題(手作業のラベル・天然のラベル・ラベル不足への対処)、クラスの不均衡、データオーグメンテーションを扱う。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] — 特徴エンジニアリングの一般的手法(欠損値処理・スケーリング・離散化・カテゴリーエンコード・特徴交差・位置埋め込み)を概観したうえで、実現場のシステムを頓挫させるデータリークの原因と検出法を詳述し、優れた特徴を重要度と汎化性の 2 軸で評価する方法を示す。 ### モデル(6 章) → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 6 モデル開発とオフライン評価]] — モデル選択の 6 指針・アンサンブル・実験管理とバージョン管理・分散訓練・AutoML というモデル開発の実務と、ベースライン比較を前提に摂動テスト・不変性テスト・方向性期待値テスト・キャリブレーション・信頼度測定・スライスベースの評価を組み合わせるオフライン評価の手法群を扱う。 ### 実運用(7〜9 章) デプロイしてからが本番であるという本書の中心的な主張を、予測サービス・監視・継続学習の 3 章で展開する。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 7 モデルのデプロイと予測サービス]] — デプロイに関する誤解の解消から、バッチ予測とオンライン予測の対比、モデル圧縮(低ランク分解・知識蒸留・枝刈り・量子化)、クラウドとエッジのハードウェア最適化まで、モデルデプロイをエンジニアリング課題として体系的に扱う。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] — 実環境デプロイ後の障害を整理したうえで、データ分布のシフト(共変量シフト・ラベルシフト・コンセプトドリフト)を数学的に定義し、その検知と対処、および機械学習特有の監視対象(精度・予測・特徴・生入力)と監視ツールボックス、可観測性との違いを説明する。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] — 継続学習(ステートレス再訓練とステートフル訓練の区別、導入の 4 段階、データの鮮度の価値による更新頻度の決定)と、静的なオフライン評価の限界を補う実環境でのテスト(シャドウデプロイ・A/Bテスト・カナリアリリース・インターリービング・バンディット)を扱う。 ### 基盤と人(10〜11 章) → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 10 MLOpsにおけるインフラとツール]] — ストレージとコンピューティング、リソース管理、機械学習プラットフォーム、開発環境の 4 層で MLOps インフラを整理し、下位ほどコモディティ化が進むという構図と、構築するか購入するかの判断指針を示す。 → [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 11 機械学習の人的側面]] — 機械学習システムの確率論的性質がもたらすユーザー体験の課題、チーム構成(別チーム対エンドツーエンドのデータサイエンティスト)、そして責任あるAI(Ofqual・Strava の失敗事例と実装レベルの枠組み)を扱う。 ### 付録(日本語版オリジナル) → [[@2023__OReillyJapan__機械学習システムデザイン - Appendix A 機械学習システムを外部に提供する]] — 原著にない日本語版独自の寄稿([[宮川大輔]]・[[株式会社JDSC]])。機械学習システムを外部の顧客企業に受託して構築する際に固有の、契約(準委任契約・ステアリングコミッティ)・データパイプライン設計・コンプライアンス・利害関係者管理・「PoC ゾンビ」回避といった論点を、仮想事例を通じて論じる。 なお「あとがき」(印字 p.373-374)は著者から読者への短い謝辞であり、source ページ化していない。 ## 影響と位置づけ - 本書はモデルのアルゴリズムではなく**システム全体**を主題に据える。1 章の図1-1 が示すとおり、機械学習アルゴリズムは機械学習システムの一構成要素にすぎず、データ・インフラ・インターフェイス・チームがその周囲を占める。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 1 機械学習システムの概要]] §1.2) - 反復型プロセスという枠組みは書名の副題(「実運用レベルのアプリケーションを実現する継続的反復プロセス」)そのものであり、2 章の開発プロセス、9 章の継続学習、8 章の監視が同じ環の別の側面として設計されている。監視は受動的な検知に留まり、能動的な適応は継続学習が担うという役割分担が、8 章から 9 章への接続に明示されている。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] §8.3.3) - vault 内では『[[仕事ではじめる機械学習]]』(実務導入の手引き)、『[[信頼性の高い機械学習]]』(SRE 視点の運用)と三点測量の関係にある。本書はその中間で、設計判断の空間そのものを列挙する役割を担う。 - 日本語版は付録 A に日本国内の受託開発文脈を追加しており、原著が前提とする自社プロダクト開発とは異なる、契約と組織の制約下での機械学習システム開発を補っている。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Appendix A 機械学習システムを外部に提供する]] §A.1) ## 関連 - 人物: [[Chip Huyen]](著者) / [[宮川大輔]](付録 A 執筆) - 組織: [[株式会社JDSC]] - 概念(本書から新設): [[機械学習システムの4要件]] / [[目的関数のデカップリング]] / [[サンプリング手法]] / [[天然ラベル]] / [[ラベル不足への対処]] / [[クラス不均衡]] / [[データオーグメンテーション]] / [[データリーク]] / [[特徴の汎化]] / [[モデル評価のベースライン]] / [[摂動テストと不変性テスト]] / [[モデルのキャリブレーションと信頼度測定]] / [[推論最適化]] / [[データ分布のシフト]] / [[シャドウデプロイ]] / [[インターリービング試験]] - 概念(本書で積み増した主なもの): [[機械学習システムの設計パターン]] / [[機械学習の要否判断]] / [[機械学習プロジェクトの進め方]] / [[MLモデル監視]] / [[継続的トレーニング]] / [[特徴量ストア]] / [[モデル圧縮]] / [[機械学習基盤]] / [[MLメタデータ管理]] / [[責任あるAI]] ## 出典 - Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン ―実運用レベルのアプリケーションを実現する継続的反復プロセス』, オライリー・ジャパン, 2023.