入門 機械学習パイプライン ―TensorFlowで学ぶワークフローの自動化

Book description

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

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  賞賛の声
  5.  序文
  6.  訳者まえがき
  7.  まえがき
  8.     Hannesより
  9.     Catherineより
  10.  1章 イントロダクション
  11.   1.1 機械学習パイプラインの必要性
  12.   1.2 機械学習パイプラインについて考えるべき時
  13.   1.3 機械学習パイプラインの各ステップの概要
  14.    1.3.1 データの取り込みとバージョン管理
  15.    1.3.2 データの検証
  16.    1.3.3 データの前処理
  17.    1.3.4 モデルの学習とチューニング
  18.    1.3.5 モデルの分析
  19.    1.3.6 モデルのバージョン管理
  20.    1.3.7 モデルのデプロイ
  21.    1.3.8 フィードバックループ
  22.    1.3.9 データプライバシー
  23.   1.4 パイプラインオーケストレーション
  24.    1.4.1 パイプラインオーケストレーションの必要性
  25.    1.4.2 有向非巡回グラフ
  26.   1.5 サンプルプロジェクト
  27.    1.5.1 プロジェクト構造
  28.    1.5.2 今回の機械学習モデル
  29.    1.5.3 サンプルプロジェクトのゴール
  30.   1.6 まとめ
  31.  2章 TensorFlow Extended入門
  32.   2.1 TFXとは
  33.   2.2 TFXのインストール
  34.   2.3 TFXコンポーネントの概要
  35.   2.4 ML Metadata
  36.   2.5 インタラクティブパイプライン
  37.   2.6 TFXの代替品
  38.   2.7 Apache Beam入門
  39.    2.7.1 セットアップ
  40.    2.7.2 基礎的なデータパイプライン
  41.     2.7.2.1 コレクションの例
  42.     2.7.2.2 変換の例
  43.     2.7.2.3 パイプライン全体
  44.   2.8 パイプライン実行の基礎
  45.   2.9 まとめ
  46.  3章 データの取り込み
  47.   3.1 データ取り込みの概念
  48.      TFRecord
  49.    3.1.1 ローカルデータファイルの取り込み
  50.     3.1.1.1 CSVをtf.train.Exampleに変換
  51.     3.1.1.2 作成済みのTFRecordファイルのインポート
  52.     3.1.1.3 Parquetをtf.train.Exampleに変換
  53.     3.1.1.4 Avroをtf.train.Exampleに変換
  54.     3.1.1.5 カスタムデータをTFRecordに変換
  55.    3.1.2 リモートデータファイルの取り込み
  56.    3.1.3 データベースから直接取り込み
  57.     3.1.3.1 Google Cloud BigQuery
  58.      Google Cloudの認証情報
  59.     3.1.3.2 Prestoデータベース
  60.   3.2 データ準備
  61.    3.2.1 データセットの分割
  62.     3.2.1.1 データセットをサブセットに分割
  63.     3.2.1.2 既存の分割を保持
  64.    3.2.2 スパン化したデータセット
  65.    3.2.3 データセットのバージョン管理
  66.   3.3 取り込み戦略
  67.    3.3.1 構造化データ
  68.    3.3.2 テキストデータ
  69.    3.3.3 画像データ
  70.   3.4 まとめ
  71.  4章 データ検証
  72.   4.1 データ検証の必要性
  73.   4.2 TFDV
  74.    4.2.1 インストール
  75.    4.2.2 統計量の生成
  76.    4.2.3 スキーマの生成
  77.   4.3 データに潜む問題の認識
  78.    4.3.1 データセットの比較
  79.    4.3.2 スキーマの更新
  80.    4.3.3 データのスキューとドリフト
  81.    4.3.4 バイアスのあるデータセット
  82.    4.3.5 TFDVで行うデータのスライス
  83.   4.4 GCP上で大規模データセットの処理
  84.   4.5 TFDVと機械学習パイプラインの統合
  85.   4.6 まとめ
  86.  5章 データ前処理
  87.   5.1 データ前処理の必要性
  88.    5.1.1 データセット全体のコンテキストでデータを前処理
  89.    5.1.2 前処理のスケーリング
  90.    5.1.3 学習―推論間のスキューを回避
  91.      学習―推論間のスキュー(Training-Serving Skew)とは
  92.    5.1.4 前処理とモデルを1つのアーティファクトとしてデプロイ
  93.    5.1.5 パイプラインで前処理結果の確認
  94.   5.2 TFTによるデータ前処理
  95.    5.2.1 インストール
  96.    5.2.2 前処理戦略
  97.    5.2.3 ベストプラクティス
  98.    5.2.4 TFTの関数
  99.     5.2.4.1 テキストデータ用の関数
  100.     5.2.4.2 画像データ用の関数
  101.    5.2.5 TFT単体の実行
  102.    5.2.6 TFTと機械学習パイプラインの統合
  103.   5.3 まとめ
  104.  6章 モデルの学習
  105.   6.1 サンプルプロジェクトのモデル定義
  106.   6.2 TFXのTrainerコンポーネント
  107.    6.2.1 run_fn関数
  108.     6.2.1.1 データの読み込み
  109.     6.2.1.2 モデルのコンパイルと学習
  110.     6.2.1.3 モデルのエクスポート
  111.    6.2.2 Trainerコンポーネントの実行
  112.    6.2.3 その他の検討事項
  113.     6.2.3.1 Estimatorモデルで使うTrainerコンポーネント
  114.     6.2.3.2 パイプライン外で使うSavedModel
  115.   6.3 インタラクティブパイプラインで使うTensorBoard
  116.   6.4 分散戦略
  117.   6.5 モデルのチューニング
  118.    6.5.1 ハイパーパラメータチューニングの戦略
  119.    6.5.2 TFXパイプラインでのハイパーパラメータチューニング
  120.   6.6 まとめ
  121.  7章 モデル分析と検証
  122.   7.1 モデルの分析方法
  123.    7.1.1 分類の指標
  124.    7.1.2 回帰の指標
  125.   7.2 TensorFlow Model Analysis
  126.    7.2.1 単一モデルの分析
  127.    7.2.2 複数モデルの分析
  128.   7.3 公平性のためのモデル分析
  129.    7.3.1 TFMAでモデル予測のスライス
  130.    7.3.2 Fairness Indicatorsを使ったカットオフ値の確認
  131.    7.3.3 What-If Toolの掘り下げ
  132.   7.4 モデルの説明可能性
  133.    7.4.1 WITを用いた説明の生成
  134.    7.4.2 その他説明可能性のテクニック
  135.      Shapley値
  136.   7.5 TFXによる分析と検証
  137.    7.5.1 ResolverNode
  138.    7.5.2 Evaluatorコンポーネント
  139.    7.5.3 Evaluatorコンポーネントによる検証
  140.    7.5.4 Pusherコンポーネント
  141.   7.6 まとめ
  142.  8章 TensorFlow Servingを用いたモデルのデプロイ
  143.   8.1 シンプルなモデルサーバー
  144.   8.2 PythonベースのAPIとしてモデルをデプロイする欠点
  145.    8.2.1 コード分離の欠如
  146.    8.2.2 モデルのバージョン管理の欠如
  147.    8.2.3 非効率なモデルの推論
  148.   8.3 TensorFlow Serving
  149.   8.4 TensorFlow Servingのアーキテクチャ概要
  150.   8.5 TensorFlow Serving用のモデルエクスポート
  151.   8.6 モデルシグネチャ
  152.    8.6.1 シグネチャメソッド
  153.   8.7 エクスポートしたモデルの検査
  154.    8.7.1 モデルの検査
  155.    8.7.2 モデルのテスト
  156.   8.8 TensorFlow Servingのセットアップ
  157.    8.8.1 Dockerによるインストール
  158.    8.8.2 Ubuntuにインストール
  159.    8.8.3 TensorFlow Servingをソースからビルド
  160.   8.9 TensorFlow Serverの設定
  161.    8.9.1 単一モデルの設定
  162.    8.9.2 複数モデルの設定
  163.      特定のモデルバージョンの設定
  164.   8.10 REST 対 gRPC
  165.    8.10.1 REST
  166.    8.10.2 gRPC
  167.      どちらのプロトコルを使うべきか
  168.   8.11 モデルサーバーで予測
  169.    8.11.1 RESTで予測結果を取得
  170.     8.11.1.1 URLの構造
  171.     8.11.1.2 ペイロード
  172.    8.11.2 gRPCからTensorFlow Servingを使用
  173.      安全な接続
  174.     8.11.2.1 分類と回帰モデルから予測を取得
  175.     8.11.2.2 ペイロード
  176.   8.12 TensorFlow Servingを用いたモデルのA/Bテスト
  177.   8.13 モデルのメタデータのリクエスト
  178.    8.13.1 RESTによるリクエスト
  179.    8.13.2 gRPCによるリクエスト
  180.   8.14 バッチ推論リクエスト
  181.   8.15 バッチ予測の設定
  182.   8.16 その他 TensorFlow Servingの最適化
  183.   8.17 TensorFlow Servingの代替品
  184.    8.17.1 BentoML
  185.    8.17.2 Seldon
  186.    8.17.3 GraphPipe
  187.    8.17.4 Simple TensorFlow Serving
  188.    8.17.5 MLflow
  189.    8.17.6 Ray Serve
  190.   8.18 クラウドへのデプロイ
  191.    8.18.1 ユースケース
  192.    8.18.2 GCPへのデプロイ
  193.     8.18.2.1 モデルのデプロイ
  194.     8.18.2.2 モデルの推論
  195.   8.19 TFXパイプラインを用いたモデルデプロイ
  196.   8.20 まとめ
  197.  9章 TensorFlow Servingを使った高度なモデルデプロイ
  198.   9.1 デプロイサイクルの分離
  199.    9.1.1 ワークフローの概要
  200.     9.1.1.1 AWS S3にあるプライベートなモデルへのアクセス
  201.     9.1.1.2 GCPバケットにあるプライベートなモデルへのアクセス
  202.    9.1.2 リモートに置かれたモデル読み込みの最適化
  203.   9.2 デプロイのためのモデル最適化
  204.    9.2.1 量子化
  205.    9.2.2 枝刈り
  206.    9.2.3 蒸留
  207.   9.3 TensorFlow ServingでTensorRTを使う
  208.   9.4 TFLite
  209.    9.4.1 TFLiteでモデルを最適化するステップ
  210.      TFLiteの最適化オプション
  211.    9.4.2 TensorFlow ServingでTFLiteモデルの提供
  212.      エッジデバイスへのモデルデプロイ
  213.   9.5 TensorFlow Servingインスタンスの監視
  214.    9.5.1 Prometheusのセットアップ
  215.    9.5.2 TensorFlow Serving Configuration
  216.      Prometheus in Action
  217.   9.6 TensorFlow ServingとKubernetesを用いたシンプルなスケーリング
  218.   9.7 まとめ
  219.  10章 TFXの高度な機能
  220.   10.1 パイプラインの高度なコンセプト
  221.    10.1.1 複数のモデルを同時に学習
  222.    10.1.2 TFLiteモデルのエクスポート
  223.    10.1.3 ウォームスタートなモデル学習
  224.   10.2 ヒューマンインザループ
  225.    10.2.1 Slackコンポーネントのセットアップ
  226.    10.2.2 Slackコンポーネントの使い方
  227.   10.3 カスタムコンポーネント
  228.    10.3.1 カスタムコンポーネントのユースケース
  229.    10.3.2 カスタムコンポーネントをゼロから構築
  230.     10.3.2.1 コンポーネント仕様
  231.     10.3.2.2 コンポーネントチャンネル
  232.     10.3.2.3 コンポーネントエグゼキュータ
  233.     10.3.2.4 コンポーネントドライバ
  234.     10.3.2.5 カスタムコンポーネントの組み立て
  235.     10.3.2.6 カスタムコンポーネントの使い方
  236.     10.3.2.7 実装のレビュー
  237.    10.3.3 既存コンポーネントの再利用
  238.     10.3.3.1 カスタムエグゼキュータの使い方
  239.   10.4 まとめ
  240.  11章 パイプライン Part 1: Apache BeamとApache Airflow
  241.   11.1 オーケストレーションツールの選択
  242.    11.1.1 Apache Beam
  243.    11.1.2 Apache Airflow
  244.    11.1.3 Kubeflow Pipelines
  245.    11.1.4 AI Platform上のKubeflow Pipelines
  246.   11.2 インタラクティブTFXパイプラインを本番パイプラインに変換
  247.   11.3 シンプルなインタラクティブパイプラインをBeamとAirflow向けに変換
  248.   11.4 Apache Beam入門
  249.   11.5 Apache BeamでTFXパイプラインのオーケストレーション
  250.   11.6 Apache Airflow入門
  251.    11.6.1 インストールと初期設定
  252.    11.6.2 Airflowの基礎的な例
  253.     11.6.2.1 プロジェクト固有の環境設定
  254.     11.6.2.2 タスク定義
  255.     11.6.2.3 タスクの依存関係
  256.     11.6.2.4 すべてを統合
  257.   11.7 Apache AirflowでTFXパイプラインをオーケストレーション
  258.    11.7.1 パイプラインの設定
  259.    11.7.2 パイプラインの実行
  260.   11.8 まとめ
  261.  12章 パイプライン Part 2: Kubeflow Pipelines
  262.   12.1 入門Kubeflow Pipelines
  263.      Kubeflow vs. Kubeflow Pipelines
  264.      Argoとは
  265.    12.1.1 インストールと初期設定
  266.      Kubernetesクラスタの作成
  267.    12.1.2 インストールしたKubeflow Pipelinesへのアクセス
  268.   12.2 Kubeflow Pipelinesを使用したTFXパイプラインのオーケストレーション
  269.    12.2.1 パイプラインの設定
  270.      OpFunc関数
  271.    12.2.2 パイプラインの実行
  272.    12.2.3 Kubeflow Pipelinesの便利な機能
  273.     12.2.3.1 失敗したパイプラインの再開
  274.     12.2.3.2 定期的な実行
  275.     12.2.3.3 パイプライン実行の共同作業とレビュー
  276.     12.2.3.4 パイプライン系列の監査
  277.   12.3 Google Cloud AI Platformベースのパイプライン
  278.    12.3.1 パイプラインの設定
  279.    12.3.2 TFXパイプラインのセットアップ
  280.     12.3.2.1 データ交換のためにCloud Storageバケットを使う
  281.     12.3.2.2 AI Platformジョブを用いたモデルの学習
  282.     12.3.2.3 AI Platformのエンドポイントを介したモデルの提供
  283.     12.3.2.4 Google Dataflowを用いたスケーリング
  284.    12.3.3 パイプラインの実行
  285.   12.4 まとめ
  286.  13章 フィードバックループ
  287.   13.1 明示的・暗黙的フィードバック
  288.    13.1.1 データフライホイール
  289.    13.1.2 実世界におけるフィードバックループ
  290.   13.2 フィードバック収集のデザインパターン
  291.    13.2.1 ユーザーが予測の結果として何らかの行動をとる
  292.    13.2.2 ユーザーが予測の質を評価する
  293.    13.2.3 ユーザーが予測を修正する
  294.    13.2.4 クラウドソーシングによるアノテーション
  295.    13.2.5 専門家によるアノテーション
  296.    13.2.6 フィードバックの自動生成
  297.   13.3 フィードバックループの追跡方法
  298.    13.3.1 明示的フィードバックの追跡
  299.    13.3.2 暗黙的フィードバックの追跡
  300.   13.4 まとめ
  301.  14章 機械学習のためのデータプライバシー
  302.   14.1 データプライバシーの問題
  303.    14.1.1 データプライバシーを気にする理由
  304.    14.1.2 プライバシーを高めるもっともシンプルな方法
  305.    14.1.3 秘密にしておく必要があるデータ
  306.   14.2 差分プライバシー
  307.    14.2.1 局所的・大域的差分プライバシー
  308.    14.2.2 イプシロン、デルタ、そしてプライバシー予算
  309.    14.2.3 機械学習のための差分プライバシー
  310.   14.3 入門TensorFlow Privacy
  311.    14.3.1 差分プライベートオプティマイザを用いた学習
  312.    14.3.2 イプシロンの計算
  313.   14.4 Federated Learning
  314.    14.4.1 TensorFlowにおけるFederated Learning
  315.   14.5 暗号化された機械学習
  316.    14.5.1 暗号化されたモデル学習
  317.    14.5.2 暗号化された予測を提供するために学習済みモデルを変換
  318.   14.6 他のデータプライバシー手法
  319.   14.7 まとめ
  320.  15章 パイプラインの未来と次のステップ
  321.   15.1 モデルの実験追跡
  322.   15.2 モデルのリリース管理の考え方
  323.   15.3 将来的なパイプラインの能力
  324.   15.4 TFXと他の機械学習フレームワーク
  325.   15.5 機械学習モデルのテスト
  326.   15.6 機械学習のためのCI/CD
  327.   15.7 機械学習エンジニアリングのコミュニティ
  328.   15.8 まとめ
  329.  付録A 機械学習のためのインフラ入門
  330.   A.1 コンテナとは
  331.   A.2 Docker入門
  332.    A.2.1 Dockerイメージ入門
  333.    A.2.2 初めてのDockerイメージビルド
  334.    A.2.3 Docker CLI入門
  335.   A.3 Kubernetes入門
  336.    A.3.1 Kubernetesの用語とその定義
  337.    A.3.2 初めてのMinikubeとkubectl
  338.    A.3.3 Kubernetes CLIを使ったインタラクション
  339.    A.3.4 Kubernetesリソースの定義
  340.   A.4 Kubernetesにアプリケーションをデプロイ
  341.  付録B Google Cloud上でKubernetesクラスタのセットアップ
  342.   B.1 始める前に
  343.   B.2 Google Cloud上でKubernetes
  344.    B.2.1 Google Cloudプロジェクトの選択
  345.    B.2.2 Google Cloudプロジェクトのセットアップ
  346.    B.2.3 Kubernetesクラスタの作成
  347.    B.2.4 kubectlでKubernetesクラスタにアクセス
  348.    B.2.5 kubectlでKubernetesクラスタを使用
  349.   B.3 Kubeflow Pipelines用に永続ボリュームのセットアップ
  350.  付録C Kubeflow Pipelinesを運用するためのTips
  351.   C.1 カスタムTFXイメージ
  352.   C.2 永続ボリュームを介したデータ交換
  353.   C.3 TFXコマンドラインインターフェイス
  354.    C.3.1 TFXと依存関係
  355.    C.3.2 TFXテンプレート
  356.    C.3.3 TFX CLIを用いたパイプラインの公開
  357.  付録D 実際に運用されている機械学習パイプライン
  358.   D.1 Uber: Michelangelo
  359.   D.2 Spotify: ML Platform
  360.   D.3 Twitter: DeepBird-v2
  361.   D.4 Netflix: Meson
  362.   D.5 Airbnb: Bighead
  363.   D.6 事例から学ぶ機械学習パイプライン構築のポイント
  364.  著者紹介
  365.  奥付

