TensorFlow や PyTorch などの ML フレームワークを使用してカスタム トレーニング済みモデルで推論を行うには、モデルを保存して Vertex AI にアップロードし、予測エンドポイントを作成し、作成したエンドポイントでトラフィックを処理するようにモデルをデプロイする必要があります。
モデル入力
モデルを保存して Vertex AI にアップロードする前に、モデルが Earth Engine でサポートされているペイロード形式のデータを受け入れることを確認する必要があります。詳細については、ペイロード形式のページをご覧ください。
モデル アーティファクト
次のステップでは、Vertex AI でホスト可能な形式にモデルを保存します。
TensorFlow
TensorFlow ベースのモデルはさまざまな形式で保存できますが、Vertex AI では SavedModel 形式が必要です。Keras ベースのモデルは、tf.keras.Model.export()
を使用して SavedModel としてエクスポートする必要があります。他の TensorFlow モデルでは、よりプリミティブな tf.saved_model.save()
を使用する必要があります。詳細については、SavedModel 形式のドキュメントをご覧ください。
PyTorch
PyTorch モデルでは、予測サービス用にモデル アーティファクトを準備する方法が若干異なります。カスタム トレーニング モデルを作成する場合は、まずモデルを保存する必要があります。パフォーマンス上の理由から、PyTorch モデルを TorchScript に変換し、次のようにモデルファイルを保存することをおすすめします。
model_scripted = torch.jit.script(model) # Export to TorchScript
model_scripted.save('model.pt') # Save
モデルファイルを保存したら、Vertex AI にデプロイできるようにアーカイブする必要があります。ビルド済みコンテナを使用する場合は、モデルの名前を「model」にする必要があります。モデルをアーカイブするには、カスタム ハンドラとモデルに必要な追加ファイルを含めて torch-model-archiver を実行する必要があります。次に例を示します。
torch-model-archiver -f \
--model-name model \
--version 1.0 \
--serialized-file $model_file \
--handler $hander_file \
--extra-files $index_to_name_file \
--export-path $model_path
Vertex AI へのモデルのデプロイ
モデルファイルを保存したら、次のステップでモデルを Vertex AI にアップロードします。モデル アーティファクトがまだ Google Cloud Storage にない場合は、gsutil cp $model_path
gs://${your-bucket}/models/model
などのコマンドを使用して、まずモデル アーカイブをそこにコピーします。
コピーしたら、Vertex AI の Model Registry を使用してモデルをアップロードするか、gcloud コマンドラインを使用して次のようなコマンドを実行します。
gcloud ai models upload \
--artifact-uri=gs://{your-bucket}/models/model \
--display-name=${display-name} \
--container-image-uri=${model-container} \
--container-grpc-ports=8500
ヒント: 最適なパフォーマンスを得るには、container-grpc-ports
フラグを使用して gRPC 予測を有効にします。gRPC 予測の詳細については、ペイロード形式のドキュメントをご覧ください。このフラグは、gcloud コマンドライン ツールを使用してのみ指定できます。
モデル エンドポイント管理
モデルを Vertex AI にアップロードしたら、新しいエンドポイントを作成するか、gcloud コマンドラインを使用して endpoints create
コマンドと endpoints deploy-model
コマンドでエンドポイントを作成し、[オンライン予測] ページからモデルをデプロイします。次に例を示します。
モデルの作成:
gcloud ai endpoints create \
--display-name=${endpoint-name}
モデルのデプロイ
gcloud ai endpoints deploy-model {endpoint-id} \
--model=${model-id} \
--traffic-split=0=100 \
--display-name=${model-display-name} \
--min-replica-count=${min-replica-count} \
--max-replica-count=${max-replica-count}
モデルがデプロイされたら、Earth Engine でモデルに接続して推論を実行する準備が整います。