在 MIG 中创建调整大小请求


本文档介绍了如何在挂接了 GPU 的虚拟机实例的托管式实例组 (MIG) 中创建调整大小请求。如需详细了解调整大小请求,请参阅关于调整 MIG 中的请求大小

创建 MIG 调整大小请求有助于您一次性创建确切数量的虚拟机,从而获取 GPU 等高需求资源并优化成本。如需创建可使用 Cluster Director 提供的功能和服务的 MIG 调整大小请求,请参阅 AI Hypercomputer 文档中的创建 MIG 和调整大小请求

准备工作

  • 为确保您有足够的 GPU 配额可以用于请求的资源,请检查您的 GPU 配额
  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得创建 MIG 调整大小请求所需的权限,请让管理员向您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含创建 MIG 调整大小请求所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需创建 MIG 调整大小请求,您需要具备以下权限:

  • 如需创建实例模板:针对项目的 compute.instanceTemplates.create 权限
  • 如需创建可用区级 MIG:针对项目的 compute.instanceGroupManagers.create 权限
  • 如需创建 MIG 调整大小请求:针对项目的 compute.instanceGroupManagers.update 权限

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

为调整大小请求准备 MIG

如需创建 MIG 调整大小请求,您必须配置实例模板和 MIG,如以下部分所述。

创建实例模板

如需创建为创建 MIG 调整大小请求而配置的实例模板,请在模板中指定以下内容:

如需创建为创建 MIG 调整大小请求而配置的实例模板,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,转到实例模板页面。

    转到“实例模板”

  2. 点击创建实例模板。 系统会打开创建实例模板页面。

  3. 名称字段中,输入实例模板的名称。

  4. 位置部分,选择以下选项之一:

    • 如需创建区域级实例模板,请选择区域级(推荐),然后选择要创建模板的区域。

    • 如需创建全球实例模板,请选择全球

  5. 机器配置部分中,执行以下操作:

    1. 点击 GPU 标签页。

    2. GPU 类型列表中,选择 GPU 类型。如果您在可用区级 MIG 中使用实例模板,则只能选择 NVIDIA H200 141GB 及更高类型。

    3. GPU 数量列表中,选择 GPU 的数量。

    4. 可选:如果您的 GPU 模型支持适用于图形工作负载的 NVIDIA RTX 虚拟工作站 (vWS),并且您计划运行图形密集型工作负载,请选择启用虚拟工作站 (NVIDIA GRID)

    5. 机器类型部分中,选择一种机器类型。

  6. 预配模型部分中,执行以下操作:

    1. 虚拟机预配模型列表中,选择弹性启动

    2. 如需为通过实例模板创建的虚拟机设置运行时长,请在输入小时数字段中输入小时数。该值必须介于 1 小时 (1) 到 7 天 (168) 之间。

  7. 可选:如需更改启动磁盘类型或映像的默认值,请在启动磁盘部分中,点击更改。然后,按照提示更改启动磁盘。

  8. 点击创建

gcloud

如需创建为创建 MIG 调整大小请求而配置的实例模板,请使用带有以下标志的 beta instance-templates create ���令

  • --maintenance-policy 标志设置为 TERMINATE

  • --instance-termination-action 标志设置为 DELETE

  • --max-run-duration 标志。

  • --provisioning-model 标志设置为 FLEX_START

  • --reservation-affinity 标志设置为 none

以下命令会创建一个区域级实例模板。如需创建全球实例模板,请使用相同命令,但不带 --instance-template-region 标志。

gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE_FAMILY \
    --instance-termination-action=DELETE \
    --instance-template-region=REGION \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --max-run-duration=RUN_DURATION \
    --provisioning-model=FLEX_START \
    --reservation-affinity=none

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE_FAMILY映像系列。此项指定最新的未弃用操作系统映像。例如,如果您指定 debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • REGION:要在其中创建实例模板的区域。

  • MACHINE_TYPE:GPU 机器类型。请确保:

    • 您只能为可用区级 MIG 指定 A4 或 A3 Ultra 机器类型。

    • 如果您指定 N1 机器类型,请添加 --accelerator 标志以指定要挂接到虚拟机的 GPU 数量和类型。

  • RUN_DURATION:您希望请求的虚拟机运行的时长。您必须将该值的格式设置为天数、小时数、分钟数或秒数,后面分别跟 dhms。例如,指定 30m 表示 30 分钟,或指定 1d2h3m4s 表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。

REST

如需创建为在 MIG 中创建调整大小请求而配置的实例模板,请向以下方法之一发出 POST 请求:

