SIG TFX-Addonsコミュニティに参加して、TFXをさらに改善してください!
このページは Cloud Translation API によって翻訳されました。
Switch to English

TFXエアフローチュートリアル

Python PyPI

前書き

このチュートリアルは、TensorFlow Extended(TFX)を紹介し、独自の機械学習パイプラインの作成方法を学ぶのに役立つように設計されています。ローカルで実行され、TFXおよびTensorBoardとの統合、およびJupyterノートブックでのTFXとの相互作用を示します。

データセットを調べることから始めて、典型的なML開発プロセスに従い、最終的に完全に機能するパイプラインを作成します。その過程で、パイプラインをデバッグおよび更新し、パフォーマンスを測定する方法を探ります。

もっと詳しく知る

詳細については、 TFXユーザーガイドを参照してください。

ステップバイステップ

典型的なML開発プロセスに従って、段階的に作業することにより、パイプラインを徐々に作成します。手順は次のとおりです。

  1. 環境をセットアップする
  2. 最初のパイプラインスケルトンを表示します
  3. データに飛び込む
  4. 機能工学
  5. トレーニング
  6. モデルのパフォーマンスの分析
  7. 生産の準備ができました

前提条件

  • Linux / MacOS
  • Virtualenv
  • Python 3.5+
  • ギット

必要なパッケージ

環境によっては、いくつかのパッケージをインストールする必要がある場合があります。

sudo apt-get install \
    build-essential libssl-dev libffi-dev \
    libxml2-dev libxslt1-dev zlib1g-dev \
    python3-pip git software-properties-common

Python 3.6を実行している場合は、python3.6-devをインストールする必要があります。

sudo apt-get install python3.6-dev

Python 3.7を実行している場合は、python3.7-devをインストールする必要があります。

sudo apt-get install python3.7-dev

さらに、システムのGCCバージョンが7未満の場合は、GCCを更新する必要があります。そうしないと、 airflow webserver実行時にエラーが発生します。現在のバージョンは次の方法で確認できます。

gcc --version

GCCを更新する必要がある場合は、次のコマンドを実行できます。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7
sudo apt install g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

MacOS環境

Python 3とgitがまだインストールされていない場合は、 Homebrewパッケージマネージャーを使用してインストールできます。

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
brew update
brew install python
brew install git

構成によっては、MacOSでAirflowの実行時にスレッドのフォークに問題が発生することがあります。これらの問題を回避するには、 ~/.bash_profileを編集して、ファイルの最後に次の行を追加する必要があります。

export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES

チュートリアル資料

このチュートリアルのコードは、 https//github.com/tensorflow/tfx/tree/master/tfx/examples/airflow_workshopで入手できます。

コードは作業中のステップごとに編成されているため、各ステップには、必要なコードとその処理方法の説明があります。

チュートリアルファイルには、問題が発生した場合に備えて、演習と演習の解決策の両方が含まれています。

運動

  • taxi_pipeline.py
  • taxi_utils.py
  • タクシーDAG

解決

  • taxi_pipeline_solution.py
  • taxi_utils_solution.py
  • taxi_solution DAG

あなたがしていること

TFXを使用してMLパイプラインを作成する方法を学習しています

  • TFXパイプラインは、本番MLアプリケーションをデプロイする場合に適しています
  • データセットが大きい場合、TFXパイプラインが適切です
  • TFXパイプラインは、トレーニング/サービスの一貫性が重要な場合に適しています
  • TFXパイプラインは、推論のバージョン管理が重要な場合に適しています
  • Googleは本番MLにTFXパイプラインを使用しています

あなたは典型的なML開発プロセスに従っています

  • データの取り込み、理解、およびクリーニング
  • 機能工学
  • トレーニング
  • モデルのパフォーマンスを分析する
  • 泡立て、すすぎ、繰り返し
  • 生産の準備ができました

各ステップのコードを追加する

