モデルのトレーニングとデプロイ

このチュートリアルのこれまでのステップでは、トレーニング用のデータを準備し、Vertex AI がモデルのトレーニングに使用するスクリプトを作成しました。これで、Vertex AI SDK for Python を使用して CustomTrainingJob を作成する準備が整いました。

CustomTrainingJob を作成する際には、バックグラウンドでトレーニング パイプラインを定義します。Vertex AI は、トレーニング パイプラインと Python トレーニング スクリプトのコードを使用して、モデルのトレーニングと作成を行います。詳細については、トレーニング パイプラインの作成をご覧ください。

トレーニング パイプラインを定義する

トレーニング パイプラインを作成するために、CustomTrainingJob オブジェクトを作成します。次のステップでは、CustomTrainingJobrun コマンドを使用してモデルを作成し、トレーニングします。CustomTrainingJob を作成するには、そのコンストラクタに次のパラメータを渡します。

  • display_name - Python トレーニング スクリプトのコマンド引数を定義したときに作成した JOB_NAME 変数。

  • script_path - このチュートリアルで前に作成した Python トレーニング スクリプトのパス。

  • container_url - モデルのトレーニングに使用される Docker コンテナ イメージの URI。

  • requirements - スクリプトの Python パッケージ依存関係のリスト。

  • model_serving_container_image_uri - モデルの予測を行う Docker コンテナ イメージの URI。このコンテナには、事前ビルド済みのものや独自のカスタム イメージを使用できます。このチュートリアルでは、事前ビルド済みのコンテナを使用します。

次のコードを実行して、トレーニング パイプラインを作成します。CustomTrainingJob メソッドは、task.py ファイルの Python トレーニング スクリプトを使用して CustomTrainingJob を作成します。

job = aiplatform.CustomTrainingJob(
    display_name=JOB_NAME,
    script_path="task.py",
    container_uri="us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-8:latest",
    requirements=["google-cloud-bigquery>=2.20.0", "db-dtypes", "protobuf<3.20.0"],
    model_serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest",
)

モデルを作成してトレーニングする

前の手順では、job という名前の CustomTrainingJob を作成しました。モデルを作成してトレーニングするには、CustomTrainingJob オブジェクトの run メソッドを呼び出し、以下のパラメータを渡します。

  • dataset - このチュートリアルで前に作成した表形式のデータセット。このパラメータには、表形式、画像、動画、テキストのデータセットを指定できます。

  • model_display_name - モデルの名前。

  • bigquery_destination - BigQuery データセットのロケーションを指定する文字列。

  • args - Python トレーニング スクリプトに渡すコマンドライン引数。

データのトレーニングを開始してモデルを作成するには、ノートブックで次のコードを実行します。

MODEL_DISPLAY_NAME = "penguins_model_unique"

# Start the training and create your model
model = job.run(
    dataset=dataset,
    model_display_name=MODEL_DISPLAY_NAME,
    bigquery_destination=f"bq://{project_id}",
    args=CMDARGS,
)

次のステップに進む前に、job.run コマンドの出力に次の内容が含まれていることを確かめ、完了していることを確認します。

CustomTrainingJob run completed

トレーニング ジョブが完了すると、モデルをデプロイできます。

モデルをデプロイする

モデルをデプロイするときに、予測に使用される Endpoint リソースも作成します。モデルをデプロイしてエンドポイントを作成するには、ノートブックで次のコードを実行します。

DEPLOYED_NAME = "penguins_deployed_unique"

endpoint = model.deploy(deployed_model_display_name=DEPLOYED_NAME)

モデルがデプロイされるまで待ってから次のステップに進みます。モデルをデプロイすると、Endpoint model deployed というテキストが出力されます。Vertex AI コンソールの左側のナビゲーション パネルで [エンドポイント] をクリックし、[モデル] で値をモニタリングすることもできます。エンドポイントが作成されてからモデルがデプロイされるまでの値は 0 です。モデルがデプロイされると値は 1 に更新されます。

エンドポイントが作成されてからモデルがデプロイされるまでのエンドポイントを次に示します。

モデルがデプロイされていないエンドポイント。

エンドポイントが作成されてモデルがデプロイされた後のエンドポイントを次に示します。

モデルがデプロイされていないエンドポイント。