Product information

  • Title: 入門 機械学習パイプライン ―TensorFlowで学ぶワークフローの自動化
  • Author(s): Hannes Hapke, Catherine Nelson, 中山 光樹
  • Release date: September 2021
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119519

You might also like

book

データサイエンスのための統計学入門 第2版 ―予測、分類、統計モデリング、統計的機械学習とR/Pythonプログラミング

by Peter Bruce, Andrew Bruce, Peter Gedeck, 黒川 利明, 大橋 真也

データサイエンスにおいて重要な統計学と機械学習に関する52の基本概念と関連用語について、簡潔な説明とその知識の背景となる最低限の数式、グラフ、RとPythonのコードを提示し、多面的なアプローチにより、深い理解を促します。データの分類、分析、モデル化、予測という一連のデータサイエンスのプロセスにおいて統計学の必要な項目と不必要な項目を明確にし、統計学の基本と実践的なデータサイエンス技法を効率よく学ぶことができます。データサイエンス分野における昨今のPython人気を反映し、第1版ではRのみの対応だったコードが、今回の改訂でPythonにも対応。コードはすべてGitHubからダウンロード可能です。

book

プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法

by Jimmy Song, 中川 卓俊, 住田 和則, 中村 昭雄, 星野 靖子

本書は、ひとつのビットコインライブラリに必要なすべての要素を実際にコーディングすることで、ビットコイン技術の理解を深めることを狙いとした技術学習書です。ゼロから順を追ってビットコインライブラリを作成していくことで、その内部構造を紐解き、ビットコインの動作を学ぶことができます。本書で学び終える頃には、トランザクションの作成ができるようになるのはもちろん、必要なデータをピアから受け取り、ネットワーク経由でトランザクションを送信できるようになります。数学、パース、ネットワーク接続、ブロック検証をはじめ、それらを可能にするために必要なものすべてを網羅しています。