チュートリアルは、すべてのコードがファイルに含まれるように設計されていますが、手順3〜7のすべてのコードはコメント化され、インラインコメントでマークされています。インラインコメントは、コード行が適用されるステップを識別します。たとえば、ステップ3のコードには、コメント# Step 3マークが付いています。

各ステップに追加するコードは、通常、コードの3つの領域に分類されます。

  • 輸入
  • DAG構成
  • create_pipeline()呼び出しから返されたリスト
  • taxi_utils.pyのサポートコード

チュートリアルを進めると、現在作業しているチュートリアルステップに適用されるコード行のコメントが解除されます。これにより、そのステップのコードが追加され、パイプラインが更新されます。その際、コメントを外しているコードを確認することを強くお勧めします

シカゴのタクシーデータセット

タクシーシカゴのタクシー

シカゴ市がリリースしたタクシー旅行データセットを使用しています。

データセットの詳細については、GoogleBigQueryをご覧くださいBigQueryUIで完全なデータセットを調べます。

モデルの目標-二項分類

顧客は20%以上または20%未満のチップを払いますか?

ステップ1:環境をセットアップする

セットアップスクリプト( setup_demo.sh )TFXとインストールの気流を、このチュートリアルのために仕事に簡単にそれを作る方法で、エアフローを設定します。

シェル内:

cd
virtualenv -p python3 tfx-env
source ~/tfx-env/bin/activate

git clone https://github.com/tensorflow/tfx.git
cd ~/tfx
# These instructions are specific to the 0.21 release
git checkout -f origin/r0.21
cd ~/tfx/tfx/examples/airflow_workshop/setup
./setup_demo.sh

setup_demo.shを確認して、何がsetup_demo.shれているかを確認する必要があります。

ステップ2:最初のパイプラインスケルトンを起動する

こんにちは世界

シェル内:

# Open a new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow webserver -p 8080

# Open another new terminal window, and in that window ...
source ~/tfx-env/bin/activate
airflow scheduler

# Open yet another new terminal window, and in that window ...
# Assuming that you've cloned the TFX repo into ~/tfx
source ~/tfx-env/bin/activate
cd ~/tfx/tfx/examples/airflow_workshop/notebooks
jupyter notebook

このステップでJupyterノートブックを起動しました。後で、このフォルダーでノートブックを実行します。

ブラウザの場合:

  • ブラウザを開き、http://127.0.0.1:8080にアクセスします

トラブルシューティング

WebブラウザへのAirflowコンソールの読み込みに問題がある場合、またはairflow webserver実行時にエラーが発生した場合は、ポート8080で別のアプリケーションが実行されている可能性があります。これはAirflowのデフォルトのポートですが、変更できます。使用されていない他のユーザーポートに。たとえば、ポート7070でAirflowを実行するには、次のコマンドを実行できます。

airflow webserver -p 7070

DAGビューボタン

DAGボタン

  • 左側のボタンを使用してDAGを有効にします
  • 変更を加える場合は、右側のボタンを使用してDAGを更新します
  • 右側のボタンを使用してDAGをトリガーします
  • タクシーをクリックして、DAGのグラフビューに移動します

グラフ更新ボタン

エアフローCLI

Airflow CLIを使用して、DAGを有効にしてトリガーすることもできます。

# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>

# trigger
airflow trigger_dag <your DAG name>

パイプラインが完了するのを待っています

DAGビューでパイプラインをトリガーした後、パイプラインが処理を完了するのを見ることができます。各コンポーネントが実行されると、DAGグラフのコンポーネントのアウトラインの色が変化してその状態が表示されます。コンポーネントの処理が完了すると、アウトラインが濃い緑色に変わり、処理が完了したことを示します。

これまでのところ、パイプラインにはCsvExampleGenコンポーネントしかないため、濃い緑色に変わるまで待つ必要があります(約1分)。

セットアップが完了しました

ステップ3:データに飛び込む