在请求正文中,添加以下字段:

  • 设置为 TERMINATEscheduling.onHostMaintenance 字段。

  • 设置为 DELETEscheduling.instanceTerminationAction 字段。

  • scheduling.maxRunDuration 字段。

  • 设置为 FLEX_STARTscheduling.provisioningModel 字段。

  • reservationAffinity.consumeReservationType 字段设置为 NO_RESERVATION

例如,如需创建区域实例模板,请发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

替换以下内容:

  • PROJECT_ID:要创建实例模板的项目 ID。

  • REGION:要在其中创建实例模板的区域。

  • INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • MACHINE_TYPE:GPU 机器类型。请确保:

    • 您只能为可用区级 MIG 指定 A4 或 A3 Ultra 机器类型。

    • 如果您指定 N1 机器类型,请在请求正文中添加 guestAccelerators 字段,以指定要挂接到虚拟机的 GPU 的数量和类型。

  • RUN_DURATION:您希望请求的虚拟机运行的时长(以秒为单位)。该值必须介于 600(600 秒,即 10 分钟)到 604800(604,800 秒,即 7 天)之间。

如需详细了解如何创建实例模板,请参阅创建实例模板

创建或更新 MIG

按照上一部分中的说明创建实例模板后,使用该实例模板创建 MIG(如下所示)或更新 MIG。此外,您必须执行以下操作来准备用于处理调整大小请求的 MIG:

如需创建与调整大小请求兼容的 MIG,请选择以下选项之一:

控制台

  1. 在 Google Cloud 控制台中,前往实例群组页面。

    进入“实例组”

  2. 点击创建实例组。 此时会打开创建实例组页面。

  3. 名称字段中,输入 MIG 的名称。

  4. 在选择实例模板之前,您必须删除自动扩缩配置并关闭修复,如下所示:

    1. 如需��除自动扩缩配置,请执行以下操作:

      1. 自动扩缩部分中,点击自动扩缩模式列表,然后点击删除自动扩缩配置

      2. 在确认对话框中点击删除

    2. 如需关闭修复功能,请在虚拟机实例生命周期部分中,点击失败时的默认操作列表,然后选择无操作

  5. 返回到实例模板字段。在实例模板列表中,选择您在上一部分中创建的实例模板。如果您选择区域级实例模板,则将区域列表设置为该模板所在的区域。

  6. 执行下列其中一项操作:

    • 如需在创建 MIG 时创建调整大小请求,请执行以下操作:

      1. 实例数字段中,输入您要一次性创建的所有虚拟机的数量。

      2. 选中使用规模调整请求,一次创建所有虚拟机复选框。

      3. 可选:如需为虚拟机指定与在实例模板中设置的运行时长不同的运行时长,请在请求的运行时长字段和单位列表中指定运行时长。时长必须介于 1 小时到 7 天之间。

    • 如需在创建 MIG 后创建调整大小请求,请在实例数量字段中输入 0

  7. 位置部分中,指定您是要创建可用区级 MIG 还是区域级 MIG,如下所示:

    1. 如需创建可用区级 MIG,请选择单个可用区。或者,如需创建区域 MIG,请选择多个可用区

    2. 选择 MIG 的区域可用区

    3. 如果您要创建地区级 MIG,请执行以下操作:

      1. 目标分布形状字段中,选择任意单个可用区

      2. 在显示的对话框中,点击停用实例重新分配

  8. 点击创建

gcloud

使用 instance-groups managed create 命令,并将 --default-action-on-vm-failure 标志设置为 do_nothing。如果您要创建区域级 MIG,则还必须添加 --target-distribution-shape 标志(设置为 any-single-zone)和 --instance-redistribution-type 标志(设置为 none)。

  • 如需创建可用区级 MIG,请运行以下命令:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --zone=ZONE \
        --default-action-on-vm-failure=do_nothing
    
  • 如需创建区域级 MIG,请运行以下命令:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --template=INSTANCE_TEMPLATE_URL \
        --size=0 \
        --region=REGION \
        --target-distribution-shape=any-single-zone \
        --instance-redistribution-type=none \
        --default-action-on-vm-failure=do_nothing
    

替换以下内容:

  • INSTANCE_GROUP_NAME:要创建的 MIG 的名称。

  • INSTANCE_TEMPLATE_URL:您在上一部分中创建的实例模板的部分网址。如果您想使用区域实例模板创建 MIG,则只能在模板所在的区域内创建 MIG。请指定以下某个值:

    • 对于区域级实例模板:projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • 对于全球实例模板:INSTANCE_TEMPLATE_NAME

  • ZONE:要用于创建 MIG 的可用区。

  • REGION:要用于创建 MIG 的区域。

