训练类

Vertex AI SDK 包含可在训练模型时使用的多个类。大多数训练类用于创建、训练和返回模型。使用 HyperparameterTuningJob 调整训练作业的超参数。使用 PipelineJob 管理机器学习 (ML) 工作流,以便自动执行和监控机器学习系统。

以下主题简要介绍了 Vertex AI SDK 中每个训练相关类。

适用于结构化数据的 AutoML 训练类

Vertex AI SDK 包含以下可用于训练结构化 AutoML 模型的类。

AutoMLForecastingTrainingJob

AutoMLForecastingTrainingJob 类使用 AutoML 训练方法来训练和运行预测模型。对于大多数预测使用场景而言,AutoML 训练方法都是一个不错的选择。如果 Seq2seqTemporal fusion transformer 训练方法(分别由 SequenceToSequencePlusForecastingTrainingJobTemporalFusionTransformerForecastingTrainingJob 类提供)对您的使用场景效果不佳,那么 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 方法更小。如果您希望快速获得结果,并且您的数据集小于 1 GB,则 Seq2seq+ 方法是一个不错的选择。

如需查看演示如何使用 SequenceToSequencePlusForecastingTrainingJob 的示例代码,请参阅 GitHub 上的创建训练流水线预测 Seq2seq 示例

TemporalFusionTransformerForecastingTrainingJob

TemporalFusionTransformerForecastingTrainingJob 类使用 Temporal Fusion Transformer (TFT) 训练方法来训练和运行预测模型。TFT 训练方法实现了基于注意力 (attention) 机制的深度神经网络 (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 包含三个可用于创建自定义训练流水线的类。训练流水线接受一个 Vertex AI 代管式数据集作为输入,并用其来训练模型。接下来,它会在训练作业完成后返回模型。这三个自定义训练流水线类会以不同的方式创建训练流水线。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 代管式数据集中,系统亦不会在训练作业完成后注册对模型的引用版本。例如,您可能想要使用 CustomJob 类及其 from_local_script 方法,以及一个用于从 scikit-learnTensorFlow 加载数据集的脚本。或者,您可能希望在将经过训练的模型注册到 Vertex AI 之前先对其进行分析或测试。

如需详细了解自定义训练作业(包括在提交自定义训练作业之前需满足的要求、自定义作业包含的内容以及 Python 代码示例),请参阅创建自定义训练作业

由于 CustomJob.run 不会返回经过训练的模型,因此您需要使用一个脚本来将模型工件写入某个位置,例如某个 Cloud Storage 存储桶。如需了解详情,请参阅导出经过训练的机器学习模型

以下示例代码演示了如何使用示例工作器池规范创建和运行自定义作业。该代码会将经过训练的模型写入名为“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 类在 Vertex AI 中使用 Python 软件包启动自定义训练流水线。

如需查看如何使用 CustomPythonPackageTrainingJob 类的示例,请参阅使用 Python 软件包、代管式文本数据集和 TensorFlow Serving 容器的自定义训练笔记本中的教程。

CustomTrainingJob

可使用 CustomTrainingJob 类在 Vertex AI 中通过脚本启动自定义训练流水线。

如需查看如何使用 CustomTrainingJob 类的示例,请参阅适用于在线预测的提供解释的自定义训练图片分类模型笔记本中的教程。

超参数训练类

Vertex AI SDK 包含一个可用于超参数调节的类。超参数调节通过优化管理训练过程的变量(称为“超参数”)来最大限度地提高模型的预测准确率。如需了解详情,请参阅超参数调节概览

HyperparameterTuningJob

可使用 HyperparameterTuningJob 类在训练应用中自动进行超参数调节。

如需了解如何使用 HyperparameterTuningJob 类创建和调整自定义训练模型,请参阅 GitHub 上的超参数调节教程。

如需了解如何使用 HyperparameterTuningJob 类对 TensorFlow 模型运行 Vertex AI 超参数调节作业,请参阅 GitHub 上的对 TensorFlow 模型运行超参数调节教程。

流水线训练类

流水线可在 Vertex AI 中编排机器学习工作流。您可以使用流水线自动执行、监控和管理机器学习系统。如需详细了解 Vertex AI 中的流水线,请参阅 Vertex AI Pipelines 流水线简介

PipelineJob

可通过 PipelineJob 类的实例来表示 Vertex AI 流水线。

下面的教程用笔记本都演示了如何使用 PipelineJob 类:

如需查看更多教程用笔记本,请参阅 Vertex AI 笔记本教程

后续步骤