在永久性资源上运行自定义训练作业

本页面介绍如何使用 Google Cloud CLI、Vertex AI SDK for Python 和 REST API 在永久性资源上运行自定义训练作业。

通常,在创建自定义训练作业时,您需要指定作业创建和运行的计算资源。创建永久性资源后,您可以改为将自定义训练作业配置为在该永久性资源的一个或多个资源池上运行。在永久性资源上运行自定义训练作业可以显著缩短创建计算资源时所需的作业启动时间。

所需的角色

如需获得在永久性资源上运行自定义训练作业所需的权限,请让管理员向您授予项目的 Vertex AI User (roles/aiplatform.user) IAM 角色。 如需详细了解如何授予角色,请参阅管理访问权限

此预定义角色包含 aiplatform.customJobs.create 权限,在永久性资源上运行自定义训练作业需要该权限。

您也可以使用自定义角色或其他预定义角色来获取此权限。

创建在永久性资源上运行的训练作业

如需创建在永久性资源上运行的自定义训练作业,请对创建自定义训练作业的标准说明进行以下修改:

gcloud

  • 指定 --persistent-resource-id 标志并将值设置为要使用的永久性资源的 ID (PERSISTENT_RESOURCE_ID)。
  • 指定 --worker-pool-spec 标志,使 machine-typedisk-type 的值与永久性资源中的相应资源池完全匹配。指定一个 --worker-pool-spec 用于单节点训练,指定多个用于分布式训练。
  • 指定小于或等于相应资源池的 replica-countmax-replica-countreplica-count

Python

如需了解如何安装或更新 Python 版 Vertex AI SDK,请参阅安装 Python 版 Vertex AI SDK。如需了解详情,请参阅 Python API 参考文档

def create_custom_job_on_persistent_resource_sample(
    project: str,
    location: str,
    staging_bucket: str,
    display_name: str,
    container_uri: str,
    persistent_resource_id: str,
    service_account: Optional[str] = None,
) -> None:
    aiplatform.init(
        project=project, location=location, staging_bucket=staging_bucket
    )

    worker_pool_specs = [{
        "machine_spec": {
            "machine_type": "n1-standard-4",
            "accelerator_type": "NVIDIA_TESLA_K80",
            "accelerator_count": 1,
        },
        "replica_count": 1,
        "container_spec": {
            "image_uri": container_uri,
            "command": [],
            "args": [],
        },
    }]

    custom_job = aiplatform.CustomJob(
        display_name=display_name,
        worker_pool_specs=worker_pool_specs,
        persistent_resource_id=persistent_resource_id,
    )

    custom_job.run(service_account=service_account)

REST

  • 指定 persistent_resource_id 参数,并将值设置为要使用的永久性资源的 ID (PERSISTENT_RESOURCE_ID)。
  • 指定 worker_pool_specs 参数,使每个资源池的 machine_specdisk_spec 值与永久性资源中的相应资源池完全匹配。指定一个 machine_spec 用于单节点训练,指定多个用于分布式训练。
  • 指定一个小于或等于相应资源池的 replica_countmax_replica_countreplica_count,该数量不包括在该资源池上运行的任何其他作业的副本数。

后续步骤