本文档介绍了如何创建使用灵活启动虚拟机 (VM) 实例的代管式实例组 (MIG)。灵活启动虚拟机可不间断运行最多七天,有助于您以折扣价获得 GPU 等高需求资源。这些功能使灵活启动虚拟机成为运行短时工作负载(例如模型微调和批量推理工作负载)的经济实惠的解决方案。
本文档中的步骤介绍了如何创建 MIG,以便在资源可用时创建单个灵活启动虚拟机。因此,MIG 最初可能仅创建部分请求的虚拟机,然后稍后在容量允许的情况下添加剩余的虚拟机。如果您想在 MIG 中一次性创建灵活启动虚拟机,请改为参阅关于 MIG 规模调整请求。
如需了解可用于创建 MIG 的其他方法,请参阅创建 MIG 的基本场景。
准备工作
- 验证您是否有足够的配额用于您要请求的资源。如需了解详情,请参阅分配配额。
-
如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
选择标签页以了解您打算如何使用本页面上的示例:
控制台
当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。
gcloud
-
安装 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 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含创建使用 Flex-start 虚拟机的 MIG 所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需创建使用灵活启动虚拟机的 MIG,您需要以下权限:
-
如需创建实例模板:针对项目的
compute.instanceTemplates.create权限 -
如需创建 MIG:针对项目的
compute.instanceGroupManagers.create权限
创建使用灵活启动虚拟机的 MIG
如需创建使用灵活启动虚拟机的 MIG,您必须完成以下步骤:
创建配置为创建灵活启动虚拟机的实例模板
您必须创建一个配置为创建灵活启动虚拟机的实例模板,如本部分中所述。创建模板后,您可以使用该模板来创建 MIG。
如需创建配置为创建灵活启动虚拟机的实例模板,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,转到实例模板页面。
点击创建实例模板。 系统会显示创建实例模板页面。
在名称字段中,输入实例模板的名称。
在位置部分中,选择要创建的实例模板类型:
对于区域级实例模板,请选择区域,然后选择要在其中创建模板的区域。根据您希望灵活启动虚拟机使用的机器类型,指定受支持的区域。
对于全球实例模板,请选择全球。
在机器配置部分中,为灵活启动虚拟机选择支持的机器系列。
在预配模型部分中,执行以下操作:
在虚拟机预配模型列表中,选择弹性启动。
如需为通过实例模板创建的虚拟机设置运行时长,请在输入小时数字段中输入虚拟机的运行时长(以小时为单位)。该值必须介于 1 小时 (
1) 到 7 天 (168) 之间。当虚拟机达到其运行时长的结束时间时,Compute Engine 会根据每个虚拟机的创建时间单独删除相应虚拟机。
可选:如需更改启动磁盘类型或映像的默认值,请在启动磁盘部分中,点击更改。然后,按照提示更改启动磁盘。
点击创建。
gcloud
如需创建配置为创建 Flex-start 虚拟机的实例模板,请使用 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 \
--reservation-affinity=none
替换以下内容:
INSTANCE_TEMPLATE_NAME:要创建的实例模板的名称。IMAGE_PROJECT:映像所属的映像项目;例如debian-cloud。如需详细了解支持的映像项目,请参阅公共映像。IMAGE_FAMILY:映像系列,用于指定最新的未弃用操作系统映像。例如,如果您指定debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践。REGION:用于创建实例模板的区域。根据您希望灵活启动虚拟机使用的机器类型,指定支持的区域。MACHINE_TYPE:用于灵活启动虚拟机的 GPU 机器类型或 H4D 机器类型。如果您指定 N1 机器类型,则必须添加--accelerator标志以定义要挂接到虚拟机的 GPU 的数量和类型。RUN_DURATION:您希望请求的虚拟机运行的时长。当虚拟机达到运行时长时,Compute Engine 会根据每个虚拟机的创建时间单独删除每个虚拟机。您必须将运行时长格式设置为天数、小时数、分钟数或秒数,后面分别跟d、h、m和s。例如,指定30m表示 30 分钟,或指定1d2h3m4s表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。
REST
如需创建配置为创建灵活启动虚拟机的实例模板,请发出以下 POST 请求之一:
如需创建区域级实例模板:
regionInstanceTemplates.insert方法如需创建全球实例模板:
instanceTemplates.insert方法
例如,如需创建区域级实例模板,请发出如下请求:
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"
}
],
"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:指定以下其中一项:MACHINE_TYPE:要用于虚拟机的 GPU 机器类型。如果您指定 N1 机器类型,则必须添加guestAccelerators字段以定义要挂接到虚拟机的 GPU 的数量和类型。RUN_DURATION:您希望请求的虚拟机运行的时长(以秒为单位)。当虚拟机达到运行时长时,Compute Engine 会根据每个虚拟机的创建时间单独删除每个虚拟机。运行时长必须介于600(600 秒,即 10 分钟)到604800(604,800 秒,即 7 天)之间。
创建实例模板后,您可以查看模板的详细信息以查看其属性。
创建区域级或可用区级 MIG
按照本部分所述,创建区域级或可用区级 MIG。您不得配置自动扩缩,并且必须关闭修复。如果所请求的资源不可用,Compute Engine 会一直尝试分配资源,直到请求成功、您减少 MIG 中的虚拟机数量或您删除 MIG。
如需创建区域级或可用区级 MIG,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往实例群组页面。
点击创建实例组。 此时会显示创建实例组页面。
在名称字段中,输入 MIG 的名称。
在实例模板列表中,选择您在上一部分中创建的实例模板。
在实例数字段中,输入要在 MIG 中创建的灵活启动虚拟机的数量。如果您的工作负载需要特定的虚拟机名称,请输入
0以不创建任何虚拟机。创建 MIG 后,向其中添加具有特定名称的虚拟机。在位置部分中,指定您是要创建可用区级 MIG 还是区域级 MIG,如下所示:
如需创建可用区级 MIG,请选择单个可用区。或者,如需创建区域 MIG,请选择多个可用区。
为 MIG 选择区域和可用区。
如果您要创建区域级 MIG,请执行以下操作:
在目标分布形状字段中,选择任意单个可用区。
在显示的对话框中,点击停用实例重新分配。
如需删除自动扩缩配置,请在自动扩缩部分中执行以下操作:
点击 配置自动扩缩。
在自动扩缩模式列表中,点击删除自动扩缩配置。
在确认对话框中点击删除。
如需关闭修复功能,请在失败时的操作部分中,从失败时的默认操作列表中选择无操作。
点击创建。
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 目标分布形状。
后续步骤
了解如何查看有关 MIG 和拖管式虚拟机的信息。
了解如何查看虚拟机和 GPU 的实际和预测用量。