入門 機械学習パイプライン

―TensorFlowで学ぶワークフローの自動化

[cover photo]
TOPICS
System/Network
発行年月日
PRINT LENGTH
392
ISBN
978-4-87311-951-9
原書
Building Machine Learning Pipelines
FORMAT
Print PDF EPUB
Ebook
4,180円
Ebookを購入する
Print
4,180円

機械学習を用いた本番システムの構築には、データの前処理やモデルの学習、デプロイなどのステップが必要です。しかし、これらのステップは手動で実行されることが多く、エラーの原因となっています。そこで本書では、TensorFlowのエコシステムを使用した機械学習パイプラインの構築方法について学びます。パイプラインを用いて各ステップを自動化することで、レガシーなシステムの保守から解放され、新しいモデルの開発に集中できるようになります。

関連ファイル

目次

賞賛の声
序文
訳者まえがき
まえがき

1章 イントロダクション
    1.1 機械学習パイプラインの必要性
    1.2 機械学習パイプラインについて考えるべき時
    1.3 機械学習パイプラインの各ステップの概要
        1.3.1 データの取り込みとバージョン管理
        1.3.2 データの検証
        1.3.3 データの前処理
        1.3.4 モデルの学習とチューニング
        1.3.5 モデルの分析
        1.3.6 モデルのバージョン管理
        1.3.7 モデルのデプロイ
        1.3.8 フィードバックループ
        1.3.9 データプライバシー
    1.4 パイプラインオーケストレーション
        1.4.1 パイプラインオーケストレーションの必要性
        1.4.2 有向非巡回グラフ
    1.5 サンプルプロジェクト
        1.5.1 プロジェクト構造
        1.5.2 今回の機械学習モデル
        1.5.3 サンプルプロジェクトのゴール
    1.6 まとめ

2章 TensorFlow Extended入門
    2.1 TFXとは
    2.2 TFXのインストール
    2.3 TFXコンポーネントの概要
    2.4 ML Metadata
    2.5 インタラクティブパイプライン
    2.6 TFXの代替品
    2.7 Apache Beam入門
        2.7.1 セットアップ
        2.7.2 基礎的なデータパイプライン
    2.8 パイプライン実行の基礎
    2.9 まとめ

3章 データの取り込み
    3.1 データ取り込みの概念
        3.1.1 ローカルデータファイルの取り込み
        3.1.2 リモートデータファイルの取り込み
        3.1.3 データベースから直接取り込み
    3.2 データ準備
        3.2.1 データセットの分割
        3.2.2 スパン化したデータセット
        3.2.3 データセットのバージョン管理
    3.3 取り込み戦略
        3.3.1 構造化データ
        3.3.2 テキストデータ
        3.3.3 画像データ
    3.4 まとめ

4章 データ検証
    4.1 データ検証の必要性
    4.2 TFDV
        4.2.1 インストール
        4.2.2 統計量の生成
        4.2.3 スキーマの生成
    4.3 データに潜む問題の認識
        4.3.1 データセットの比較
        4.3.2 スキーマの更新
        4.3.3 データのスキューとドリフト
        4.3.4 バイアスのあるデータセット
        4.3.5 TFDVで行うデータのスライス
    4.4 GCP上で大規模データセットの処理
    4.5 TFDVと機械学習パイプラインの統合
    4.6 まとめ

5章 データ前処理
    5.1 データ前処理の必要性
        5.1.1 データセット全体のコンテキストでデータを前処理
        5.1.2 前処理のスケーリング
        5.1.3 学習―推論間のスキューを回避
        5.1.4 前処理とモデルを1つのアーティファクトとしてデプロイ
        5.1.5 パイプラインで前処理結果の確認
    5.2 TFTによるデータ前処理
        5.2.1 インストール
        5.2.2 前処理戦略
        5.2.3 ベストプラクティス
        5.2.4 TFTの関数
        5.2.5 TFT単体の実行
        5.2.6 TFTと機械学習パイプラインの統合
    5.3 まとめ

6章 モデルの学習
    6.1 サンプルプロジェクトのモデル定義
    6.2 TFXのTrainerコンポーネント
        6.2.1 run_fn関数
        6.2.2 Trainerコンポーネントの実行
        6.2.3 その他の検討事項
    6.3 インタラクティブパイプラインで使うTensorBoard
    6.4 分散戦略
    6.5 モデルのチューニング
        6.5.1 ハイパーパラメータチューニングの戦略
        6.5.2 TFXパイプラインでのハイパーパラメータチューニング
    6.6 まとめ