データサイエンスまたはMLプロジェクトの最初のタスクは、データを理解してクリーンアップすることです。

  • 各機能のデータ型を理解する
  • 異常と欠落値を探します
  • 各機能の分布を理解する

コンポーネント

データコンポーネントデータコンポーネント

エディターの場合:

  • 〜/ taxi_pipeline.py / dagsで、 taxi_pipeline.py Step 3とマークされた行のコメントを解除しtaxi_pipeline.py
  • コメントを外したコードを確認してください

ブラウザの場合:

  • 左上隅の[DAG]リンクをクリックして、AirflowのDAGリストページに戻ります。
  • タクシーDAGの右側にある更新ボタンをクリックします
    • 「DAG [タクシー]がデイジーのように新鮮になりました」と表示されます。
  • トリガータクシー
  • パイプラインが完了するのを待つ
    • すべてダークグリーン
    • 右側の更新またはページの更新を使用します

データに飛び込む

Jupyterに戻る:

以前は、ブラウザタブでJupyterセッションを開いたjupyter notebookを実行しました。次に、ブラウザのそのタブに戻ります。

  • step3.ipynbを開きます
  • ノートブックに従ってください

データに飛び込む

より高度な例

ここに示されている例は、実際には開始することだけを目的としています。より高度な例については、 TensorFlow Data ValidationColabを参照してください。

TFDVを使用してデータセットを探索および検証する方法の詳細については、tensorflow.orgの例を参照してください

ステップ4:機能エンジニアリング

フィーチャエンジニアリングを使用して、データの予測品質を向上させたり、次元を削減したりできます。

  • 機能の交差
  • 語彙
  • 埋め込み
  • PCA
  • カテゴリエンコーディング

TFXを使用する利点の1つは、変換コードを1回記述するだけで、結果の変換がトレーニングと提供の間で一貫していることです。

コンポーネント

変換

  • Transformは、データセットに対して機能エンジニアリングを実行します。

エディターの場合:

  • 〜/ taxi_pipeline.py / dagsで、 taxi_pipeline.pytaxi_utils.py両方でStep 4とマークされた行のコメントを解除します
  • コメントを外したコードを確認してください

ブラウザの場合:

  • AirflowのDAGリストページに戻る
  • タクシーDAGの右側にある更新ボタンをクリックします
    • 「DAG [タクシー]がデイジーのように新鮮になりました」と表示されます。
  • トリガータクシー
  • パイプラインが完了するのを待つ
    • すべてダークグリーン
    • 右側の更新またはページの更新を使用します

機能エンジニアリング

Jupyterに戻る:

ブラウザの[Jupyter]タブに戻ります。

  • step4.ipynbを開きます
  • ノートブックに従ってください

より高度な例

ここに示されている例は、実際には開始することだけを目的としています。より高度な例については、 TensorFlow TransformColabを参照してください。

ステップ5:トレーニング

きれいで変換されたデータを使用してTensorFlowモデルをトレーニングします。

  • ステップ4の変換を含めて、一貫して適用されるようにします
  • 結果を本番用にSavedModelとして保存します
  • TensorBoardを使用してトレーニングプロセスを視覚化して調査する
  • また、モデルのパフォーマンスを分析するためにEvalSavedModelを保存します

コンポーネント

エディターの場合:

  • 〜/ taxi_pipeline.py / dagsで、 taxi_pipeline.pytaxi_utils.py両方でStep 5とマークされた行のコメントを解除します
  • コメントを外したコードを確認してください

ブラウザの場合:

  • AirflowのDAGリストページに戻る
  • タクシーDAGの右側にある更新ボタンをクリックします
    • 「DAG [タクシー]がデイジーのように新鮮になりました」と表示されます。
  • トリガータクシー
  • パイプラインが完了するのを待つ
    • すべてダークグリーン
    • 右側の更新またはページの更新を使用します

モデルのトレーニング

Jupyterに戻る:

ブラウザの[Jupyter]タブに戻ります。

  • step5.ipynbを開きます
  • ノートブックに従ってください

