创建使用灵活启动虚拟机的 MIG

本文档介绍如何创建使用灵活启动虚拟机 (VM) 实例的代管式实例组 (MIG)。灵活启动虚拟机可以 不间断运行长达 7 天,有助于您以折扣价获得 GPU 或 TPU 等高需求资源。这些功能使灵活启动虚拟机成为运行短时工作负载(例如模型微调和批量推理工作负载)的经济实惠的解决方案。

本文档中的步骤介绍了如何创建 MIG,以便在资源可用时创建单个灵活启动虚拟机。因此,MIG 最初可能仅创建部分请求的虚拟机,然后在容量允许的情况下稍后添加剩余的虚拟机。如果您想在 MIG 中一次性创建所有灵活启动虚拟机,请使用以下方法之一:

如需了解可用于创建 MIG 的其他方法,请参阅 创建 MIG 的基本场景

准备工作

  • 验证您的项目是否有足够的抢占式配额,以供您希望灵活启动虚拟机使用的机器 类型使用。如需了解相关说明,请参阅查看项目的配额
  • 如果您尚未设置身份验证,请进行设置。 身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行 代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证: {1

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后, 运行以下命令来初始化 Google Cloud CLI:

      gcloud init
  • 设置默认区域和可用区
  • REST

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

      安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI

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

所需的角色

如需获得创建使用灵活启动虚拟机的 MIG 所需的权限,请让您的管理员为您授予项目的Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色包含 创建使用灵活启动虚拟机的 MIG 所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

创建使用灵活启动虚拟机的 MIG 需要以下权限:

  • 如需创建实例模板: compute.instanceTemplates.create 针对项目的
  • 如需创建 MIG:compute.instanceGroupManagers.create针对项目的权限

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

创建使用灵活启动虚拟机的 MIG

如需创建使用灵活启动虚拟机的 MIG,您必须完成以下步骤:

  1. 创建一个配置为创建灵活启动虚拟机的实例模板

  2. 创建区域级或可用区级 MIG

创建一个配置为创建灵活启动虚拟机的实例模板

您必须创建一个配置为创建灵活启动虚拟机的实例模板,如本部分所述。创建模板后,您可以使用该模板创建 MIG。

如需创建配置为创建灵活启动虚拟机的实例模板,请选择以下选项之一:

控制台

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

    转到“实例模板”

  2. 点击创建实例模板 。此时将显示创建实例模板 页面。

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

  4. 位置 部分中,选择要创建的实例模板的类型:

  5. 机器配置 部分中,选择要用于灵活启动虚拟机的机器类型。

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

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

    2. 如需为通过实例模板创建的虚拟机设置运行时长,请在输入小时数 字段中输入虚拟机运行的小时数。该值必须介于一 小时 (1) 和七天 (168) 之间。当虚拟机达到 运行时长时,Compute Engine 会根据每个虚拟机 的创建时间单独删除每个虚拟机。

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

  8. 点击创建

gcloud

如需创建配置为创建 灵活启动虚拟机的实例模板,请使用 gcloud compute instance-templates create命令

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

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

替换以下内容:

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

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

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

  • REGION:要在其中创建实例模板的区域。指定支持 GPU 或 H4D 机器类型TPU 机器类型的区域。

  • MACHINE_TYPE:要用于灵活启动虚拟机的机器类型。如果您指定 N1 机器类型,则 必须添加 --accelerator标志 以定义要挂接到虚拟机的 GPU 的数量和类型。

  • RUN_DURATION:您希望请求的虚拟机运行的时长。当虚拟机达到运行时长时,Compute Engine 会根据每个虚拟机的创建时间单独删除每个虚拟机。您必须将运行时长的格式设置为天数、 小时数、分钟数或秒数,后面分别跟 dhms 。例如,指定 30m 表示 30 分钟,或指定 1d2h3m4s 表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟和 7 天之间。

REST

如需创建配置为创建灵活启动虚拟机的实例模板,请发出以下 POST 请求之一:

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

POST https://compute.googleapis.com/compute/v1/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"
      }
    ],
    "scheduling": {
      "instanceTerminationAction": "DELETE",
      "maxRunDuration": {
        "seconds": RUN_DURATION
      },
      "onHostMaintenance": "TERMINATE",
      "provisioningModel": "FLEX_START"
    }
  }
}

替换以下内容:

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

  • REGION:要在其中创建实例模板的区域。指定支持 GPU 或 H4D 机器类型TPU 机器类型的区域。

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

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

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

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

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

  • MACHINE_TYPE:要用于灵活启动虚拟机的机器类型。如果您指定 N1 机器类型,则 必须添加 guestAccelerators字段 以定义要挂接到虚拟机的 GPU 的数量和类型。

  • RUN_DURATION:您希望请求的虚拟机运行的时长(以秒为单位)。当虚拟机达到运行时长时,Compute Engine 会根据每个虚拟机的创建时间单独删除每个虚拟机。运行时长必须介于 600(600 秒,即 10 分钟)和 604800(604,800 秒,即 7 天)之间。

创建实例模板后,您可以 查看模板的详细信息 以查看其属性。