REST

  • 如需创建可用区级 MIG,请使用 instanceGroupManagers.insert 方法发送 POST 请求,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    
  • 如需创建区域级 MIG,请使用 regionInstanceGroupManagers.insert 方法发送 POST 请求,如下所示:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "versions": [
        {
          "instanceTemplate": "INSTANCE_TEMPLATE_URL"
        }
      ],
      "name": "INSTANCE_GROUP_NAME",
      "targetSize": 0,
      "distributionPolicy": {
        "targetShape": "ANY_SINGLE_ZONE"
      },
      "updatePolicy": {
        "instanceRedistributionType": "NONE"
      },
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      }
    }
    

替换以下内容:

  • PROJECT_ID:您在上一部分中创建的实例模板所在项目的 ID。

  • INSTANCE_TEMPLATE_URL:您在上一部分中创建的实例模板的部分网址。如果您想使用区域实例模板创建 MIG,则只能在模板所在的区域内创建 MIG。请指定以下某个值:

    • 对于区域级实例模板:regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • 对于全球实例模板:global/instanceTemplates/INSTANCE_TEMPLATE_NAME

  • ZONE:要用于创建 MIG 的可用区。

  • REGION:要用于创建 MIG 的区域。

  • INSTANCE_GROUP_NAME:要创建的 MIG 的名称。

在 MIG 中创建调整大小请求

在创建 MIG 调整大小请求之前,请确保已按照上一部分中的说明准备好 MIG

创建调整大小请求且所有请求的资源都可用后,MIG 会同时创建请求的虚拟机数量。虚拟机会一直运行,直到 MIG 在指定运行时长结束后删除它们或直到您删除它们

如需在 MIG 中创建调整大小请求,请选择以下选项之一。如需通过调整大小请求将具有特定名称的虚拟机添加到 MIG,请使用 gcloud CLI 或 REST API。

控制台

  1. 在 Google Cloud 控制台中,前往实例群组页面。

    进入“实例组”

  2. 名称列中,点击要用于创建调整大小请求的 MIG 的名称。

    系统会打开此 MIG 的概览页面。

  3. 调整大小请求行中,点击 修改调整大小请求

  4. 点击 New resize request(新建调整大小请求)。

    系统会显示新建调整大小请求窗格。

  5. 名称字段中,输入调整大小请求的名称。

  6. 需要的额外实例数量字段中,输入要一次性添加到 MIG 的所有虚拟机的数量。

  7. 可选:如需为虚拟机指定与实例模板中设置的运行时长不同的运行时长,请在请求的运行时长单位字段中指定时长。时长必须介于 1 小时到 7 天之间。

  8. 点击创建

gcloud

  • 如需在可用区级 MIG 中创建调整大小请求,请使用 instance-groups managed resize-requests create 命令

    gcloud compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --zone=ZONE
    
  • 如需在区域级 MIG 中创建调整大小请求,请使用 beta instance-groups managed resize-requests create 命令

    gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
        --resize-request=RESIZE_REQUEST_NAME \
        --resize-by=COUNT \
        --region=REGION
    

替换以下内容:

  • INSTANCE_GROUP_NAME:经过配置,可用于创建调整大小请求的 MIG 的名称。

  • RESIZE_REQUEST_NAME:调整大小请求的名称,该名称在指定的 MIG 中必须是唯一的。否则,创建调整大小请求的操作将失败。

  • COUNT:要同时添加到 MIG 的虚拟机数量。

  • RUN_DURATION:您希望请求的虚拟机运行的时长。该值的格式必须为天数、小时数、分钟数或秒数,后面分别跟 dhms。例如,指定 30m 表示 30 分钟,或指定 1d2h3m4s 表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。

  • ZONE:该 MIG 所在的可用区。

  • REGION:MIG 所在的区域。

您可以选择执行以下操作:

REST

在请求正文中,添加以下各项:

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

替换以下内容:

  • PROJECT_ID:指定的 MIG 所在项目的 ID。

  • ZONE:该 MIG 所在的可用区。

  • REGION:MIG 所在的区域。

  • INSTANCE_GROUP_NAME:经过配置,可用于创建调整大小请求的 MIG 的名称。

  • RESIZE_REQUEST_NAME:调整大小请求的名称,该名称在指定的 MIG 中必须是唯一的。否则,创建调整大小请求的操作将失败。

  • COUNT:要同时添加到 MIG 的虚拟机数量。

  • RUN_DURATION:您希望请求的虚拟机运行的时长(以秒为单位)。该值必须介于 600(600 秒,即 10 分钟)到 604800(604,800 秒,即 7 天)之间。

您可以选择执行以下操作:

后续步骤