本文档介绍如何创建具有 GPU 虚拟机的托管式实例组 (MIG)。其中介绍了如何使用调整大小请求在实例组中一次性添加所有 GPU 虚拟机。
使用调整大小请求可提高 MIG 中 GPU 虚拟机的可获取性。在请求中,指定 GPU 虚拟机的数量以及您希望运行这些虚拟机的时长。底层调度器机制会处理整个 Compute Engine 中的所有调整大小请求,并根据虚拟机的时长和可用性有效地调度请求。当资源可用时,MIG 会自动创建虚拟机。
如果在这些虚拟机上运行的作业的完成时间早于所请求的时长,您可以删除这些虚拟机。否则,MIG 会在相应时长结束时自动删除虚拟机。
您还可以阅读创建 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
创建实例模板,这是创建 MIG 所必需的。MIG 会根据实例模板创建实例组中的每个虚拟机。在模板中,指定 GPU 虚拟机的配置以及使用调整大小请求所需的其他配置。
如需详细了解实例模板,请参阅实例模板简介。
创建 MIG 和调整大小请求,以便一次性添加所有 GPU 虚拟机。
转到实例模板页面。
点击创建实例模板。
在名称字段中,输入实例模板的名称。
在机器配置部分中,执行以下操作:
- 点击 GPU 标签页。
- 在 GPU 类型列表中,选择 GPU 类型。
- 在 GPU 数量列表中,选择 GPU 的数量。
- 在机器类型列表中,选择一种机器类型。
展开高级选项部分,然后执行以下操作:
- 展开管理部分。
- 在预留列表中,选择不使用。
点击创建。
INSTANCE_TEMPLATE_NAME
:实例模板的名称。MACHINE_TYPE
:支持 GPU 的机器类型。如果您指定 N1 机器类型,请添加--accelerator
标志以指定要挂接到虚拟机的 GPU 数量和类型。PROJECT_ID
:您要在其中创建 MIG 的项目的 ID。INSTANCE_TEMPLATE_NAME
:实例模板的名称。MACHINE_TYPE
:支持 GPU 的机器类型。如果您指定 N1 机器类型,请添加guestAccelerators
字段以指定要挂接到虚拟机的 GPU 数量和类型。使用 Beta 版
instance-groups managed create
命令创建可用区级 MIG。gcloud beta compute instance-groups managed create INSTANCE_GROUP_NAME \ --template=INSTANCE_TEMPLATE_NAME \ --size=0 \ --zone=ZONE \ --default-action-on-vm-failure=do_nothing
在 MIG 中,使用 Beta 版
instance-groups managed resize-requests create
命令创建调整大小请求。指定所需的 GPU 虚拟机数量以及您希望运行这些虚拟机的时长。gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \ --resize-request=RESIZE_REQUEST_NAME \ --resize-by=COUNT \ --requested-run-duration=RUN_DURATION\ --zone=ZONE
INSTANCE_GROUP_NAME
:MIG 的名称。INSTANCE_TEMPLATE_NAME
:GPU 虚拟机的实例模板的名称。ZONE
:提供 Compute Engine 服务的一个可用区。RESIZE_REQUEST_NAME
:调整大小请求的名称。COUNT
:要在实例组中一次性添加的所有虚拟机的数量。RUN_DURATION
:您希望请求的虚拟机运行的时长。该值的格式必须为天数、小时数、分钟数或秒数,后面分别跟d
、h
、m
和s
。例如,指定30m
表示 30 分钟,或指定1d2h3m4s
表示 1 天 2 小时 3 分钟 4 秒。该值必须介于 10 分钟到 7 天之间。向 Beta 版
instanceGroupManagers.insert
方法发出POST
请求以创建可用区级 MIG。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "versions": [ { "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME" } ], "name": "INSTANCE_GROUP_NAME", "targetSize": 0, "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }
在 MIG 中,向 Beta 版
instanceGroupManagerResizeRequests.insert
方法发出POST
请求以创建调整大小请求。在请求正文中,指定要一次性创建的所有 GPU 虚拟机的数量以及您希望运行这些虚拟机的时长。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", "resizeBy": COUNT, "requestedRunDuration": { "seconds": "RUN_DURATION" } }
PROJECT_ID
:您要在其中创建 MIG 的项目的 ID。INSTANCE_GROUP_NAME
:MIG 的名称。INSTANCE_TEMPLATE_NAME
:GPU 虚拟机的实例模板的名称。ZONE
:提供 Compute Engine 服务的一个可用区。RESIZE_REQUEST_NAME
:调整大小请求的名称。COUNT
:要在实例组中一次性添加的所有虚拟机的数量。RUN_DURATION
:您希望请求的虚拟机在 MIG 将其自动删除之前运行的时长(以秒为单位)。该值必须介于600
(600 秒,即 10 分钟)和604800
(604,800 秒,即 7 天)之间。- 了解调整大小请求在 MIG 中的工作原理。
- 了解如何在 MIG 中查看、取消或删除调整大小请求。
- 了解如何查看有关 MIG 和托管式虚拟机的信息。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
限制
查看在 MIG 中创建调整大小请求时的限制。
创建 MIG 并一次性添加所有 GPU 虚拟机
如需创建 MIG 并在实例组中一次性添加所有 GPU 虚拟机,请执行以下操作:
创建实例模板
按照本部分中的说明创建实例模板,然后使用该模板创建 MIG。
控制台
gcloud
使用
instance-templates create
命令创建实例模板。以下命令会创建一个全球级实例模板。
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --maintenance-policy=TERMINATE \ --reservation-affinity=none
替换以下内容:
REST
向
instanceTemplates.insert
方法发出POST
请求以创建实例模板。以下请求会创建一个全球级实例模板。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/family/debian-10" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "accessConfigs": [ { "name": "external-IP", "type": "ONE_TO_ONE_NAT" } ], "network": "global/networks/default" } ], "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, "scheduling": { "onHostMaintenance": "TERMINATE" } } }
替换以下内容:
创建 MIG 并一次性添加所有 GPU 虚拟机
按照本部分所述,创建一个停用了修复的 MIG。如需在 MIG 中使用调整大小请求,您不得在实例组中配置自动扩缩。
gcloud
替换以下内容:
REST
替换以下内容:
您创建的调整大小请求会保持
ACCEPTED
状态,直到 MIG 创建了所有请求的 GPU 虚拟机。在实例组中创建所有 GPU 虚拟机后,请求的状态会更改为SUCCEEDED
。后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-