建立永久性資源

建立持久性資源時,訓練服務會先根據您提供的規格,在 Compute Engine 資源集區中尋找資源,然後為您佈建長時間執行的叢集。本頁面說明如何使用 Google Cloud 控制台、Google Cloud CLI 和 REST API,建立可執行自訂訓練工作內容的永久資源。

必要的角色

如要取得建立永久性資源所需的權限,請要求管理員為您授予專案的 Vertex AI 管理員 (roles/aiplatform.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這個預先定義的角色包含 aiplatform.persistentResources.create 權限,這是建立持續性資源所需的權限。

您或許還可透過自訂角色或其他預先定義的角色取得此權限。

建立永久性資源

請選取下列任一分頁,瞭解如何建立持續性資源。

控制台

如要使用 Google Cloud 主控台建立永久性資源,請按照下列步驟操作:

  1. 在 Google Cloud 控制台,前往「Persistent resources」(永久性資源) 頁面。

    前往「Persistent resources」(永久資源)

  2. 按一下 [Create cluster] (建立叢集)

  3. 請按照下列步驟設定叢集:

    • 名稱:輸入叢集的名稱。
    • 說明: (選用) 輸入叢集的說明。
    • 區域:選取要建立叢集的區域。
  4. 按一下「繼續」

  5. 請按照下列步驟設定叢集的運算資源:

    1. 按一下「Worker pool 1」(工作站集區 1)
    2. 選取要使用的機器家族分頁,然後按照下列步驟設定工作站集區:

      一般用途

      一般用途 VM 可為各種工作負載提供最佳性價比。

      • 系列:選取機器系列。
      • 機器類型:選取機器類型。
      • 磁碟類型:選取「標準磁碟」或「SSD 磁碟」
      • 磁碟大小:輸入所需磁碟的大小。
      • 備用資源數量下限:輸入工作站集區中備用資源的數量下限。
      • 備用資源數量上限: (選用) 輸入工作站集區中允許的備用資源數量上限。如果已指定,工作站資源池會視需要自動將備用資源數量調整至設定的備用資源數量上限。

      運算最佳化

      運算最佳化 VM 可為每個核心提供最高效能,並經過最佳化調整,適合會耗用大量運算資源的工作負載。

      • 系列:選取機器系列。
      • 機器類型:選取機器類型。
      • 磁碟類型:選取「標準磁碟」或「SSD 磁碟」
      • 磁碟大小:輸入所需磁碟的大小。
      • 備用資源數量下限:輸入工作站集區中備用資源的數量下限。
      • 備用資源數量上限: (選用) 輸入工作站集區中允許的備用資源數量上限。如果已指定,工作站資源池會視需要自動將備用資源數量調整至設定的備用資源數量上限。

      記憶體最佳化

      記憶體最佳化虛擬機器非常適合記憶體密集型工作負載,相較於其他機器系列,每個核心可提供更多記憶體,最高可達 12 TB。

      • 系列:選取機器系列。
      • 機器類型:選取機器類型。
      • 磁碟類型:選取「標準磁碟」或「SSD 磁碟」
      • 磁碟大小:輸入所需磁碟的大小。
      • 備用資源數量下限:輸入工作站集區中備用資源的數量下限。
      • 備用資源數量上限: (選用) 輸入工作站集區中允許的備用資源數量上限。如果已指定,工作站資源池會視需要自動將備用資源數量調整至設定的備用資源數量上限。

      GPU

      這些加速器最佳化 VM 非常適合大規模平行的統一計算架構 (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:要使用的 VM 類型。如需支援的 VM 清單,請參閱「機器類型」。這個欄位對應至 ResourcePool API 訊息中的 machineSpec.machineType 欄位。
  • ACCELERATOR_TYPE:(選用) 要附加至資源集區中每個 VM 的 GPU 類型。如需支援的 GPU 清單,請參閱「GPU」。這個欄位會對應至 ResourcePool API 訊息中的 machineSpec.acceleratorType 欄位。
  • ACCELERATOR_COUNT:(選用) 要附加至資源集區中每個 VM 的 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:(選用) 資源集區中每個 VM 的開機磁碟所使用的磁碟類型。這個欄位對應至 ResourcePool API 訊息中的 diskSpec.bootDiskType 欄位。可接受的值包括:
    • pd-standard (預設)
    • pd-ssd
  • BOOT_DISK_SIZE_GB:(選用) 資源集區中每個 VM 開機磁碟的磁碟大小 (以 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 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。

如要建立可與管道執行作業搭配使用的持久性資源,請在建立持久性資源時,將 ResourceRuntimeSpec 物件中的 enable_custom_service_account 參數設為 True

from google.cloud.aiplatform.preview import persistent_resource
from google.cloud.aiplatform_v1beta1.types.persistent_resource import ResourcePool
from google.cloud.aiplatform_v1beta1.types.machine_resources import MachineSpec

# Create the persistent resource. This method returns the created resource.

my_example_resource = persistent_resource.PersistentResource.create(
    persistent_resource_id='PERSISTENT_RESOURCE_ID',
    display_name='DISPLAY_NAME',
    resource_pools=[
        ResourcePool(
            machine_spec=MachineSpec(
                machine_type='MACHINE_TYPE'
            ),
            replica_count=REPLICA_COUNT
        )
    ],
    enable_custom_service_account=True,
)

# Setting `sync` to `False` makes the method is non-blocking and the resource
# object returned syncs when the method completes.

SYNC=False

if not SYNC:
    my_example_resource.wait()

更改下列內容:

  • PERSISTENT_RESOURCE_ID:永久性資源的專屬使用者定義 ID。開頭必須是英文字母,結尾則須為英文字母或數字,其他部分只能使用小寫英文字母、數字和連字號 (-)。
  • DISPLAY_NAME:選用。持久性資源的顯示名稱。
  • MACHINE_TYPE:要使用的虛擬機器 (VM) 類型。如需支援的 VM 清單,請參閱「機器類型」。這個欄位會對應至machineSpec.machineType
  • REPLICA_COUNT:建立此資源集區時要建立的備用資源數量。

REST

持久性資源可以包含一或多個資源集區 (machine_spec),每個資源集區都可以啟用或停用自動調度資源功能。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您要建立永久性資源的 Google Cloud 專案 ID。
  • LOCATION:您要建立永久性資源的區域。如需支援地區的清單,請參閱「功能適用地區」。
  • PERSISTENT_RESOURCE_ID:永久資源的 ID。
  • DISPLAY_NAME:(選用) 永久資源的顯示名稱。
  • MACHINE_TYPE:要使用的 VM 類型。如需支援的 VM 清單,請參閱「機器類型」。這個欄位對應至 ResourcePool API 訊息中的 machineSpec.machineType 欄位。
  • ACCELERATOR_TYPE:(選用) 要附加至資源集區中每個 VM 的 GPU 類型。如需支援的 GPU 清單,請參閱「GPU」。這個欄位會對應至 ResourcePool API 訊息中的 machineSpec.acceleratorType 欄位。
  • ACCELERATOR_COUNT:(選用) 要附加至資源集區中每個 VM 的 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:(選用) 資源集區中每個 VM 的開機磁碟所使用的磁碟類型。這個欄位對應至 ResourcePool API 訊息中的 diskSpec.bootDiskType 欄位。可接受的值包括:
    • pd-standard (預設)
    • pd-ssd
  • BOOT_DISK_SIZE_GB:(選用) 資源集區中每個 VM 開機磁碟的磁碟大小 (以 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 等稀缺資源,可能會發生缺貨的情況,如果指定的區域沒有可用的資源,就可能導致持續發生資源建立失敗。在這種情況下,您可以嘗試減少複本數量、改用其他加速器類型、在非尖峰時段再次嘗試,或嘗試其他區域。

後續步驟