AI Platform Training の組み込みアルゴリズムを使用すると、トレーニング アプリケーションのコードを一切作成せずに、トレーニング データの送信とアルゴリズムの選択を行い、AI Platform Training による前処理とトレーニングを実施できます。
概要
このチュートリアルでは、コードを一切作成せずに XGBoost モデルのトレーニングを行います。国勢調査所得データセットを AI Platform Training に送信して前処理とトレーニングを実施し、次にモデルを AI Platform Training にデプロイして予測を取得します。作成したモデルで、個人の年収が $50,000 を超える確率を予測します。
始める前に
コマンドラインでこのチュートリアルを実行するには、Cloud Shell を使用するか、Google Cloud CLI がインストールされている環境を使用します。
次の手順で GCP アカウントの設定、必要な API の有効化、Google Cloud CLI のインストールと有効化を行います。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
設定
表形式の組み込みアルゴリズムを使用するには、CSV ファイルからヘッダー行を削除し、ターゲット値を最初の列に移動する必要があります。このチュートリアルで使用するため、元の国勢調査データセットに変更を加えて、Cloud Storage の公開バケット gs://cloud-samples-data/ai-platform/census/algorithms/data/
に追加しました。
Console
トレーニング ジョブを開始する前に、Cloud Storage の公開バケットからご使用の Cloud Storage バケットにデータをコピーする必要があります。
サンプルデータを Cloud Storage バケットにコピーする
まず、Cloud Storage の公開バケットからトレーニング データとテストデータをダウンロードします。
Cloud Storage の公開バケットに移動します。
test.csv
とtrain.csv
の両方をダウンロードします。ファイル名をクリックします。
[オブジェクトの詳細] ページで、[ダウンロード] をクリックします。これらのファイルは、それぞれ
ai-platform_census_algorithms_data_test.csv
とai-platform_census_algorithms_data_train.csv
としてローカル環境にダウンロードされます。
次に、トレーニング データとテストデータをご使用の Cloud Storage バケットにアップロードします。
Cloud Storage バケットの [ブラウザ] ページに移動します。[プロジェクトを選択] プルダウン リストからプロジェクトを選択するか、新しいタブでプロジェクトを開きます。
使用するバケットの名前をクリックします。バケットが存在しない場合は、新しいバケットを作成します(新しいバケットを作成する場合は、リージョン バケットであることを確認してください。また、AI Platform Training のトレーニング ジョブを実行しているリージョンと同じリージョンを選択してください)。
(省略可)[フォルダを作成] をクリックし、ファイルをアップロードするフォルダを作成します。フォルダの名前(「data」など)を入力して、[作成] をクリックします。次に、フォルダ名をクリックして新しいフォルダに移動します。
[ファイルをアップロード] をクリックして、トレーニング ファイルとテストファイル(
ai-platform_census_algorithms_data_train.csv
とai-platform_census_algorithms_data_test.csv
)の両方をバケットにアップロードします。
これでデータがバケットにコピーされたので、使用するアルゴリズムの種類を選択してトレーニング ジョブを開始できます。
アルゴリズムを選択する
Google Cloud コンソールで AI Platform Training の [ジョブ] ページに移動します。
[新規トレーニング ジョブ] ボタンをクリックします。下に表示されたオプションから、[組み込みアルゴリズムによるトレーニング] をクリックします。[新しいトレーニング ジョブの作成] ページが表示されます。
トレーニング ジョブの作成は 4 つのステップに分かれています。最初のステップはトレーニング アルゴリズムです。[XGBoost] を選択して、[次へ] をクリックします。
gcloud
プロジェクト ID、Cloud Storage バケット、Cloud Storage 上のトレーニング データへのパス、使用するアルゴリズムのそれぞれを格納する環境変数を設定します。
AI Platform Training の組み込みアルゴリズムは、Container Registry でホストされている Docker コンテナにあります。
PROJECT_ID=YOUR_PROJECT_ID
BUCKET_NAME=YOUR_BUCKET_NAME
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
# Copy the training data into your Cloud Storage bucket, and set the path
# to your copy of the training data.
TRAINING_DATA_SOURCE=gs://cloud-samples-data/ai-platform/census/algorithms/data/train.csv
TRAINING_DATA_PATH=gs://$BUCKET_NAME/algorithms-demo/data/train.csv
gcloud storage cp $TRAINING_DATA_SOURCE $TRAINING_DATA_PATH
# Specify the Docker container URI specific to the algorithm.
IMAGE_URI="gcr.io/cloud-ml-algos/boosted_trees:latest"
トレーニング ジョブを送信する
ジョブを送信するには、基本的なトレーニング引数と、XGBoost アルゴリズムに関する基本的な引数を指定する必要があります。
トレーニング ジョブの一般的な引数:
トレーニング ジョブの引数 | |
---|---|
引数 | 説明 |
job-id |
トレーニング ジョブの一意の ID。トレーニング ジョブを送信した後、この ID を使用してログを検索しトレーニング ジョブのステータスを確認できます。 |
job-dir |
トレーニング ジョブが正常に完了した後に AI Platform Training がトレーニング ファイルを保存する Cloud Storage のパス。 |
scale-tier |
トレーニング用のマシンタイプを指定します。単一マシン構成を選択するには、BASIC を使用します。 |
master-image-uri |
トレーニング ジョブに使用する Docker コンテナを指定するための Container Registry URI。すでに IMAGE_URI として定義されている XGBoost 組み込みアルゴリズムのコンテナを使用します。 |
region |
トレーニング ジョブを行うために利用可能なリージョンを指定します。このチュートリアルでは、us-central1 リージョンを使用できます。 |
XGBoost 組み込みアルゴリズムに固有の引数:
アルゴリズムの引数 | |
---|---|
引数 | 説明 |
preprocess |
AI Platform Training にデータの前処理を行わせるかどうかを示すブール引数。 |
objective |
学習タスクとそのタスクに対応する学習目標を指定します。この例では、「binary:logistic」を指定します。 |
training_data_path |
Cloud Storage 上のトレーニング データの場所。トレーニング データは CSV ファイルでなければなりません。 |
XGBoost アルゴリズムに関する他のあらゆるフラグの詳細リストについては、XGBoost 組み込みアルゴリズムのリファレンスをご覧ください。
Console
[自動データ前処理を有効にする] をオンのままにします。
[トレーニング データパス] の [参照] をクリックします。右パネルで、トレーニング データをアップロードしたバケットの名前をクリックし、
ai-platform_census_algorithms_data_train.csv
ファイルに移動します。[検証データ] と [テストデータ] のフィールドはデフォルト設定のままにします。
[出力ディレクトリ] に、AI Platform Training がトレーニング ジョブの出力を保存する Cloud Storage バケットのパスを入力します。Cloud Storage バケットのパスを直接入力するか、[参照] ボタンをクリックしてパスを選択します。
ストレージを整理するため、このトレーニング ジョブ用の新しいディレクトリを Cloud Storage バケットに作成します。これは [参照] パネルで行うことができます。
[次へ] をクリックします。
[目的] として [binary:logistic] を選択します。これは、バイナリ学習タスクでロジスティック回帰を目的とすることを示します。
[モデルタイプ] として [分類] を選択します。
他のフィールドはすべてデフォルト設定のままにして、[次へ] をクリックします。
[ジョブの設定] ページで次の操作を行います。
- [ジョブ ID] に一意の ID(「xgboost_example」など)を入力します。
- [リージョン] に使用可能なリージョン(「us-central1」など)を入力します。
- [スケール階層] で [BASIC] を選択します。
[完了] をクリックしてトレーニング ジョブを送信します。
gcloud
gcloud
でジョブを送信する前に、トレーニング ジョブとアルゴリズムのすべての引数を設定します。DATASET_NAME="census" ALGORITHM="xgboost" MODEL_TYPE="classification" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" # Give a unique name to your training job. DATE="$(date '+%Y%m%d_%H%M%S')" JOB_ID="${MODEL_NAME}_${DATE}" # Make sure you have access to this Cloud Storage bucket. JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
ジョブを送信します。
gcloud ai-platform jobs submit training $JOB_ID \ --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \ -- \ --preprocess --objective=binary:logistic \ --training_data_path=$TRAINING_DATA_PATH
ジョブが正常に送信されたら、次の
gcloud
コマンドを使用してログを表示できます。gcloud ai-platform jobs describe $JOB_ID gcloud ai-platform jobs stream-logs $JOB_ID
ジョブ ディレクトリについて
トレーニング ジョブが正常に完了すると、AI Platform Training によってトレーニング済みモデルとその他のアーティファクトが Cloud Storage バケットに作成されます。JOB_DIR
内のディレクトリ構造は次のようになっています。
- model/
- model.pkl
- deployment_config.yaml
- artifacts/
- instance_generator.py
- metadata.json
- processed_data/
- training.csv
- validation.csv
- test.csv
JOB_DIR
のディレクトリ構造が上記と一致していることを確認します。
gcloud storage ls $JOB_DIR/* --all-versions
トレーニング済みモデルをデプロイする
AI Platform Prediction は、モデルリソースとバージョン リソースを使用してトレーニング済みモデルを整理します。AI Platform Prediction モデルは、機械学習モデルの複数のバージョンを格納するコンテナに相当します。
モデルをデプロイするには、AI Platform Prediction でモデルリソースを作成し、そのモデルのバージョンを作成してから、そのモデルとバージョンを使用してオンライン予測をリクエストします。
詳しくは、AI Platform Prediction にモデルをデプロイする方法をご覧ください。
Console
[ジョブ] ページには、すべてのトレーニング ジョブが一覧表示されます。先ほど送信したトレーニング ジョブの名前(「xgboost_example」または実際に使用したジョブ名)をクリックします。
[ジョブの詳細] ページでは、ジョブの全般的な進行状況を確認できます。[ログを表示] をクリックすると、進行状況の詳細が表示されます。
ジョブが成功すると、[モデルをデプロイ] ボタンが上部に表示されます。[モデルをデプロイ] をクリックします。
[新しいモデルとしてデプロイ] を選択し、モデル名(「xgboost_model」など)を入力します。次に、[確認] をクリックします。
[バージョンの作成] ページでバージョン名(「v1」など)を入力します。他のフィールドはすべてデフォルト設定のままにします。[保存] をクリックします。
[モデルの詳細] ページにバージョン名が表示されます。バージョンの作成には数分かかります。バージョンの準備ができると、バージョン名の横にチェックマークのアイコンが表示されます。
バージョン名(v1)をクリックして、[バージョンの詳細] ページに移動します。このチュートリアルの次のステップでは、予測リクエストを送信します。
gcloud
XGBoost 組み込みアルゴリズムを使用するトレーニング プロセスでは、deployment_config.yaml
ファイルが生成されます。これを使用して、予測用のモデルを AI Platform Prediction に簡単にデプロイできます。
ファイルをローカル ディレクトリにコピーし、その内容を表示します。
gcloud storage cp $JOB_DIR/model/deployment_config.yaml . cat deployment_config.yaml
deployment_config.yaml
ファイルの内容は次のようになっているはずです。deploymentUri: gs://YOUR_BUCKET_NAME/algorithms_training/census_xgboost_classification/20190227060114/model framework: XGBOOST labels: job_id: census_xgboost_classification_20190227060114 error_percentage: '14' runtimeVersion: '0.81' pythonVersion: '2.7'
AI Platform Training でモデルとバージョンを作成します。
MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}" gcloud ai-platform models create $MODEL_NAME --regions $REGION # Create a model and a version using the file above. VERSION_NAME="v_${DATE}" gcloud ai-platform versions create $VERSION_NAME \ --model $MODEL_NAME \ --config deployment_config.yaml
バージョンの作成には数分かかります。
オンライン予測を取得する
予測をリクエストするときは、入力データをトレーニング データと同じような形式にする必要があります。トレーニングの前に、AI Platform Training はデータの前処理を行って、metadata.json
で示されるコーパスに変換します。
instance_generator.py
を使用して、AI Platform Training がトレーニング データに適用するものと同じ前処理変換を入力インスタンスに適用できます。このファイルは、metadata.json
ファイルに格納されているマッピング情報を読み取ります。また、モジュール内で transform_string_instance
関数を使用して、未加工の文字列をモデルが受け入れる形式に変換することもできます。
トレーニング アーティファクト ファイルをダウンロードして、
metadata.json
を確認します。gcloud storage cp $JOB_DIR/artifacts/* . # Let's look at the metadata.json file head metadata.json
instance_generator.py
を使用して、予測入力として 1 つのデータ インスタンスを準備します。# ground truth is >50K RAW_DATA_POINT="44, Private, 160323, Some-college, 10, Married-civ-spouse, Machine-op-inspct, Husband, Black, Male, 7688, 0, 40, United-States" # Now let's create a JSON prediction request python instance_generator.py --raw_data_string="${RAW_DATA_POINT}" > sample_input.json # Let's look at the prediction request file. cat sample_input.json
予測リクエストを送信します。
gcloud ai-platform predict \ --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances sample_input.json
予測の結果は 0.5 より大きい値になるはずです。これは、この個人の年収が $50,000 を超える可能性が高いことを示しています。
データについて
このサンプルでトレーニングに使用している国勢調査所得データセットは、UC Irvine Machine Learning Repository でホストされています。
国勢調査データ転載元: Lichman, M.(2013)。UCI Machine Learning Repository http://archive.ics.uci.edu/ml。Irvine, CA: University of California, School of Information and Computer Science。
次のステップ
- XGBoost 組み込みアルゴリズムの使用方法について詳しく学ぶ。