Vertex AI SDK には、モデルをトレーニングするときに使用するクラスがいくつか含まれています。ほとんどのトレーニング クラスは、モデルの作成、トレーニング、リターンに使用されます。HyperparameterTuningJob
を使用して、トレーニング ジョブのハイパーパラメータを調整できます。PipelineJob
を使用して機械学習(ML)ワークフローを管理すると、ML システムの自動化とモニタリングが可能になります。
次のトピックでは、Vertex AI SDK の各トレーニング関連クラスの概要を示します。
構造化データ用の AutoML トレーニング クラス
Vertex AI SDK には、構造化 AutoML モデルのトレーニングに使用される次のクラスが含まれています。
AutoMLForecastingTrainingJob
AutoMLForecastingTrainingJob
クラスは、AutoML
トレーニング メソッドを使用して予測モデルをトレーニングし、実行します。AutoML
トレーニング メソッドは、ほとんどの予測ユースケースに適しています。ユースケースが SequenceToSequencePlusForecastingTrainingJob
クラスおよび TemporalFusionTransformerForecastingTrainingJob
クラスでそれぞれ提供される Seq2seq
または Temporal fusion transformer
トレーニング メソッドからの恩恵を受けない場合、AutoML
が予測のトレーニング メソッドに最適です。
AutoMLForecastingTrainingJob
の使用方法を示すサンプルコードについては、GitHub のトレーニング パイプライン予測サンプルを作成するをご覧ください。
AutoMLTabularTrainingJob
AutoMLTabularTrainingJob
クラスは、AutoML
表形式モデルを作成、トレーニング、リターンするジョブを表します。表形式モデルと Vertex AI のトレーニングの詳細については、表形式データと表形式データの概要をご覧ください。
次のサンプルコード スニペットは、Vertex AI SDK を使用して AutoML
表形式モデルを作成して実行する方法を示しています。
dataset = aiplatform.TabularDataset('projects/my-project/location/us-central1/datasets/{DATASET_ID}')
job = aiplatform.AutoMLTabularTrainingJob(
display_name="train-automl",
optimization_prediction_type="regression",
optimization_objective="minimize-rmse",
)
model = job.run(
dataset=dataset,
target_column="target_column_name",
training_fraction_split=0.6,
validation_fraction_split=0.2,
test_fraction_split=0.2,
budget_milli_node_hours=1000,
model_display_name="my-automl-model",
disable_early_stopping=False,
)
SequenceToSequencePlusForecastingTrainingJob
SequenceToSequencePlusForecastingTrainingJob
クラスは、Seq2seq+
トレーニング メソッドを使用して予測モデルをトレーニングし、実行します。Seq2seq+
トレーニング メソッドは、テストに適しています。このアルゴリズムはシンプルで、AutoML
オプションよりも検索スペースが小さくなります。Seq2seq+
は、迅速な結果が必要で、データセットが 1 GB 未満の場合に適しています。
SequenceToSequencePlusForecastingTrainingJob
の使用方法を示すサンプルコードについては、GitHub のトレーニング パイプライン予測の Seq2seq サンプルを作成するをご覧ください。
TemporalFusionTransformerForecastingTrainingJob
TemporalFusionTransformerForecastingTrainingJob
クラスでは、Temporal Fusion Transformer(TFT)トレーニング メソッドを使用して、予測モデルをトレーニングして実行します。TFT トレーニング方法は、マルチホライズン予測タスクを使用して予測を生成するアテンション ベースのディープ ニューラル ネットワーク(DNN)モデルを実装します。
TemporalFusionTransformerForecastingTrainingJob
の使用方法を示すサンプルコードについては、GitHub のトレーニング パイプライン予測の Temporal Fusion Transformer サンプルを作成するをご覧ください。
TimeSeriesDenseEncoderForecastingTrainingJob
TimeSeriesDenseEncoderForecastingTrainingJob
クラスは、時系列高密度エンコーダ(TiDE)トレーニング メソッドを使用して、予測モデルをトレーニングして実行します。TiDE は、多層パーセプトロン(MLP)を使用して、共変量と非線形の依存関係で線形モデルの予測速度を実現します。TiDE の詳細については、ディープ ロングホライズン予測の最近の進歩とこの TiDE のブログ投稿をご覧ください。
非構造化データ用の AutoML トレーニング クラス
Vertex AI SDK には、非構造化の画像、テキスト、動画モデルをトレーニングするための次のクラスが含まれています。
AutoMLImageTrainingJob
AutoMLImageTrainingJob
クラスを使用して、画像モデルを作成、トレーニング、リターンします。Vertex AI での画像データモデルの操作について詳しくは、画像データをご覧ください。
AutoMLImageTrainingJob
クラスの使用方法の例については、AutoML 画像分類ノートブックのチュートリアルをご覧ください。
AutoMLTextTrainingJob
AutoMLTextTrainingJob
クラスを使用して、テキストモデルを作成、トレーニング、リターンします。Vertex AI でテキストデータ モデルを操作する方法について詳しくは、テキストデータをご覧ください。
AutoMLTextTrainingJob
クラスの使用例については、オンライン予測用 AutoML トレーニング テキスト エンティティ抽出モデルノートブックのチュートリアルをご覧ください。
AutoMLVideoTrainingJob
AutoMLVideoTrainingJob
クラスを使用して、動画モデルを作成、トレーニング、リターンします。Vertex AI での動画データモデルの操作について詳しくは、動画データをご覧ください。
AutoMLVideoTrainingJob
クラスの使用例については、バッチ予測用 AutoML トレーニング動画アクション認識モデルノートブックのチュートリアルをご覧ください。
カスタムデータ トレーニング クラス
Vertex AI SDK を使用して、カスタム トレーニング ワークフローを自動化できます。Vertex AI を使用してカスタム トレーニング アプリケーションを実行する方法については、カスタム トレーニングの概要をご覧ください。
Vertex AI SDK には、カスタム トレーニング パイプラインを作成する 3 つのクラスが含まれています。トレーニング パイプラインは、モデルのトレーニングに使用する入力 Vertex AI マネージド データセットを受け取ります。次に、トレーニング ジョブの完了後にモデルを返します。3 つのカスタム トレーニング パイプライン クラスは、それぞれ異なるトレーニング パイプラインを作成します。CustomTrainingJob
は Python スクリプトを使用、CustomContainerTrainingJob
はカスタム コンテナを使用、CustomPythonPackageTrainingJob
は Python パッケージとビルド済みのコンテナを使用します。
CustomJob
クラスはカスタム トレーニング ジョブを作成しますが、パイプラインではありません。カスタム トレーニング パイプラインとは異なり、CustomJob
クラスは Vertex AI マネージド データセットではないデータセットを使用してモデルをトレーニングし、トレーニング済みモデルを返しません。このクラスはさまざまなタイプのデータセットを受け入れ、トレーニング済みモデルを返すことはないため、カスタム トレーニング パイプラインよりも自動化は低く、柔軟性は高くなります。
CustomContainerTrainingJob
CustomContainerTrainingJob
クラスを使用すると、コンテナを使用して Vertex AI でカスタム トレーニング パイプラインを起動できます。
CustomContainerTrainingJob
クラスの使用例については、のカスタム コンテナで Vertex AI Training を使用した GPU での PyTorch 画像分類マルチノード分散データ並列トレーニングノートブックのチュートリアルをご覧ください。
CustomJob
CustomJob
クラスを使用して、スクリプトを使用して Vertex AI でカスタム トレーニング ジョブを起動します。
トレーニング ジョブは、Vertex AI マネージド データセットへのデータの読み込みに限定されず、トレーニング ジョブの完了後にモデルへの参照が登録されないため、トレーニング パイプラインよりも柔軟性があります。たとえば、scikit-learn または TensorFlow のデータセットを読み込むために、CustomJob
クラス、その from_local_script
メソッドおよびスクリプトを使用する場合があります。また、トレーニング済みモデルを Vertex AI に登録する前に、分析またはテストする場合があります。
カスタム トレーニング ジョブの送信前の要件、カスタムジョブの内容、Python コードサンプルなど、カスタム トレーニング ジョブの詳細については、カスタム トレーニング ジョブの作成をご覧ください。
CustomJob.run
はトレーニング済みモデルを返さないため、スクリプトを使用して Cloud Storage バケットなどの場所にモデル アーティファクトを書き込む必要があります。詳細については、トレーニング済み ML モデルをエクスポートするをご覧ください。
次のサンプルコードは、サンプル ワーカープールの仕様を使用してカスタムジョブを作成し、実行する方法を示しています。このコードは、トレーニング済みモデルを artifact-bucket という名前の Cloud Storage バケットに書き込みます。
# Create a worker pool spec that specifies a TensorFlow cassava dataset and
# includes the machine type and Docker image. The Google Cloud project ID
# is 'project-id'.
worker_pool_specs=[
{
"replica_count": 1,
"machine_spec": { "machine_type": "n1-standard-8",
"accelerator_type": "NVIDIA_TESLA_V100",
"accelerator_count": 1
},
"container_spec": {"image_uri": "gcr.io/{project-id}/multiworker:cassava"}
},
{
"replica_count": 1,
"machine_spec": { "machine_type": "n1-standard-8",
"accelerator_type": "NVIDIA_TESLA_V100",
"accelerator_count": 1
},
"container_spec": {"image_uri": "gcr.io/{project-id}/multiworker:cassava"}
}
]
# Use the worker pool spec to create a custom training job. The custom training
# job artifacts are stored in the Cloud Storage bucket
# named 'artifact-bucket'.
your_custom_training_job = aiplatform.CustomJob(
display_name='multiworker-cassava-sdk',
worker_pool_specs=worker_pool_specs,
staging_bucket='gs://{artifact-bucket}')
# Run the training job. This method doesn't return the trained model.
my_multiworker_job.run()
CustomPythonPackageTrainingJob
CustomPythonPackageTrainingJob
クラスを使用すると、Python パッケージを使用して Vertex AI でカスタム トレーニング パイプラインを起動できます。
CustomPythonPackageTrainingJob
クラスの使用例については、Python パッケージ、マネージド テキスト データセット、TensorFlow サービス提供コンテナを使用したカスタム トレーニングノートブックのチュートリアルをご覧ください。
CustomTrainingJob
CustomTrainingJob
クラスを使用すると、スクリプトで Vertex AI でカスタム トレーニング パイプラインを起動できます。
CustomTrainingJob
クラスの使用例については、説明可能性によるオンライン予測用のカスタム トレーニング画像分類モデルノートブックのチュートリアルをご覧ください。
ハイパーパラメータ トレーニング クラス
Vertex AI SDK には、ハイパーパラメータ調整用のクラスが含まれています。ハイパーパラメータ調整は、トレーニング プロセスを管理する変数(ハイパーパラメータと呼ばれる)を最適化することで、モデルの予測精度を最大化します。詳細については、ハイパーパラメータ調整の概要をご覧ください。
HyperparameterTuningJob
トレーニング アプリケーションでのハイパーパラメータ調整を自動化するには、HyperparameterTuningJob
クラスを使用します。
HyperparameterTuningJob
クラスを使用してカスタム トレーニング済みモデルを作成し、調整する方法については、GitHub のハイパーパラメータ調整のチュートリアルをご覧ください。
HyperparameterTuningJob
クラスを使用して TensorFlow モデルの Vertex AI ハイパーパラメータ調整ジョブを実行する方法については、GitHub の TensorFlow モデルのハイパーパラメータ調整を実行するのチュートリアルをご覧ください。
パイプライン トレーニング クラス
パイプラインは Vertex AI の ML ワークフローをオーケストレートします。パイプラインを使用して、ML システムを自動化、モニタリング、管理できます。Vertex AI のパイプラインの詳細については、Vertex AI Pipelines の概要をご覧ください。
PipelineJob
PipelineJob
クラスのインスタンスは Vertex AI パイプラインを表します。
PipelineJob
クラスの使用方法を示すチュートリアル ノートブックがいくつかあります。
Kubeflow Pipelines(KFP)パイプラインの実行方法については、GitHub の KFP SDK を使用したパイプライン制御構造のチュートリアルをご覧ください。
scikit-learn 表形式分類モデルをトレーニングし、Vertex AI パイプラインを使用してバッチ予測ジョブを作成する方法については、GitHub のカスタム表形式分類モデルに BigQuery ソースと宛先を使用したトレーニングとバッチ予測のチュートリアルをご覧ください。
AutoML 画像分類モデルを構築し、Vertex AI パイプラインを使用する方法については、GitHub の google-cloud-pipeline-components を使用した AutoML 画像分類パイプラインのチュートリアルをご覧ください。
パイプラインを使用して AutoML テキスト分類モデルを構築する方法については、GitHub の google-cloud-pipeline-components を使用した AutoML テキスト分類パイプラインのチュートリアルをご覧ください。
その他のチュートリアル ノートブックについては、Vertex AI ノートブックのチュートリアルをご覧ください。
次のステップ
- Vertex AI SDK について学習する。