Vertex AI SDK 包含可在训练模型时使用的多个类。大多数训练类用于创建、训练和返回模型。使用 HyperparameterTuningJob
调整训练作业的超参数。使用 PipelineJob
管理机器学习 (ML) 工作流,以便自动执行和监控机器学习系统。
以下主题简要介绍了 Vertex AI SDK 中每个训练相关类。
适用于结构化数据的 AutoML 训练类
Vertex AI SDK 包含以下可用于训练结构化 AutoML 模型的类。
AutoMLForecastingTrainingJob
AutoMLForecastingTrainingJob
类使用 AutoML
训练方法来训练和运行预测模型。对于大多数预测使用场景而言,AutoML
训练方法都是一个不错的选择。如果 Seq2seq
或 Temporal fusion transformer
训练方法(分别由 SequenceToSequencePlusForecastingTrainingJob
和 TemporalFusionTransformerForecastingTrainingJob
类提供)对您的使用场景效果不佳,那么 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-learn 或 TensorFlow 加载数据集的脚本。或者,您可能希望在将经过训练的模型注册到 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
类:
如需了解如何运行 Kubeflow Pipelines (KFP) 流水线,请参阅 GitHub 上的使用 KFP SDK 的流水线控制结构教程。
如需了解如何使用 Vertex AI 流水线训练 scikit-learn 表格分类模型并创建批量预测作业,请参阅 GitHub 上的使用 BigQuery 作为自定义表格分类模型的来源和目标来进行训练和批量预测教程。
如需了解如何构建 AutoML 图片分类模型和使用 Vertex AI 流水线,请参阅 GitHub 上的使用 google-cloud-pipeline-components 的 AutoML 图片分类流水线教程。
如需了解如何使用流水线构建 AutoML 文本分类模型,请参阅 GitHub 上的使用 google-cloud-pipeline-components 的 AutoML 文本分类流水线教程。
如需查看更多教程用笔记本,请参阅 Vertex AI 笔记本教程。
后续步骤
- 了解 Vertex AI SDK。