モデルのトレーニング

より高度な例

ここに示されている例は、実際には開始することだけを目的としています。より高度な例については、 TensorBoardチュートリアルを参照してください。

ステップ6:モデルのパフォーマンスを分析する

トップレベルの指標以上のものを理解する。

  • ユーザーは、クエリに対してのみモデルのパフォーマンスを体験します
  • データスライスのパフォーマンスの低下は、トップレベルの指標によって隠すことができます
  • モデルの公平性は重要です
  • 多くの場合、ユーザーまたはデータの主要なサブセットは非常に重要であり、小さい場合があります
    • クリティカルだが異常な状態でのパフォーマンス
    • インフルエンサーなどの主要なオーディエンスのパフォーマンス
  • 現在生産中のモデルを交換する場合は、最初に新しいモデルの方が優れていることを確認してください
  • 評価者は、モデルに問題がないかどうかをプッシャーコンポーネントに通知します

コンポーネント

  • 評価者は、トレーニング結果の詳細な分析を実行し、モデルが本番環境にプッシュされるのに「十分に優れている」ことを確認します。

エディターの場合:

  • 〜/ taxi_pipeline.py / dagsで、両方のtaxi_pipeline.py Step 6とマークされた行のコメントを解除します
  • コメントを外したコードを確認してください

ブラウザの場合:

  • AirflowのDAGリストページに戻る
  • タクシーDAGの右側にある更新ボタンをクリックします
    • 「DAG [タクシー]がデイジーのように新鮮になりました」と表示されます。
  • トリガータクシー
  • パイプラインが完了するのを待つ
    • すべてダークグリーン
    • 右側の更新またはページの更新を使用します

モデルのパフォーマンスの分析

Jupyterに戻る:

ブラウザの[Jupyter]タブに戻ります。

  • step6.ipynbを開きます
  • ノートブックに従ってください

モデルのパフォーマンスの分析

より高度な例

ここに示されている例は、実際には開始することだけを目的としています。より高度な例については、 TFMAシカゴタクシーチュートリアルを参照してください。

ステップ7:本番環境の準備

新しいモデルの準備ができたら、準備をします。

  • プッシャーはSavedModelsをよく知られた場所にデプロイします

展開ターゲットは、よく知られた場所から新しいモデルを受け取ります

  • TensorFlowサービング
  • TensorFlow Lite
  • TensorFlow JS
  • TensorFlowハブ

コンポーネント

  • プッシャーは、モデルをサービングインフラストラクチャにデプロイします。

エディターの場合:

  • 〜/ taxi_pipeline.py / dagsで、両方のtaxi_pipeline.py Step 7とマークされた行のコメントを解除します
  • コメントを外したコードを確認してください

ブラウザの場合:

  • AirflowのDAGリストページに戻る
  • タクシーDAGの右側にある更新ボタンをクリックします
    • 「DAG [タクシー]がデイジーのように新鮮になりました」と表示されます。
  • トリガータクシー
  • パイプラインが完了するのを待つ
    • すべてダークグリーン
    • 右側の更新またはページの更新を使用します

生産の準備ができました

次のステップ

これで、モデルのトレーニングと検証がSavedModelし、 ~/airflow/saved_models/taxiディレクトリの下にあるSavedModelファイルがエクスポートされました。これで、モデルの生産準備が整いました。これで、次のようなTensorFlowデプロイターゲットのいずれかにモデルをデプロイできます。

  • TensorFlow Serving 、サーバーまたはサーバーファームでモデルを提供し、RESTやgRPC推論リクエストを処理します。
  • TensorFlow Lite 、AndroidまたはiOSのネイティブモバイルアプリケーション、またはRaspberry Pi、IoT、またはマイクロコントローラーアプリケーションにモデルを含めるため。
  • TensorFlow.js 、WebブラウザまたはNode.JSアプリケーションでモデルを実行するため。