トレーニング クラス

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 クラスの使用方法を示すチュートリアル ノートブックがいくつかあります。

その他のチュートリアル ノートブックについては、Vertex AI ノートブックのチュートリアルをご覧ください。

次のステップ