このチュートリアルでは、BigQuery ML モデルをエクスポートしてから、AI Platform またはローカルマシンにモデルをデプロイする方法を説明します。BigQuery 一般公開データセットの iris
テーブルを使用して、次のエンドツーエンドのシナリオを実施します。
- ロジスティック回帰モデルのトレーニングとデプロイ。DNN 分類器、DNN リグレッサー、K 平均法、線形回帰、行列分解モデルにも適用されます。
- ブーストツリー分類モデルのトレーニングとデプロイ。ブーストツリー リグレッサー モデルにも適用されます。
- AutoML 分類モデルのトレーニングとデプロイ。AutoML リグレッサー モデルにも適用されます。
費用
このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。
- BigQuery ML
- Cloud Storage
- AI Platform(オプション。オンライン予測に使用)
BigQuery ML の費用の詳細については、BigQuery ML の料金をご覧ください。
Cloud Storage の費用の詳細については、Cloud Storage の料金ページをご覧ください。
AI Platform の費用の詳細については、予測ノードとリソース割り当てページをご覧ください。
始める前に
- 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.
-
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.
- 新しいプロジェクトでは、BigQuery が自動的に有効になります。既存のプロジェクトで BigQuery を有効にするには、
Enable the BigQuery API.
に移動します。 -
Enable the AI Platform Training and Prediction API and Compute Engine APIs.
- Google Cloud CLI と Google Cloud CLI をインストールします。
データセットを作成する
ML モデルを保存する BigQuery データセットを作成します。
Google Cloud コンソールで [BigQuery] ページに移動します。
[エクスプローラ] ペインで、プロジェクト名をクリックします。
「アクションを表示」> [データセットを作成] をクリックします。
[データセットを作成する] ページで、次の操作を行います。
[データセット ID] に「
bqml_tutorial
」と入力します。[ロケーション タイプ] で [マルチリージョン] を選択してから、[US (米国の複数のリージョン)] を選択します。
一般公開データセットは
US
マルチリージョンに保存されています。わかりやすくするため、データセットを同じロケーションに保存します。残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。
ロジスティック回帰モデルのトレーニングとデプロイ
モデルをトレーニングする
BigQuery ML の CREATE MODEL
ステートメントを使用して、アヤメの種類を予測するロジスティック回帰モデルをトレーニングします。このトレーニング ジョブは約 1 分で完了します。
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.iris_model` OPTIONS (model_type="logistic_reg", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
モデルをエクスポートする
bq コマンドライン ツールを使用して、モデルを Cloud Storage バケットにエクスポートします。モデルをエクスポートするその他の方法については、BigQuery ML モデルのエクスポートをご覧ください。この抽出ジョブは 1 分以内に完了します。
bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model
ローカルでのデプロイと提供
エクスポートした TensorFlow モデルは、TensorFlow Serving Docker コンテナを使用してデプロイできます。次のステップでは、Docker をインストールする必要があります。
エクスポートしたモデルファイルを一時ディレクトリにダウンロードする
mkdir tmp_dir
gcloud storage cp gs://some/gcs/path/iris_model tmp_dir --recursive
バージョン サブディレクトリを作成する
このステップでは、モデルのバージョン番号(この場合は 1)を設定します。
mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir
Docker イメージを pull する
docker pull tensorflow/serving
Docker コンテナを実行する
docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &
予測を実行する
curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict
オンラインでのデプロイと提供
このセクションでは、Google Cloud CLI を使用して、エクスポートされたモデルに対して予測をデプロイおよび実施します。
オンライン / バッチ予測のためにモデルを AI Platform にデプロイする方法の詳細については、モデルのデプロイをご覧ください。
モデルリソースを作成する
MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
モデル バージョンの作成
1)環境変数を設定する。
MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"
2)バージョンを作成する。
gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK
このステップが完了するまで数分かかることがあります。Creating version (this might take a few minutes)......
というメッセージが表示されます。
3)(省略可)新しいバージョンに関する情報を取得する。
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
次のような出力が表示されます。
createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
オンライン予測
デプロイされたモデルに対してオンライン予測を実行する方法については、予測のリクエストをご覧ください。
1)入力用の改行区切りの JSON ファイルを作成する(例: 次の内容の instances.json
ファイル)
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2)予測用の環境変数を設定する。
INPUT_DATA_FILE="instances.json"
3)予測を実行する。
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
ブーストツリー分類モデルのトレーニングとデプロイ
モデルをトレーニングする
CREATE MODEL
ステートメントを使用して、アヤメの種類を予測するブーストツリー分類モデルをトレーニングします。このトレーニング ジョブが完了するまでに 7 分ほどかかります。
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.boosted_tree_iris_model` OPTIONS (model_type="boosted_tree_classifier", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
モデルをエクスポートする
bq コマンドライン ツールを使用して、モデルを Cloud Storage バケットにエクスポートします。モデルをエクスポートするその他の方法については、BigQuery ML モデルのエクスポートをご覧ください。
bq extract --destination_format ML_XGBOOST_BOOSTER -m bqml_tutorial.boosted_tree_iris_model gs://some/gcs/path/boosted_tree_iris_model
ローカルでのデプロイと提供
エクスポートされたファイルには、ローカル実行用の main.py
ファイルが含まれています。
エクスポートしたモデルファイルをローカル ディレクトリにダウンロードする
mkdir serving_dir
gcloud storage cp gs://some/gcs/path/boosted_tree_iris_model serving_dir --recursive
予測因子を抽出する
tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/
XGBoost ライブラリをインストールする
XGBoost ライブラリのバージョン 0.82 以降をインストールします。
予測を実行する
cd serving_dir/boosted_tree_iris_model/
python main.py '[{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]'
オンラインでのデプロイと提供
このセクションでは、Google Cloud CLI を使用して、AI Platform オンライン予測でエクスポートされたモデルに対して予測をデプロイおよび実施します。
カスタム ルーチンを使用してオンライン / バッチ予測用のモデルを AI Platform にデプロイする方法について詳しくは、モデルのデプロイをご覧ください。
モデルリソースを作成する
MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
モデル バージョンの作成
1)環境変数を設定する。
MODEL_DIR="gs://some/gcs/path/boosted_tree_iris_model"
VERSION_NAME="v1"
2)バージョンを作成する。
gcloud beta ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --package-uris=${MODEL_DIR}/xgboost_predictor-0.1.tar.gz --prediction-class=predictor.Predictor --runtime-version=1.15
このステップが完了するまで数分かかることがあります。Creating version (this might take a few minutes)......
というメッセージが表示されます。
3)(省略可)新しいバージョンに関する情報を取得する。
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
次のような出力が表示されます。
createTime: '2020-02-07T00:35:42Z'
deploymentUri: gs://some/gcs/path/boosted_tree_iris_model
etag: rp090ebEnQk=
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/BOOSTED_TREE_IRIS_MODEL/versions/v1
packageUris:
- gs://some/gcs/path/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz
predictionClass: predictor.Predictor
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
オンライン予測
デプロイされたモデルに対してオンライン予測を実行する方法については、予測のリクエストをご覧ください。
1)入力用の改行区切りの JSON ファイルを作成する。たとえば、次の内容を含む instances.json
ファイルを作成します。
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2)予測用の環境変数を設定する。
INPUT_DATA_FILE="instances.json"
3)予測を実行する。
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
AutoML 分類モデルのトレーニングとデプロイ
モデルをトレーニングする
CREATE MODEL
ステートメントを使用して、アヤメの種類を予測する AutoML 分類モデルをトレーニングします。AutoML モデルには、少なくとも 1,000 行の入力データが必要です。ml_datasets.iris
には 150 行しかないため、このデータを 10 回複製します。このトレーニング ジョブが完了するまでに 2 時間ほどかかります。
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.automl_iris_model` OPTIONS (model_type="automl_classifier", budget_hours=1, input_label_cols=["species"]) AS SELECT * EXCEPT(multiplier) FROM `bigquery-public-data.ml_datasets.iris`, unnest(GENERATE_ARRAY(1, 10)) as multiplier;'
モデルをエクスポートする
bq コマンドライン ツールを使用して、モデルを Cloud Storage バケットにエクスポートします。モデルをエクスポートするその他の方法については、BigQuery ML モデルのエクスポートをご覧ください。
bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model
ローカルでのデプロイと提供
AutoML コンテナの構築方法については、モデルのエクスポートをご覧ください。次のステップでは、Docker をインストールする必要があります。
エクスポートされたモデルファイルをローカル ディレクトリにコピーする
mkdir automl_serving_dir
gcloud storage cp gs://some/gcs/path/automl_iris_model/* automl_serving_dir/ --recursive
AutoML Docker イメージを pull する
docker pull gcr.io/cloud-automl-tables-public/model_server
Docker コンテナを起動する
docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
予測を実行する
1)入力用の改行区切りの JSON ファイルを作成する。たとえば、次の内容を含む input.json
ファイルを作成します。
{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0},
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}]}
2)予測呼び出しを行う。
curl -X POST --data @input.json http://localhost:8080/predict
オンラインでのデプロイと提供
AutoML リグレッサーと AutoML 分類モデルのオンライン予測は、AI Platform ではサポートされていません。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
- 作成したプロジェクトを削除する。
- または、プロジェクトを保持し、データセットと Cloud Storage バケットを削除する。
Docker コンテナを停止する
1)実行中のすべての Docker コンテナを一覧表示する。
docker ps
2)コンテナリストから該当するコンテナ ID のコンテナを停止する。
docker stop container_id
AI Platform リソースを削除する
1)モデル バージョンを削除する。
gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME
2)モデルを削除する。
gcloud ai-platform models delete $MODEL_NAME
データセットを削除する
プロジェクトを削除すると、プロジェクト内のデータセットとテーブルがすべて削除されます。プロジェクトを再利用する場合は、このチュートリアルで作成したデータセットを削除できます。
必要に応じて、Google Cloud コンソールで [BigQuery] ページを開きます。
ナビゲーションで、作成した bqml_tutorial データセットをクリックします。
ウィンドウの右側にある [データセットを削除] をクリックします。この操作を行うと、データセット、テーブル、すべてのデータが削除されます。
[データセットの削除] ダイアログ ボックスでデータセットの名前(
bqml_tutorial
)を入力して、[削除] をクリックします。
Cloud Storage バケットの削除
プロジェクトを削除すると、プロジェクト内のすべての Cloud Storage バケットが削除されます。プロジェクトを再利用する場合は、このチュートリアルで作成したバケットを削除できます。
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
削除するバケットのチェックボックスをオンにします。
[削除] をクリックします。
上に重なったウィンドウで、[削除] をクリックして、バケットとそのコンテンツを削除することを確認します。
プロジェクトを削除する
プロジェクトを削除するには:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
- BigQuery ML の概要で BigQuery ML の概要を確認する。
- モデルのエクスポートについて、モデルのエクスポートを確認する。
CREATE MODEL
構文ページでモデルの作成方法を確認する。