7章 モデル分析と検証
    7.1 モデルの分析方法
        7.1.1 分類の指標
        7.1.2 回帰の指標
    7.2 TensorFlow Model Analysis
        7.2.1 単一モデルの分析
        7.2.2 複数モデルの分析
    7.3 公平性のためのモデル分析
        7.3.1 TFMAでモデル予測のスライス
        7.3.2 Fairness Indicatorsを使ったカットオフ値の確認
        7.3.3 What-If Toolの掘り下げ
    7.4 モデルの説明可能性
        7.4.1 WITを用いた説明の生成
        7.4.2 その他説明可能性のテクニック
    7.5 TFXによる分析と検証
        7.5.1 ResolverNode
        7.5.2 Evaluatorコンポーネント
        7.5.3 Evaluatorコンポーネントによる検証
        7.5.4 Pusherコンポーネント
    7.6 まとめ

8章 TensorFlow Servingを用いたモデルのデプロイ
    8.1 シンプルなモデルサーバー
    8.2 PythonベースのAPIとしてモデルをデプロイする欠点
        8.2.1 コード分離の欠如
        8.2.2 モデルのバージョン管理の欠如
        8.2.3 非効率なモデルの推論
    8.3 TensorFlow Serving
    8.4 TensorFlow Servingのアーキテクチャ概要
    8.5 TensorFlow Serving用のモデルエクスポート
    8.6 モデルシグネチャ
        8.6.1 シグネチャメソッド
    8.7 エクスポートしたモデルの検査
        8.7.1 モデルの検査
        8.7.2 モデルのテスト
    8.8 TensorFlow Servingのセットアップ
        8.8.1 Dockerによるインストール
        8.8.2 Ubuntuにインストール
        8.8.3 TensorFlow Servingをソースからビルド
    8.9 TensorFlow Serverの設定
        8.9.1 単一モデルの設定
        8.9.2 複数モデルの設定
    8.10 REST 対 gRPC
        8.10.1 REST
        8.10.2 gRPC
    8.11 モデルサーバーで予測
        8.11.1 RESTで予測結果を取得
        8.11.2 gRPCからTensorFlow Servingを使用
    8.12 TensorFlow Servingを用いたモデルのA/Bテスト
    8.13 モデルのメタデータのリクエスト
        8.13.1 RESTによるリクエスト
        8.13.2 gRPCによるリクエスト
    8.14 バッチ推論リクエスト
    8.15 バッチ予測の設定
    8.16 その他TensorFlow Servingの最適化
    8.17 TensorFlow Servingの代替品
        8.17.1 BentoML
        8.17.2 Seldon
        8.17.3 GraphPipe
        8.17.4 Simple TensorFlow Serving
        8.17.5 MLflow
        8.17.6 Ray Serve
    8.18 クラウドへのデプロイ
        8.18.1 ユースケース
        8.18.2 GCPへのデプロイ
    8.19 TFXパイプラインを用いたモデルデプロイ
    8.20 まとめ

9章 TensorFlow Servingを使った高度なモデルデプロイ
    9.1 デプロイサイクルの分離
        9.1.1 ワークフローの概要
        9.1.2 リモートに置かれたモデル読み込みの最適化
    9.2 デプロイのためのモデル最適化
        9.2.1 量子化
        9.2.2 枝刈り
        9.2.3 蒸留
    9.3 TensorFlow ServingでTensorRTを使う
    9.4 TFLite
        9.4.1 TFLite でモデルを最適化するステップ
        9.4.2 TensorFlow ServingでTFLiteモデルの提供
    9.5 TensorFlow Servingインスタンスの監視
        9.5.1 Prometheusのセットアップ
        9.5.2 TensorFlow Serving Configuration
    9.6 TensorFlow ServingとKubernetesを用いたシンプルなスケーリング
    9.7 まとめ

10章 TFXの高度な機能
    10.1 パイプラインの高度なコンセプト
        10.1.1 複数のモデルを同時に学習
        10.1.2 TFLiteモデルのエクスポート
        10.1.3 ウォームスタートなモデル学習
    10.2 ヒューマンインザループ
        10.2.1 Slackコンポーネントのセットアップ
        10.2.2 Slackコンポーネントの使い方
    10.3 カスタムコンポーネント
        10.3.1 カスタムコンポーネントのユースケース
        10.3.2 カスタムコンポーネントをゼロから構築
        10.3.3 既存コンポーネントの再利用
    10.4 まとめ

11章 パイプラインPart 1: Apache BeamとApache Airflow
    11.1 オーケストレーションツールの選択
        11.1.1 Apache Beam
        11.1.2 Apache Airflow
        11.1.3 Kubeflow Pipelines
        11.1.4 AI Platform上のKubeflow Pipelines
    11.2 インタラクティブTFXパイプラインを本番パイプラインに変換
    11.3 シンプルなインタラクティブパイプラインをBeamとAirflow向けに変換
    11.4 Apache Beam入門
    11.5 Apache BeamでTFXパイプラインのオーケストレーション
    11.6 Apache Airflow入門
        11.6.1 インストールと初期設定
        11.6.2 Airflowの基礎的な例
    11.7 Apache AirflowでTFXパイプラインをオーケストレーション
        11.7.1 パイプラインの設定
        11.7.2 パイプラインの実行
    11.8 まとめ