book

戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック

by Foster Provost, Tom Fawcett, 竹田 正和, 古畠 敦, 瀬戸山 雅人, 大木 嘉人, 藤野 賢祐, 宗定 洋平, 西谷 雅史, 砂子 一徳, 市川 正和, 佐藤 正士

ビッグデータ時代とも言われる昨今においては、膨大なデータをビジネスの枠組みの中に組み込んで活用することが重要課題となっています。つまり、データ収集を行ってビジネスの全体像を把握し、適切なデータ分析を行って正確な予測をした上でビジネス戦略を決めることが求められています。本書は、データをビジネスに活かすために身に付けておくべき基本的な考え方と、データマイニングやモデリングの根底に存在するコンセプトについて、体系的に解説しています。データサイエンスの重要性とその威力を学べる一冊です。

book

詳解 システム・パフォーマンス 第2版

by Brendan Gregg, 西脇 靖紘, 長尾 高弘

本書は、エンタープライズとクラウド環境を対象としたオペレーティングシステムとアプリケーションのパフォーマンス分析と向上について解説します。 主にLinuxベースのオペレーティングシステムに含まれるツールとその使用例を通じてシステムパフォーマンスを引き出す手法を説明します。システム評価のためのベンチマーク、キャパシティプランニング、ボトルネックの解消について解説しスケーラビリティを制限する要因を発見、分析し、解決する方法を学びます。 第2版では、perf、Ftrace、BPFの解説が加わり、Linuxとクラウドコンピューティングについての説明が充実しました。 システムのパフォーマンスを向上させ、コストを削減し、レイテンシの外れ値を減らすための方法を学ぶ本書はエンジニア必携の一冊です。