本書では、ソフトウェアシステムの信頼性と安定性を保つことに優れたアプローチであるSRE(サイトリライアビリティエンジニアリング)の原則を適用し、信頼性が高く、効果的で、責任のある機械学習システムを構築し運用するための方法を紹介します。毛糸を販売している仮想のオンラインストア「yarnit.ai」を例に用いつつ、本番環境でのモデルモニタリングの方法から、製品開発組織で調整されたモデル開発チームを運営する方法まで解説します。最後の15章では、MLOpsから見た特定の問題や課題を6つのケーススタディとともに紹介しています。また、データを正しく責任を持って扱うこと、信頼できるモデルを構築すること、運用環境へのスムーズな(そして可逆的な)道筋を確保すること、更新の安全性、コスト、パフォーマンス、 ビジネス目標、組織構造に関する懸念など、あまり論じられてこなかった機械学習のライフサイクル全体における諸側面に焦点を当てています。SREの視点から信頼性の高い機械学習システム運用を学ぶ1冊です。
信頼性の高い機械学習
―SRE原則を活用したMLOps
Cathy Chen、Niall Richard Murphy、Kranti Parisa、D. Sculley、Todd Underwood 著、井伊 篤彦、張 凡、樋口 千洋 訳
- TOPICS
- System/Network
- 発行年月日
- 2024年10月
- PRINT LENGTH
- 388
- ISBN
- 978-4-8144-0076-8
- 原書
- Reliable Machine Learning
- FORMAT
- Print PDF EPUB
目次
訳者まえがき 推薦の言葉 本書の上梓に寄せて まえがき 1章 はじめに 1.1 ML ライフサイクル 1.1.1 データ収集と分析 1.1.2 ML 訓練パイプライン 1.1.3 アプリケーションの構築と検証 1.1.4 品質と性能の評価 1.1.5 SLO の定義と測定 1.1.6 ローンチ 1.1.7 監視とフィードバックのループ 1.2 ML ループからの教訓 2章 データマネジメント 2.1 責任としてのデータ 2.2 ML パイプラインのデータ感度 2.3 データの段階 2.3.1 作成 2.3.2 取り込み 2.3.3 前処理 2.3.4 保管 2.3.5 管理 2.3.6 データ分析と可視化 2.4 データの信頼性 2.4.1 耐久性 2.4.2 一貫性 2.4.3 バージョン管理 2.4.4 性能 2.4.5 可用性 2.5 データの保守性 2.5.1 セキュリティ 2.5.2 プライバシー 2.5.3 ポリシーとコンプライアンス 2.6 まとめ 3章 ML モデルの基礎 3.1 ML モデルとは何か 3.2 基本的なML モデル作成のワークフロー 3.3 モデルアーキテクチャvs モデル定義vs 訓練済みモデル 3.4 脆弱性はどこにあるのか 3.4.1 訓練データ 3.4.2 ラベル 3.4.3 訓練方法 3.5 インフラとパイプライン 3.5.1 プラットフォーム 3.5.2 特徴量生成 3.5.3 アップグレードと改修 3.6 どんなモデルにも役立つ質問集 3.7 ML システムの例 3.7.1 毛糸のクリック予測モデル 3.7.2 特徴量 3.7.3 特徴量に対するラベル 3.7.4 モデルの更新 3.7.5 モデルの提供 3.7.6 一般的な失敗 3.8 まとめ 4章 特徴量と訓練データ 4.1 特徴量 4.1.1 特徴量選択と特徴量エンジニアリング 4.1.2 特徴量のライフサイクル 4.1.3 特徴量システム 4.2 ラベル 4.3 人間が生成したラベル 4.3.1 アノテーション作業 4.3.2 人間によるアノテーションの品質計測 4.3.3 アノテーションプラットフォーム 4.3.4 能動学習とAI アシストラベリング 4.3.5 文書化とラベル作成者のための訓練 4.4 メタデータ 4.4.1 メタデータシステムの概要 4.4.2 データセットのメタデータ 4.4.3 特徴量のメタデータ 4.4.4 ラベルのメタデータ 4.4.5 パイプラインのメタデータ 4.5 データのプライバシーと公平性 4.5.1 プライバシー 4.5.2 公平性 4.6 まとめ 5章 モデルの確実性と品質の評価 5.1 モデルの確実性の評価 5.2 モデル品質の評価 5.2.1 オフライン評価 5.2.2 評価分布 5.2.3 有用な評価指標 5.3 検証と評価の運用化 5.4 まとめ 6章 公正さ、プライバシー、倫理的なML システム 6.1 公正性(偏見との戦い) 6.1.1 公平性の定義 6.1.2 公平性の達成 6.1.3 終着点ではなくプロセスとしての公平性 6.1.4 法律上の注意 6.2 プライバシー 6.2.1 プライバシーを守る方法 6.2.2 法律上の注意 6.3 責任あるAI 6.3.1 説明性 6.3.2 有効性 6.3.3 社会的、文化的妥当性 6.4 ML パイプラインに沿った責任あるAI 6.4.1 ユースケースについてのブレインストーミング 6.4.2 データの収集とクレンジング 6.4.3 モデルの作成と訓練 6.4.4 モデルの検証と品質評価 6.4.5 モデルのデプロイメント 6.4.6 市場に向けた運用 6.5 まとめ 7章 ML モデル訓練システム 7.1 必要条件 7.2 基本的な訓練システムの導入 7.2.1 特徴量 7.2.2 特徴量ストア 7.2.3 モデル管理システム 7.2.4 オーケストレーション 7.2.5 品質評価 7.2.6 監視 7.3 一般的な信頼性の原則 7.3.1 ほとんどの障害はML の障害ではない 7.3.2 モデルは再訓練される 7.3.3 モデルは複数のバージョンを持つ(しかも同時に) 7.3.4 良いモデルもいずれ悪くなる 7.3.5 データが利用できなくなる 7.3.6 モデルは改善可能であるべき 7.3.7 特徴量は追加、変更される 7.3.8 モデルの訓練が速すぎる 7.3.9 リソースの活用は重要 7.3.10 リソース利用率は効率ではない 7.3.11 機能停止には復旧も含まれる 7.4 訓練の信頼性に関するよくある問題 7.4.1 データ感度 7.4.2 YarnIt でのデータ問題の例 7.4.3 再現性 7.4.4 YarnIt における再現性問題の例 7.4.5 計算リソース容量 7.4.6 YarnIt における容量問題の例 7.5 構造上の信頼性 7.5.1 組織の課題 7.5.2 倫理と公平性に関する考慮 7.6 まとめ 8章 サービス運用 8.1 モデルのサービス運用のための主要な質問 8.1.1 モデルにはどんな負荷がかかるだろうか 8.1.2 モデルの予測レイテンシに関する必要要件は何か 8.1.3 モデルはどこで稼働する必要があるのか 8.1.4 モデルにはどんなハードウェアが必要か 8.1.5 運用モデルではどのように保存され、ロードされ、バージョン管理され、更新されるのか 8.1.6 運用のための特徴量パイプラインはどのようなものになるか 8.2 モデル運用アーキテクチャ 8.2.1 オフライン運用(バッチ推論) 8.2.2 オンライン運用(オンライン推論) 8.2.3 サービスとしてのモデル 8.2.4 エッジでの運用 8.2.5 アーキテクチャの選択 8.3 モデルAPI デザイン 8.3.1 テスト 8.4 精度重視か回復性重視か 8.5 スケーリング 8.5.1 オートスケーリング 8.5.2 キャッシング 8.6 障害からの復旧 8.7 倫理と公平性への配慮 8.8 まとめ 9章 モデルの監視と可観測性 9.1 運用監視とは何か、なぜ行うのか 9.1.1 監視とはどのようなものか 9.1.2 ML が監視にもたらす懸念点 9.1.3 運用環境でML を観測し続ける理由 9.2 ML 運用監視の問題 9.2.1 運用に対する開発の難しさ 9.2.2 意識改革の必要性 9.3 ML モデル監視のベストプラクティス 9.3.1 一般的な運用前モデルへの推薦事項 9.3.2 訓練と再訓練 9.3.3 モデルの検証(運用開始前) 9.3.4 運用 9.3.5 その他考慮すべき事項 9.3.6 監視戦略に関する高レベルの推薦事項 9.4 まとめ 10章 継続的なML 10.1 継続的なML システムの解剖学 10.1.1 訓練事例 10.1.2 訓練用ラベル 10.1.3 悪いデータを取り除く 10.1.4 特徴量ストアとデータ管理 10.1.5 モデルのアップデート 10.1.6 運用環境への更新モデルのプッシュ 10.2 継続的なML システムについての観察 10.2.1 外界の出来事が私たちのシステムに影響を与える可能性 10.2.2 モデルによる訓練データへの影響 10.2.3 異なる時間スケールでの時間的な影響 10.2.4 緊急対応はリアルタイムで行う必要がある 10.2.5 新たなローンチには段階的な強化と安定したベースラインが必要 10.2.6 モデルはただリリースするたけでなく管理しなければならない 10.3 継続的な組織 10.4 非継続的なML システムを再考する 10.5 まとめ 11章 障害対応 11.1 障害管理の基本 11.1.1 障害の段階 11.1.2 障害対応の役割 11.2 ML を中心とした機能停止の分析 11.3 用語に関する注意:モデル 11.4 時間の事例 11.4.1 事例1:探しても何も見つからないケース 11.4.2 事例2:突然パートナーシステムが機能しなくなる 11.4.3 事例3:新しいサプライヤーを探すべきである 11.5 ML 障害管理の原則 11.5.1 指針 11.5.2 モデル開発者またはデータサイエンティスト 11.5.3 ソフトウェアエンジニア 11.5.4 ML のSRE もしくは運用エンジニア 11.5.5 運用マネージャーまたはビジネスリーダー 11.6 特別なトピック 11.6.1 運用エンジニアおよびML エンジニアリングと、モデリングとの比較 11.6.2 倫理的なオンコールエンジニア規約 11.7 まとめ 12章 製品とML の関わり方 12.1 様々なタイプの応用 12.2 アジャイルML とは何か 12.3 ML 製品開発フェーズ 12.3.1 発見と定義 12.3.2 ビジネス目標設定 12.3.3 MVP の構築と検証 12.3.4 モデルおよび製品開発 12.3.5 開発 12.3.6 サポートおよびメンテナンス 12.4 構築と購入の比較 12.4.1 モデル 12.4.2 データ処理インフラ 12.4.3 エンドツーエンドのプラットフォーム 12.4.4 意思決定のためのスコア付け方法 12.4.5 意思決定 12.5 ML を活用したYarnIt ストア機能の事例 12.5.1 人気の毛糸を総売上高別に紹介 12.5.2 閲覧履歴に基づく推薦 12.5.3 クロスセルとアップセル 12.5.4 コンテンツによるフィルタリング 12.5.5 協調フィルタリング 12.6 まとめ 13章 ML の組織への統合 13.1 前提 13.1.1 リーダー的視点 13.1.2 詳細事項 13.1.3 ML はビジネスについて知る必要がある 13.1.4 最も重要な前提条件 13.1.5 ML の価値 13.2 重大な組織リスク 13.2.1 ML は魔法ではありません 13.2.2 メンタル(考え方)モデルの慣性 13.2.3 異なる組織文化でのリスクを正しく表面化する 13.2.4 サイロ化したチームが全ての問題を解決できるわけではない 13.3 実装モデル 13.3.1 ゴールを思い出す 13.3.2 グリーンフィールドとブラウンフィールド 13.3.3 ML の役割と責任 13.3.4 ML 人材の雇用 13.4 組織設計とインセンティブ 13.4.1 戦略 13.4.2 構造 13.4.3 プロセス 13.4.4 報酬 13.4.5 人材 13.4.6 次のステップのためのノート 13.5 まとめ 14章 実践的なML 組織の事例 14.1 シナリオ1:新規集中型ML チーム 14.1.1 背景と組織の説明 14.1.2 プロセス 14.1.3 報奨 14.1.4 人材 14.1.5 標準の実施手順 14.2 シナリオ2:分散型ML インフラと専門知識 14.2.1 背景と組織の説明 14.2.2 プロセス 14.2.3 報奨 14.2.4 人材 14.2.5 標準の実施手順 14.3 シナリオ3:中央集権型インフラと分散型モデリングのハイブリッド 14.3.1 背景と組織の概要 14.3.2 プロセス 14.3.3 報奨 14.3.4 人材 14.3.5 標準の実現手順 14.4 まとめ 15章 ケーススタディ:MLOps の実践 15.1 ML パイプラインでのプライバシーとデータ保持ポリシーの対応 15.1.1 背景 15.1.2 問題と解決策 15.1.3 教訓 15.2 トラフィックに影響を与える連続的なML モデル 15.2.1 背景 15.2.2 問題と解決策 15.2.3 教訓 15.3 鋼材検査 15.3.1 背景 15.3.2 問題と解決策 15.3.3 教訓 15.4 NLP のMLOps:プロファイリングとステージング負荷テスト 15.4.1 背景 15.4.2 問題と解決策 15.4.3 教訓 15.5 広告クリック予測:データベース対現実 15.5.1 背景 15.5.2 問題と解決策 15.5.3 教訓 15.6 ML ワークフローにおける依存関係のテストと測定 15.6.1 背景 15.6.2 問題と解決策 15.6.3 教訓 索引 コラム目次 ステートフルシステムにおけるプログレッシブロールアウト 匿名化レベルの違いによるアプリケーション例 匿名化はとても困難です YarnIt の推薦に関するプライバシーポリシー ライフサイクルアクセスのパターン 特徴量の変換 ソリューショニズムについて 規範的価値観とは何か 公平性のためのアルゴリズムにフォールバックは必要か データアクセスガイドライン スキューに関する重要な注意事項 大きければ良いというわけではない