创建灵活启动虚拟机

本文档介绍了如何创建灵活启动的虚拟机 (VM) 实例。灵活启动虚拟机最多可运行 7 天,有助于您以折扣价获取 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. 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init

      如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

    2. Set a default region and zone.

    REST

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

      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

      gcloud init

      如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

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

所需的角色

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

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

所需权限

创建灵活启动型虚拟机需要以下权限:

  • 针对项目的 compute.instances.create 权限
  • 使用自定义映像创建虚拟机:针对映像的 compute.images.useReadOnly 权限
  • 使用快照创建虚拟机:针对快照的 compute.snapshots.useReadOnly 权限
  • 使用实例模板创建虚拟机:针对实例模板的 compute.instanceTemplates.useReadOnly 权限
  • 为虚拟机指定子网:针对项目或所选子网的 compute.subnetworks.use 权限
  • 为虚拟机指定静态 IP 地址:针对项目的 compute.addresses.use 权限
  • 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的 compute.subnetworks.useExternalIp 权限
  • 为虚拟机分配旧版网络:针对项目的 compute.networks.use 权限
  • 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的 compute.networks.useExternalIp 权限
  • 为虚拟机设置虚拟机实例元数据:针对项目的 compute.instances.setMetadata 权限
  • 为虚拟机设置标记:针对虚拟机的 compute.instances.setTags 权限
  • 为虚拟机设置标签:针对虚拟机的 compute.instances.setLabels 权限
  • 为虚拟机设置要使用的服务账号:针对虚拟机的 compute.instances.setServiceAccount 权限
  • 为虚拟机创建新磁盘:针对项目的 compute.disks.create 权限
  • 以只读或读写模式挂接现有磁盘:针对磁盘的 compute.disks.use 权限
  • 以只读模式挂接现有磁盘:针对磁盘的 compute.disks.useReadOnly 权限

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

创建灵活启动型虚拟机

如需创建 Flex-start 虚拟机,请选择以下选项之一:

控制台

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

    转到“创建实例”

  2. 机器配置窗格中,完成以下步骤:

    1. 名称字段中,输入 Flex-start 虚拟机的名称。

    2. 指定要在其中创建虚拟机的区域可用区。如需查看您要使用的机器类型在哪些区域和可用区中可用,请参阅可用区域和可用区

    3. 根据要运行的工作负载,指定机器类型,如下所示:

      • 如需指定加速器优化机器类型,请执行以下操作:

        1. 点击 GPU 标签页。

        2. GPU 类型列表中,选择除 NVIDIA GB200 192GB (A4X) 和 NVIDIA RTX PRO 600 (G4) 之外的 GPU 类型。

        3. GPU 数量列表中,选择要附加到虚拟机的 GPU 数量。

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

      • 如需指定 H4D 机器类型,请执行以下操作:

        1. 点击计算优化标签页。

        2. 系列列中,选择 H4D

  3. 在导航菜单中,点击高级。在显示的高级窗格中,完成以下步骤:

    1. 预留部分中,选择不使用预留

    2. 预配模型部分中,从虚拟机预配模型列表中选择弹性启动

    3. 输入小时数字段中,输入您希望虚拟机运行的最长时间。该值必须介于 36 秒 (0.01) 和 7 天(168,即 168 小时)之间。

    4. 选中设置虚拟机创建等待时间复选框。然后,根据工作负载的可用区要求,我们建议您指定以下时长之一,以提高虚拟机创建请求成功的几率:

      • 如果您的工作负载要求您在特定可用区中创建虚拟机,请指定介于 90 秒 2 小时之间的时长。持续时间越长,获得资源的机会就越大。

      • 如果虚拟机可以在区域内的任何可用区中运行,请指定 0 秒的持续时间,或清除为虚拟机创建设置等待时间复选框。此操作指定 Compute Engine 仅在资源立即可用时才分配资源。如果虚拟机创建请求因资源不可用而失败,请在其他可用区中重试该请求。

  4. 如需创建灵活启动虚拟机,请点击创建

gcloud

如需创建灵活启动型虚拟机,请将 gcloud compute instances create 命令与以下标志搭配使用:

  • --request-valid-for-duration 标志

  • --provisioning-model=FLEX_START 标志

  • --instance-termination-action 标志

  • --max-run-duration 标志

  • --maintenance-policy=TERMINATE 标志

  • --reservation-affinity=none 标志

如需创建灵活启动型虚拟机,请运行以下命令:

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --zone=ZONE \
    --request-valid-for-duration=VALID_FOR_DURATION \
    --provisioning-model=FLEX_START \
    --instance-termination-action=TERMINATION_ACTION \
    --max-run-duration=RUN_DURATION \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