创建区域级或可用区级 MIG

按照本部分所述,创建区域级或可用区级 MIG。您不得 配置 自动扩缩,并且必须关闭 修复功能。如果您请求的 资源不可用,则 Compute Engine 会不断尝试 分配资源,直到请求成功、您 减少 MIG 中的虚拟机数量, 或删除 MIG。

如需创建区域级或可用区级 MIG,请选择以下选项之一:

控制台

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

    进入“实例组”

  2. 点击创建实例组 。此时将显示创建实例组 页面。

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

  4. 实例模板 列表中,选择您在上一部分中创建的实例模板。

  5. 实例数 字段中,输入要在 MIG 中创建的灵活启动虚拟机的数量。如果您的工作负载需要特定的虚拟机名称,请输入 0 以不创建任何虚拟机。创建 MIG 后, 向其中添加具有特定名称的虚拟机

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

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

    2. 选择 MIG 的区域可用区

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

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

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

  7. 如需删除自动扩缩配置,请在自动扩缩 部分中执行以下操作:

    1. 点击 配置自动扩缩

    2. 自动扩缩模式 列表中,点击删除自动扩缩配置

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

  8. 如需关闭修复功能,请在失败时的操作 部分中的失败时的默认操作 列表中,选择无操作

  9. 点击创建

gcloud

如需创建 MIG,请使用 gcloud compute instance-groups managed create 命令

根据您要创建的 MIG 的类型,在命令中添加以下标志:

  • 如需创建可用区级 MIG,请添加 --zone 标志:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --zone=ZONE
    
  • 如需创建区域级 MIG,请添加 --region--target-distribution-shape 标志:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --default-action-on-vm-failure=do-nothing \
        --size=SIZE \
        --template=INSTANCE_TEMPLATE_URL \
        --region=REGION \
        --target-distribution-shape=SHAPE
    

替换以下内容:

  • INSTANCE_GROUP_NAME:MIG 的名称。

  • INSTANCE_TEMPLATE_URL:您在上一部分中创建的实例模板的网址。网址可以包含 实例模板的 ID 或名称。请指定以下某个值:

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

    • 对于全球实例模板: INSTANCE_TEMPLATE_ID

  • SIZE:要在 MIG 中创建的灵活启动虚拟机的数量。如果您的工作负载需要特定的虚拟机名称,请指定 0 以不创建任何虚拟机。创建 MIG 后, 向其中添加具有特定名称的虚拟机

  • ZONE:要在其中创建可用区级 MIG 的可用区。如果您使用区域级实例模板创建 MIG,则必须指定与该模板位于同一区域内的可用区。

  • REGION:要在其中创建区域级 MIG 的区域。如果您使用区域级实例模板创建 MIG,则必须指定与该模板的区域相同的区域。

  • SHAPE:MIG 如何在区域级 MIG 中的可用区之间分配灵活启动虚拟机。请指定以下某个值:

    • 如需根据可用性在多个可用区中创建虚拟机:ANY

    • 如需根据可用性在单个可用区中创建虚拟机: ANY_SINGLE_ZONE

    如需了解详情,请参阅 区域级 MIG 目标分布形状

REST

如需创建 MIG,请向以下方法之一发出 POST 请求:

  • 如需创建可用区级 MIG,请向 instanceGroupManagers.insert 方法发出以下请求:

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers
    
    {
      "name": "INSTANCE_GROUP_NAME",
      "instanceTemplate": "INSTANCE_TEMPLATE_URL",
      "instanceLifecyclePolicy": {
        "defaultActionOnFailure": "DO_NOTHING"
      },
      "targetSize": SIZE,
      "distributionPolicy": {
        "targetShape": "SHAPE"
      }
    }
    

替换以下内容:

  • PROJECT_ID:要在其中创建区域级或可用区级 MIG 的项目的 ID。

  • ZONE:要在其中创建可用区级 MIG 的可用区。如果您使用区域级实例模板创建 MIG,则必须指定与该模板位于同一区域内的可用区。

  • REGION:要在其中创建区域级 MIG 的区域。如果您使用区域级实例模板创建 MIG,则必须指定与该模板的区域相同的区域。

  • INSTANCE_GROUP_NAME:MIG 的名称。

  • INSTANCE_TEMPLATE_URL:您在上一部分中创建的实例模板的网址。网址可以包含 实例模板的 ID 或名称。请指定以下某个值:

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

    • 对于全球实例模板: INSTANCE_TEMPLATE_ID

  • SIZE:要在 MIG 中创建的灵活启动虚拟机的数量。如果您的工作负载需要特定的虚拟机名称,请指定 0 以不创建任何虚拟机。创建 MIG 后, 向其中添加具有特定名称的虚拟机

  • SHAPE:MIG 如何在区域级 MIG 中的可用区之间分配灵活启动虚拟机。请指定以下某个值:

    • 如需根据可用性在多个可用区中创建虚拟机:ANY

    • 如需根据可用性在单个可用区中创建虚拟机: ANY_SINGLE_ZONE

    如需了解详情,请参阅 区域级 MIG 目标分布形状

后续步骤