创建永久性资源

创建永久性资源时,训练服务首先会根据您提供的规范从 Compute Engine 资源池中查找所需资源,然后为您预配一个长时间运行的集群。本页面介绍如何使用 Google Cloud 控制台、Google Cloud CLI、Vertex AI SDK for Python 和 REST API 创建用于运行自定义训练作业的永久性资源。

所需的角色

如需获得创建永久性资源所需的权限,请让管理员向您授予项目的 Vertex AI Administrator (roles/aiplatform.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建永久性资源所需的 aiplatform.persistentResources.create 权限。

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

创建永久性资源

根据需要选择以下任一标签页,了解如何创建永久性资源。

控制台

如需使用 Google Cloud 控制台创建永久性资源,请执行以下操作:

  1. 在 Google Cloud 控制台中,转到永久性资源页面。

    转到“永久性资源”

  2. 点击创建集群

  3. 按如下方式配置集群:

    • 名称:输入集群的名称。
    • 说明:(可选)输入集群的说明。
    • 区域:选择您要在其中创建集群的区域。
  4. 点击继续

  5. 按如下方式为集群配置计算资源:

    1. 点击工作器池 1
    2. 选择要使用的机器家族的标签页,并按如下所示配置工作器池:

      通用

      通用虚拟机可为多种工作负载提供最佳性价比。

      • 系列:选择机器系列。
      • 机器类型:选择机器类型。
      • 磁盘类型:选择标准磁盘SSD 磁盘
      • 磁盘大小:输入所需的磁盘大小。
      • 副本数下限:输入工作器池中包含的副本数下限。
      • 副本数上限:(可选)输入工作器池中允许的副本数上限。如果进行了指定,则工作器池会根据需要将副本数量自动扩缩到配置的副本数上限。

      计算优化

      计算优化虚拟机可提供最高的单核心性能,针对计算密集型工作负载进行了优化。

      • 系列:选择机器系列。
      • 机器类型:选择机器类型。
      • 磁盘类型:选择标准磁盘SSD 磁盘
      • 磁盘大小:输入所需的磁盘大小。
      • 副本数下限:输入工作器池中包含的副本数下限。
      • 副本数上限:(可选)输入工作器池中允许的副本数上限。如果进行了指定,则工作器池会根据需要将副本数量自动扩缩到配置的副本数上限。

      内存优化

      内存优化虚拟机非常适合内存密集型工作负载,每个内核提供比其他机器系列更多的内存,可高达 12 TB 内存。

      • 系列:选择机器系列。
      • 机器类型:选择机器类型。
      • 磁盘类型:选择标准磁盘SSD 磁盘
      • 磁盘大小:输入所需的磁盘大小。
      • 副本数下限:输入工作器池中包含的副本数下限。
      • 副本数上限:(可选)输入工作器池中允许的副本数上限。如果进行了指定,则工作器池会根据需要将副本数量自动扩缩到配置的副本数上限。

      GPU

      这些加速器优化虚拟机非常适合大规模并行的计算统一设备架构 (CUDA) 计算工作负载,例如机器学习 (ML) 和高性能计算 (HPC)。此系列是需要 GPU 的工作负载的最佳选项。

      • GPU 类型:选择要使用的 GPU 类型。
      • GPU 数量:输入要使用的 GPU 数量。
      • 系列:选择机器系列。
      • 机器类型:选择机器类型。
      • 磁盘类型:选择标准磁盘SSD 磁盘
      • 磁盘大小:输入所需的磁盘大小。
      • 副本数下限:输入工作器池中包含的副本数下限。
      • 副本数上限:(可选)输入工作器池中允许的副本数上限。如果进行了指定,则工作器池会根据需要将副本数量自动扩缩到配置的副本数上限。
    3. 点击完成

    4. (可选)如需添加其他工作器池,请点击添加工作器池

  6. 点击创建

gcloud

永久性资源可以具有一个或多个资源池。如需在一个永久性资源中创建多个资源池,请指定多个 --resource-pool-spec 标志。

每个资源池都可以启用或停用自动扩缩功能。如需启用自动扩缩,请指定 min_replica_countmax_replica_count

您可以在命令行中指定所有资源池配置,也可以使用 --config 标志指定包含配置的 YAML 文件的路径。

在使用下面的命令数据之前,请先进行以下替换:

  • PROJECT_ID:要创建永久性资源的 Google Cloud 项目的 ID。
  • LOCATION:要创建永久性资源的区域。如需查看受支持区域的列表,请参阅功能可用性
  • PERSISTENT_RESOURCE_ID:永久性资源的 ID。
  • DISPLAY_NAME:(可选)永久性资源的显示名称。
  • MACHINE_TYPE:要使用的虚拟机类型。如需查看支持的虚拟机列表,请参阅机器类型。此字段对应于 ResourcePool API 消息中的 machineSpec.machineType 字段。
  • ACCELERATOR_TYPE:(可选)要挂接到资源池中每个虚拟机的 GPU 的类型。如需查看受支持的 GPU 列表,请参阅 GPU。此字段对应于 ResourcePool API 消息中的 machineSpec.acceleratorType 字段。
  • ACCELERATOR_COUNT:(可选)要挂接到资源池中每个虚拟机的 GPU 的数量。默认值为 1。此字段对应于 ResourcePool API 消息中的 machineSpec.acceleratorCount 字段。
  • REPLICA_COUNT:创建此资源池时要创建的副本数。此字段对应于 ResourcePool API 消息中的 replicaCount 字段。如果您未指定 MIN_REPLICA_COUNTMAX_REPLICA_COUNT,则此字段为必需字段。
  • MIN_REPLICA_COUNT:(可选)自动扩缩功能可将此资源池缩减到的最小副本数量。如需在此资源池上启用自动扩缩,则需要同时提供 MIN_REPLICA_COUNTMAX_REPLICA_COUNT
  • MAX_REPLICA_COUNT:(可选)自动扩缩功能可将此资源池扩容到的最大副本数量。如需在此资源池上启用自动扩缩,则需要同时提供 MIN_REPLICA_COUNTMAX_REPLICA_COUNT
  • BOOT_DISK_TYPE:(可选)要用作资源池中每个虚拟机的启动磁盘的类型。此字段对应于 ResourcePool API 消息中的 diskSpec.bootDiskType 字段。可接受的值包括:
    • pd-standard(默认)
    • pd-ssd
  • BOOT_DISK_SIZE_GB:(可选)资源池中每个虚拟机的启动磁盘的大小(以 GiB 为单位)。可接受 100(默认值)到 64000 之间的值。此字段对应于 ResourcePool API 消息中的 diskSpec.bootDiskSizeGb 字段。
  • CONFIG:永久性资源 YAML 配置文件的路径。此文件应包含 ResourcePool 的列表。如果配置文件和命令行参数中都指定了选项,则命令行参数将替换配置文件。请注意,带有下划线的键无效。

    示例 YAML 配置文件:

    resourcePoolSpecs:
      machineSpec:
        machineType: n1-standard-4
      replicaCount: 1
        

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --display-name=DISPLAY_NAME \
    --project=PROJECT_ID \
    --region=LOCATION \
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Windows (PowerShell)

gcloud ai persistent-resources create `
    --persistent-resource-id=PERSISTENT_RESOURCE_ID `
    --display-name=DISPLAY_NAME `
    --project=PROJECT_ID `
    --region=LOCATION `
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

Windows (cmd.exe)

gcloud ai persistent-resources create ^
    --persistent-resource-id=PERSISTENT_RESOURCE_ID ^
    --display-name=DISPLAY_NAME ^
    --project=PROJECT_ID ^
    --region=LOCATION ^
    --resource-pool-spec="replica-count=REPLICA_COUNT,min-replica-count=MIN_REPLICA_COUNT,max-replica-count=MAX_REPLICA_COUNT,machine-type=MACHINE_TYPE,accelerator-type=ACCELERATOR_TYPE,accelerator-count=ACCELERATOR_COUNT,disk-type=BOOT_DISK_TYPE,disk-size=BOOT_DISK_SIZE_GB"

您应该会收到类似如下所示的响应:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
Operation to create PersistentResource [projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789] is submitted successfully.

You may view the status of your PersistentResource create operation with the command

  $ gcloud ai operations describe projects/sample-project/locations/us-central1/operations/1234567890123456789

示例 gcloud 命令:

gcloud ai persistent-resources create \
    --persistent-resource-id=my-persistent-resource \
    --region=us-central1 \
    --resource-pool-spec="min-replica-count=4,max-replica-count=12,machine-type=n1-highmem-2,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,disk-type=pd-standard,disk-size=200" \
    --resource-pool-spec="replica-count=4,machine-type=n1-standard-4"

gcloud 中的高级配置

如果您想指定前面示例中未提供的配置选项,则可以使用 --config 标志指定本地环境中的 config.yaml 文件的路径,该文件包含 persistentResources 的字段。例如:

gcloud ai persistent-resources create \
    --persistent-resource-id=PERSISTENT_RESOURCE_ID \
    --project=PROJECT_ID \
    --region=LOCATION \
    --config=CONFIG

Python

在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Python 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Python API 参考文档

如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

# Create the persistent resource. This method returns the created resource.
# Setting `sync` to `FALSE` makes the method is non-blocking and the resource
# object returned syncs when the method completes.
my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id=EXAMPLE_PERSISTENT_RESOURCE_ID,
    display_name=EXAMPLE_PERSISTENT_RESOURCE_NAME,
    resource_pools=[
        EXAMPLE_RESOURCE_POOL # EXAMPLE_AUTOSCALED_RESOURCE_POOL
    ],
    labels=EXAMPLE_LABELS,
    sync=SYNC,
)

if not SYNC:
    my_example_resource.wait()

REST

永久性资源可以具有一个或多个资源池 (machine_spec),并且每个资源池都可以启用或停用自动扩缩功能。

在使用任何请求数据之前,请先进行以下替换:

  • PROJECT_ID:要创建永久性资源的 Google Cloud 项目的 ID。
  • LOCATION:要创建永久性资源的区域。如需查看受支持区域的列表,请参阅功能可用性
  • PERSISTENT_RESOURCE_ID:永久性资源的 ID。
  • DISPLAY_NAME:(可选)永久性资源的显示名称。
  • MACHINE_TYPE:要使用的虚拟机类型。如需查看支持的虚拟机列表,请参阅机器类型。此字段对应于 ResourcePool API 消息中的 machineSpec.machineType 字段。
  • ACCELERATOR_TYPE:(可选)要挂接到资源池中每个虚拟机的 GPU 的类型。如需查看受支持的 GPU 列表,请参阅 GPU。此字段对应于 ResourcePool API 消息中的 machineSpec.acceleratorType 字段。
  • ACCELERATOR_COUNT:(可选)要挂接到资源池中每个虚拟机的 GPU 的数量。默认值为 1。此字段对应于 ResourcePool API 消息中的 machineSpec.acceleratorCount 字段。
  • REPLICA_COUNT:创建此资源池时要创建的副本数。此字段对应于 ResourcePool API 消息中的 replicaCount 字段。如果您未指定 MIN_REPLICA_COUNTMAX_REPLICA_COUNT,则此字段为必需字段。
  • MIN_REPLICA_COUNT:(可选)自动扩缩功能可将此资源池缩减到的最小副本数量。如需在此资源池上启用自动扩缩,则需要同时提供 MIN_REPLICA_COUNTMAX_REPLICA_COUNT
  • MAX_REPLICA_COUNT:(可选)自动扩缩功能可将此资源池扩容到的最大副本数量。如需在此资源池上启用自动扩缩,则需要同时提供 MIN_REPLICA_COUNTMAX_REPLICA_COUNT
  • BOOT_DISK_TYPE:(可选)要用作资源池中每个虚拟机的启动磁盘的类型。此字段对应于 ResourcePool API 消息中的 diskSpec.bootDiskType 字段。可接受的值包括:
    • pd-standard(默认)
    • pd-ssd
  • BOOT_DISK_SIZE_GB:(可选)资源池中每个虚拟机的启动磁盘的大小(以 GiB 为单位)。可接受 100(默认值)到 64000 之间的值。此字段对应于 ResourcePool API 消息中的 diskSpec.bootDiskSizeGb 字段。

HTTP 方法和网址:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/persistentResources?persistent_resource_id=PERSISTENT_RESOURCE_ID

请求 JSON 正文:

{
  "display_name": "DISPLAY_NAME",
  "resource_pools": [
    {
      "machine_spec": {
        "machine_type": "MACHINE_TYPE",
        "accelerator_type": "ACCELERATOR_TYPE",
        "accelerator_count": ACCELERATOR_COUNT
      },
      "replica_count": REPLICA_COUNT,
      "autoscaling_spec": {
        "min_replica_count": MIN_REPLICA_COUNT,
        "max_replica_count": MAX_REPLICA_COUNT
      },
      "disk_spec": {
        "boot_disk_type": "BOOT_DISK_TYPE",
        "boot_disk_size_gb": BOOT_DISK_SIZE_GB
      }
    }
  ]
}

如需发送您的请求,请展开以下选项之一:

您应该收到类似以下内容的 JSON 响应:

{
  "name": "projects/123456789012/locations/us-central1/persistentResources/mypersistentresource/operations/1234567890123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreatePersistentResourceOperationMetadata",
    "genericMetadata": {
      "createTime": "2023-02-08T21:17:15.009668Z",
      "updateTime": "2023-02-08T21:17:15.009668Z"
    }
  }
}

资源供应不足

A100 GPU 等稀缺资源可能会供应不足,如果在您指定的区域中没有可用的资源,则可能会导致永久性资源创建失败。在这种情况下,您可以尝试减少副本数量、更改为其他加速器类型、在非高峰时段重试或是尝试其他区域。

后续步骤