概要
概要
このチュートリアルは、TensorFlow Extended (TFX) と Apache Airflow をオーケストレーターとして使用して、独自の機械学習パイプラインを作成する方法を学習できるように設計されています。これは Vertex AI Workbench 上で実行され、TFX および TensorBoard との統合と、Jupyter Lab 環境での TFX との相互作用を示しています。
あなたは何をするつもりですか?
TFX を使用して ML パイプラインを作成する方法を学習します。
- TFX パイプラインは、有向非巡回グラフ (「DAG」) です。多くの場合、パイプラインを DAG と呼びます。
- TFX パイプラインは、本番環境の ML アプリケーションをデプロイする場合に適しています
- TFX パイプラインは、データセットが大きい場合、または大きくなる可能性がある場合に適しています
- TFX パイプラインは、トレーニングとサービングの一貫性が重要な場合に適しています
- TFX パイプラインは、推論のためのバージョン管理が重要な場合に適しています
- Google は本番環境の ML に TFX パイプラインを使用しています
詳細については、 TFX ユーザー ガイドを参照してください。
一般的な ML 開発プロセスに従います。
- データの取り込み、理解、クリーニング
- 特徴エンジニアリング
- トレーニング
- モデルのパフォーマンスの分析
- 泡立てて、すすぎ、の繰り返し
- 生産準備完了
パイプライン オーケストレーション用の Apache Airflow
TFX オーケストレーターは、パイプラインによって定義された依存関係に基づいて、TFX パイプラインのコンポーネントをスケジュールする役割を担います。 TFX は、複数の環境およびオーケストレーション フレームワークに移植できるように設計されています。 TFX でサポートされている既定のオーケストレーターの 1 つがApache Airflowです。このラボでは、TFX パイプライン オーケストレーションに Apache Airflow を使用する方法を示します。 Apache Airflow は、ワークフローをプログラムで作成、スケジュール、監視するためのプラットフォームです。 TFX は Airflow を使用して、ワークフローをタスクの有向非巡回グラフ (DAG) として作成します。豊富なユーザー インターフェイスにより、実稼働環境で実行されているパイプラインを簡単に視覚化し、進行状況を監視し、必要に応じて問題をトラブルシューティングできます。 Apache Airflow ワークフローはコードとして定義されます。これにより、保守性、バージョン管理性、テスト性、協調性が向上します。 Apache Airflow は、バッチ処理パイプラインに適しています。軽量で習得が容易です。
この例では、Airflow を手動で設定して、インスタンスで TFX パイプラインを実行します。
TFX でサポートされている他の既定のオーケストレーターは、Apache Beam と Kubeflow です。 Apache Beamは、複数のデータ処理バックエンド (Beam Ruunners) で実行できます。 Cloud Dataflow は、TFX パイプラインの実行に使用できるビーム ランナーの 1 つです。 Apache Beam は、ストリーミング パイプラインとバッチ処理パイプラインの両方に使用できます。
Kubeflowは、Kubernetes での機械学習 (ML) ワークフローのデプロイをシンプル、ポータブル、スケーラブルにすることに特化したオープンソースの ML プラットフォームです。 Kubeflow は、TFFX パイプラインを Kubernetes クラスターにデプロイする必要がある場合に、それらのオーケストレーターとして使用できます。さらに、独自のカスタム オーケストレーターを使用して TFX パイプラインを実行することもできます。
Airflow の詳細については、こちらをご覧ください。
シカゴのタクシー データセット
シカゴ市が公開したTaxi Trips データセットを使用します。
モデルの目標 - 二項分類
顧客のチップは 20% を超えますか、それとも少なくなりますか?
Google Cloud プロジェクトをセットアップする
[ラボを開始] ボタンをクリックする前に、次の手順をお読みください。ラボには時間制限があり、一時停止することはできません。 [ Start Lab ] をクリックすると開始されるタイマーは、Google Cloud リソースが利用可能になる時間を示します。
このハンズオン ラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境でラボのアクティビティを自分で行うことができます。これは、ラボの期間中にログインして Google Cloud にアクセスするために使用する新しい一時的な認証情報を提供することによって実現されます。
必要なものこのラボを完了するには、次のものが必要です。
- 標準のインターネット ブラウザへのアクセス (Chrome ブラウザを推奨)。
- ラボを完了する時間です。
ラボを開始して Google Cloud Console にサインインする方法1. [ Start Lab ] ボタンをクリックします。ラボの料金を支払う必要がある場合は、支払い方法を選択するためのポップアップが開きます。左側には、このラボで使用する必要がある一時的な資格情報が入力されたパネルがあります。
- ユーザー名をコピーし、[ Open Google Console ] をクリックします。ラボはリソースを起動し、サインインページを表示する別のタブを開きます。
ヒント:タブを別々のウィンドウで横に並べて開きます。
- サインインページで、左側のパネルからコピーしたユーザー名を貼り付けます。次に、パスワードをコピーして貼り付けます。
- 後続のページをクリックします。
- 利用規約に同意します。
回復オプションや 2 要素認証を追加しないでください (これは一時的なアカウントであるため)。
無料トライアルにサインアップしないでください。
しばらくすると、Cloud Console がこのタブで開きます。
クラウド シェルを有効にする
Cloud Shell は、開発ツールを搭載した仮想マシンです。永続的な 5 GB のホーム ディレクトリを提供し、Google Cloud 上で実行されます。 Cloud Shell は、Google Cloud リソースへのコマンドライン アクセスを提供します。
Cloud Console の右上のツールバーで、[ Cloud Shell をアクティブにする] ボタンをクリックします。
[続行]をクリックします。
環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは _PROJECT IDに設定されています。例えば:
gcloud
は、Google Cloud のコマンドライン ツールです。 Cloud Shell にプリインストールされており、タブ補完をサポートしています。
次のコマンドを使用して、アクティブなアカウント名を一覧表示できます。
gcloud auth list
(出力)
ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net アクティブなアカウントを設定するには、次を実行します: $ gcloud config set account
ACCOUNT
次のコマンドでプロジェクト ID を一覧表示できます: gcloud config list project
(出力)
[コア] プロジェクト =
(出力例)
[コア] プロジェクト = qwiklabs-gcp-44776a13dea667a6
gcloud の完全なドキュメントについては、 gcloud コマンドライン ツールの概要を参照してください。
Google Cloud サービスを有効にする
- Cloud Shell で gcloud を使用して、ラボで使用するサービスを有効にします。
gcloud services enable notebooks.googleapis.com
Vertex Notebook インスタンスをデプロイする
- ナビゲーション メニューをクリックし、 Vertex AIに移動してからWorkbenchに移動します。
[ノートブック インスタンス] ページで、[新しいノートブック] をクリックします。
[Customize instance] メニューで [ TensorFlow Enterprise ] を選択し、 TensorFlow Enterprise 2.x (with LTS) > Without GPUsのバージョンを選択します。
[新しいノートブック インスタンス] ダイアログで、鉛筆アイコンをクリックしてインスタンス プロパティを編集します。
[インスタンス名]に、インスタンスの名前を入力します。
Regionには
us-east1
を選択し、 Zoneには選択したリージョン内のゾーンを選択します。[マシン構成] まで下にスクロールし、[マシンの種類] で [ e2-standard-2]を選択します。
残りのフィールドはデフォルトのままにして、[ Create ] をクリックします。
数分後、Vertex AI コンソールにインスタンス名が表示され、続いてOpen Jupyterlabが表示されます。
- [ JupyterLab を開く] をクリックします。 JupyterLab ウィンドウが新しいタブで開きます。
環境をセットアップする
ラボ リポジトリのクローンを作成する
次に、JupyterLab インスタンスでtfx
リポジトリのクローンを作成します。 1. JupyterLab で、ターミナルアイコンをクリックして新しいターミナルを開きます。
Cancel
] をクリックします。
-
tfx
Github リポジトリのクローンを作成するには、次のコマンドを入力してEnterを押します。
git clone https://github.com/tensorflow/tfx.git
- リポジトリのクローンを作成したことを確認するには、
tfx
ディレクトリをダブルクリックし、その内容が表示されることを確認します。
ラボの依存関係をインストールする
- 以下を実行して
tfx/tfx/examples/airflow_workshop/taxi/setup/
フォルダーに移動し、././setup_demo.sh
を実行してラボの依存関係をインストールします。
cd ~/tfx/tfx/examples/airflow_workshop/taxi/setup/
./setup_demo.sh
上記のコードは
- 必要なパッケージをインストールします。
- ホームフォルダーに
airflow
フォルダーを作成します。 -
dags
フォルダーをtfx/tfx/examples/airflow_workshop/taxi/setup/
フォルダーから~/airflow/
airflow/ フォルダーにコピーします。 - csv ファイルを
tfx/tfx/examples/airflow_workshop/taxi/setup/data
から~/airflow/data
airflow/data にコピーします。
Airflow サーバーの構成
ブラウザで Airflow サーバーにアクセスするためのファイアウォール ルールを作成する
<a href="https://console.cloud.google.com/networking/firewalls/list">https://console.cloud.google.com/networking/firewalls/list</a>
にアクセスして、プロジェクト名は適切に選択されています- 上部の
CREATE FIREWALL RULE
オプションをクリックします
[ファイアウォールの作成] ダイアログで、以下の手順に従います。
- Nameに
airflow-tfx
ます。 - [優先度]で、
1
を選択します。 - [ターゲット]で、[
All instances in the network
] を選択します。 - [送信元 IPv4 範囲] には、
0.0.0.0/0
/0 を選択します - Protocols and portsで、
tcp
をクリックし、tcp
の横のボックスに7000
と入力します。 - [
Create
をクリックします。
シェルから気流サーバーを実行する
Jupyter Lab ターミナル ウィンドウでホーム ディレクトリに移動し、airflow airflow users create
コマンドを実行して、Airflow の管理者ユーザーを作成します。
cd
airflow users create --role Admin --username admin --email admin --firstname admin --lastname admin --password admin
次に、 airflow webserver
とairflow scheduler
コマンドを実行してサーバーを実行します。ファイアウォールの通過が許可されているため、ポート7000
を選択します。
nohup airflow webserver -p 7000 &> webserver.out &
nohup airflow scheduler &> scheduler.out &
外部 IP を取得する
- Cloud Shell で、
gcloud
を使用して外部 IP を取得します。
gcloud compute instances list
DAG/パイプラインの実行
ブラウザで
ブラウザを開き、http:// にアクセスします。
- ログイン ページで、
airflow users create
コマンドの実行時に選択したユーザー名 (admin
) とパスワード (admin
) を入力します。
Airflow は、Python ソース ファイルから DAG を読み込みます。各ファイルを取得して実行します。次に、そのファイルから DAG オブジェクトをロードします。 DAG オブジェクトを定義するすべての.py
ファイルは、Airflow ホームページにパイプラインとして一覧表示されます。
このチュートリアルでは、Airflow は DAG オブジェクトの~/airflow/dags/
フォルダーをスキャンします。
~/airflow/dags/taxi_pipeline.py
を開いて一番下までスクロールすると、DAG オブジェクトを作成し、 DAG
という名前の変数に格納していることがわかります。したがって、以下に示すように、Airflow ホームページにパイプラインとしてリストされます。
タクシーをクリックすると、DAG のグリッド ビューにリダイレクトされます。上部の [ Graph
] オプションをクリックして、DAG のグラフ ビューを取得できます。
タクシー パイプラインをトリガーする
ホームページには、DAG の操作に使用できるボタンが表示されます。
アクションヘッダーの下で、トリガーボタンをクリックしてパイプラインをトリガーします。
タクシーDAGページで、右側のボタンを使用して、パイプラインの実行中に DAG のグラフ ビューの状態を更新します。さらに、自動更新を有効にして、状態が変化したときにグラフ ビューを自動的に更新するように Airflow に指示することもできます。
ターミナルでAirflow CLIを使用して、DAG を有効にしてトリガーすることもできます。
# enable/disable
airflow pause <your DAG name>
airflow unpause <your DAG name>
# trigger
airflow trigger_dag <your DAG name>
パイプラインが完了するのを待っています
パイプラインをトリガーした後、DAG ビューで、実行中のパイプラインの進行状況を確認できます。各コンポーネントが実行されると、DAG グラフ内のコンポーネントの輪郭の色が変化して、その状態が示されます。コンポーネントの処理が完了すると、アウトラインが濃い緑色に変わり、処理が完了したことが示されます。
コンポーネントを理解する
次に、このパイプラインのコンポーネントを詳細に見ていき、パイプラインの各ステップで生成される出力を個別に見ていきます。
JupyterLab で
~/tfx/tfx/examples/airflow_workshop/taxi/notebooks/
に移動しますnotebook.ipynb を開きます。
ノートブックでラボを続行し、実行(
) アイコンを画面上部に表示します。または、 SHIFT + ENTERを使用してセル内のコードを実行できます。
説明を読んで、各セルで何が起こっているかを理解してください。