12章 パイプラインPart 2: Kubeflow Pipelines
    12.1 入門 Kubeflow Pipelines
        12.1.1 インストールと初期設定
        12.1.2 インストールしたKubeflow Pipelinesへのアクセス
    12.2 Kubeflow Pipelinesを使用したTFXパイプラインのオーケストレーション
        12.2.1 パイプラインの設定
        12.2.2 パイプラインの実行
        12.2.3 Kubeflow Pipelinesの便利な機能
    12.3 Google Cloud AI Platformベースのパイプライン
        12.3.1 パイプラインの設定
        12.3.2 TFXパイプラインのセットアップ
        12.3.3 パイプラインの実行
    12.4 まとめ

13章 フィードバックループ
    13.1 明示的・暗黙的フィードバック
        13.1.1 データフライホイール
        13.1.2 実世界におけるフィードバックループ
    13.2 フィードバック収集のデザインパターン
        13.2.1 ユーザーが予測の結果として何らかの行動をとる
        13.2.2 ユーザーが予測の質を評価する
        13.2.3 ユーザーが予測を修正する
        13.2.4 クラウドソーシングによるアノテーション
        13.2.5 専門家によるアノテーション
        13.2.6 フィードバックの自動生成
    13.3 フィードバックループの追跡方法
        13.3.1 明示的フィードバックの追跡
        13.3.2 暗黙的フィードバックの追跡
    13.4 まとめ

14章 機械学習のためのデータプライバシー
    14.1 データプライバシーの問題
        14.1.1 データプライバシーを気にする理由
        14.1.2 プライバシーを高めるもっともシンプルな方法
        14.1.3 秘密にしておく必要があるデータ
    14.2 差分プライバシー
        14.2.1 局所的・大域的差分プライバシー
        14.2.2 イプシロン、デルタ、そしてプライバシー予算
        14.2.3 機械学習のための差分プライバシー
    14.3 入門 TensorFlow Privacy
        14.3.1 差分プライベートオプティマイザを用いた学習
        14.3.2 イプシロンの計算
    14.4 Federated Learning
        14.4.1 TensorFlowにおけるFederated Learning
    14.5 暗号化された機械学習
        14.5.1 暗号化されたモデル学習
        14.5.2 暗号化された予測を提供するために学習済みモデルを変換
    14.6 他のデータプライバシー手法
    14.7 まとめ

15章 パイプラインの未来と次のステップ
    15.1 モデルの実験追跡
    15.2 モデルのリリース管理の考え方
    15.3 将来的なパイプラインの能力
    15.4 TFXと他の機械学習フレームワーク
    15.5 機械学習モデルのテスト
    15.6 機械学習のためのCI/CD
    15.7 機械学習エンジニアリングのコミュニティ
    15.8 まとめ

付録A 機械学習のためのインフラ入門
    A.1 コンテナとは
    A.2 Docker入門
        A.2.1 Dockerイメージ入門
        A.2.2 初めてのDockerイメージビルド
        A.2.3 Docker CLI入門
    A.3 Kubernetes入門
        A.3.1 Kubernetesの用語とその定義
        A.3.2 初めてのMinikubeとkubectl
        A.3.3 Kubernetes CLIを使ったインタラクション
        A.3.4 Kubernetesリソースの定義
    A.4 Kubernetesにアプリケーションをデプロイ

付録B Google Cloud上でKubernetesクラスタのセットアップ
    B.1 始める前に
    B.2 Google Cloud上でKubernetes
        B.2.1 Google Cloudプロジェクトの選択
        B.2.2 Google Cloudプロジェクトのセットアップ
        B.2.3 Kubernetesクラスタの作成
        B.2.4 kubectlでKubernetesクラスタにアクセス
        B.2.5 kubectlでKubernetesクラスタを使用
    B.3 Kubeflow Pipelines用に永続ボリュームのセットアップ

付録C Kubeflow Pipelinesを運用するためのTips
    C.1 カスタムTFXイメージ
    C.2 永続ボリュームを介したデータ交換
    C.3 TFXコマンドラインインターフェイス
        C.3.1 TFXと依存関係
        C.3.2 TFXテンプレート
        C.3.3 TFX CLIを用いたパイプラインの公開

付録D 実際に運用されている機械学習パイプライン
    D.1 Uber:Michelangelo
    D.2 Spotify:ML Platform
    D.3 Twitter:DeepBird-v2
    D.4 Netflix:Meson
    D.5 Airbnb:Bighead
    D.6 事例から学ぶ機械学習パイプライン構築のポイント

索引

コラム目次
    TFRecord
    Google Cloud の認証情報
    学習―推論間のスキュー(Training-Serving Skew)とは
    Shapley 値
    特定のモデルバージョンの設定
    どちらのプロトコルを使うべきか
    安全な接続
    TFLiteの最適化オプション
    エッジデバイスへのモデルデプロイ
    Prometheus in Action
    Kubeflow vs. Kubeflow Pipelines
    Argoとは
    Kubernetesクラスタの作成
    OpFunc関数