替换以下内容:

  • VM_NAME:新虚拟机的名称。

  • MACHINE_TYPE:要用于 Flex-start 虚拟机的机器类型。如果您指定了 G2 或 N1 机器类型,请考虑以下事项:

    • 对于 G2 机器类型,您可以选择指定要用于图形密集型工作负载的 NVIDIA RTX 虚拟工作站 (vWS)。为此,请在命令中添加 --accelerator 标志,如下所示:

      --accelerator=count=VWS_ACCELERATOR_COUNT,type=nvidia-l4-vws
      

      VWS_ACCELERATOR_COUNT 替换为工作负载所需的 NVIDIA RTX vWS 数量。

    • 对于 N1 机器类型,您必须指定要挂接到虚拟机的 GPU 的数量和类型。否则,创建虚拟机会失败。如需将 GPU 挂接到 N1 虚拟机,请在命令中添加 --accelerator 标志,如下所示:

      --accelerator=count=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE
      

      替换以下内容:

  • ZONE:您要在其中创建虚拟机的可用区。 如需验证您指定的机器类型在您要创建虚拟机的可用区中是否可用,请参阅可用区域和可用区

  • VALID_FOR_DURATION:等待配置所请求资源的最长时间,格式为数字后跟单位(smhd)。例如,值 30m 表示 30 分钟的时间,值 1h2m3s 表示 1 小时 2 分 3 秒的时间。根据工作负载的可用区要求,我们建议您指定以下时长之一,以提高虚拟机创建请求的成功率:

    • 如果您的工作负载要求您在特定可用区中创建虚拟机,请指定 90 秒 (90s) 到 2 小时 (2h) 之间的时长。时长越长,您获得资源的机会就越大。

    • 如果虚拟机可以在区域内的任何可用区中运行,请指定零秒的时长 (0s)。此值表示 Compute Engine 仅在资源立即可用的情况下才分配资源。如果创建请求因资源不可用而失败,请在其他可用区中重试该请求。

  • TERMINATION_ACTION:指示在虚拟机运行时长结束时,是停止还是删除虚拟机。请指定以下某个值:

    • 如需停止虚拟机,请执行以下操作:STOP

    • 如需删除虚拟机,请执行以下操作:DELETE

  • RUN_DURATION:虚拟机在被 Compute Engine 删除之前运行的最长时间,格式为数字后跟单位(smhd)。该值必须介于 10 分钟和 7 天之间。

REST

如需创建灵活启动的虚拟机,请向 instances.insert 方法发出 POST 请求。在请求正文中,添加以下字段:

  • params.requestValidForDuration 字段。

  • 设置为 FLEX_STARTscheduling.provisioningModel 字段。

  • scheduling.instanceTerminationAction 字段。

  • scheduling.maxRunDuration 字段。

  • 设置为 TERMINATEscheduling.onHostMaintenance 字段。

  • reservationAffinity.consumeReservationType 设置为 NO_RESERVATION

如需创建灵活启动型虚拟机,请按如下所示发出 POST 请求:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "params": {
    "requestValidForDuration": {
      "seconds": VALID_FOR_DURATION
    }
  },
  "scheduling": {
    "provisioningModel": "FLEX_START",
    "instanceTerminationAction": "TERMINATION_ACTION",
    "maxRunDuration": {
      "seconds": RUN_DURATION
    },
    "onHostMaintenance": "TERMINATE"
  },
  "reservationAffinity": {
    "consumeReservationType": "NO_RESERVATION"
  }
}

替换以下内容:

  • PROJECT_ID:要在其中创建虚拟机的项目的 ID。

  • ZONE:您要在其中创建虚拟机的可用区。 如需验证某个机器类型在您要创建虚拟机的可用区中是否可用,请参阅可用区域和可用区

  • VM_NAME:新虚拟机的名称。

  • MACHINE_TYPE:要用于 Flex-start 虚拟机的机器类型。如果您指定了 G2 或 N1 机器类型,请考虑以下事项:

    • 对于 G2 机器类型,您可以选择指定要用于图形密集型工作负载的 NVIDIA RTX 虚拟工作站 (vWS)。为此,请在请求正文中添加 guestAccelerators 字段,如下所示:

      "guestAccelerators": [
        {
          "acceleratorCount": VWS_ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/nvidia-l4-vws"
        }
      ]
      

      VWS_ACCELERATOR_COUNT 替换为工作负载所需的 NVIDIA RTX vWS 数量。

    • 对于 N1 机器类型,您必须指定要挂接到虚拟机的 GPU 的数量和类型。否则,创建虚拟机会失败。如需将 GPU 挂接到 N1 虚拟机,请在请求正文中添加 guestAccelerators 字段,如下所示:

      "guestAccelerators": [
        {
          "acceleratorCount": ACCELERATOR_COUNT,
          "acceleratorType": "projects/PROJECT_ID/zones/ZONE/acceleratorTypes/ACCELERATOR_TYPE"
        }
      ]
      

      替换以下内容:

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

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

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

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

  • VALID_FOR_DURATION:等待虚拟机完成预配的最长时间(以秒为单位)。根据工作负载的可用区要求,我们建议您指定以下时长之一,以提高虚拟机创建请求的成功率:

    • 如果您的工作负载要求您在特定可用区中创建虚拟机,请指定 90 秒 (90) 到 2 小时 (7200) 之间的时长。时长越长,您获得资源的机会就越大。

    • 如果虚拟机可以在区域内的任何可用区中运行,请指定零秒的时长 (0)。此值表示 Compute Engine 仅在资源立即可用的情况下才分配资源。如果创建请求因资源不可用而失败,请在其他可用区中重试该请求。

  • TERMINATION_ACTION:指示在虚拟机运行时长结束时,是停止还是删除虚拟机。请指定以下某个值:

    • 如需停止虚拟机,请执行以下操作:STOP

    • 如需删除虚拟机,请执行以下操作:DELETE

  • RUN_DURATION:虚拟机在被 Compute Engine 删除之前运行的最长时间(以秒为单位)。该值必须介于 600 秒(10 分钟)和 604,800 秒(7 天)之间。

后续步骤

自行试用

如果您是 Google Cloud 新手,请创建一个账号来评估 Compute Engine 在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

免费试用 Compute Engine