本文档介绍了在 AI Hypercomputer 中创建 Compute Engine 实例和集群之前需要考虑的配置。 查看可用配置有助于优化工作负载的性能,并最大限度地减少停机时间和性能问题。
计算实例和集群创建的配置因素
在创建计算实例和集群以运行工作负载之前,请考虑使用哪种配置:
预配模型
根据您为创建计算实例或集群选择的 消费选项,您可以使用以下预配 模型之一来获取创建实例所需的资源:
受预留约束:您可以按折扣价预留 未来日期和时长的资源。在预留期开始时,您可以使用预留的资源创建实例或集群。在预留期内,您对预留的资源享有独占访问权限。
灵活启动:您可以请求最多七天的折扣资源。 Compute Engine 会尽力安排预配您请求的资源,以便在资源可用后立即预配。在您请求的时间段内,您对获得的资源拥有独占访问权限。
Spot:您可以根据可用性立即获得大幅 折扣的资源。不过,Compute Engine 可能会随时停止或删除实例以收回容量。
受预留约束的预配模型
受预留约束的预配模型会将您创建的计算实例与您之前预留的容量相关联。当您预留容量时,Compute Engine 会创建一个空预留。然后,在预留开始时间,会发生以下情况:
Compute Engine 会将您预留的实例数量添加到预留中。在预留结束时间之前,您对预留的容量享有独占访问权限。
Google Cloud 无论您是否使用预留的容量,都会向您收取该容量的费用,直到预留期结束为止。
然后,您可以使用预留的资源创建实例,而无需支付额外的费用。您只需为未包含在预留中的资源(例如磁盘或 IP 地址)付费。
如需在创建计算实例或 MIG 时指定受预留约束的预配模型,请执行以下操作:
在 Google Cloud 控制台中,从 预配模型 列表中选择 受预留约束。
在 Google Cloud CLI 中,在命令中添加
--provisioning-model=RESERVATION_BOUND标志。在 Compute Engine API 中,在请求正文中添加
"provisioningModel": "RESERVATION_BOUND"字段。
如需详细了解在预留容量后创建实例 或 MIG 时如何设置这些参数,请参阅 计算实例和集群创建概览。 如果您使用 Cluster Toolkit 部署集群,则集群蓝图会为您设置预配模型。
灵活启动预配模型
借助灵活启动预配模型,您可以在请求的容量可用时创建独立的灵活启动虚拟机,或将灵活启动虚拟机添加到托管式实例组 (MIG)。当您使用规模调整请求将灵活启动虚拟机添加到 MIG 时,MIG 会一次性创建所有实例。这种方法有助于您避免因 Compute Engine 在您等待启动工作负载所需的全部容量时可能提供的部分容量而产生不必要的费用。灵活启动预配模型会从安全容量池预配资源,这有助于提高您获得 GPU 等高需求资源的几率。
如需在创建独立实例或 MIG 的实例模板时指定灵活启动预配模型,请执行以下操作:
在 Google Cloud 控制台中,从预配模型列表中选择 灵活启动。
在 gcloud CLI 中,在命令中添加
--provisioning-model=FLEX_START标志。在 Compute Engine API 中,在请求正文中添加
"provisioningModel": "FLEX_START"字段。
如需详细了解如何创建使用灵活启动预配模型的实例或集群,请参阅以下文档:
创建 Slurm 集群:
创建 GKE 集群:
Spot 预配模型
借助 Spot 预配模型,您可以根据可用性创建大幅折扣的计算实例。不过,Compute Engine 可能会随时停止或删除创建的实例以收回容量。此过程称为 抢占。
如需在创建实例或 MIG 时指定 Spot 预配模型,请执行以下操作:
在 Google Cloud 控制台中,从 预配模型 列表中选择 Spot。
在 gcloud CLI 中,在命令中添加
--provisioning-model=SPOT标志。在 Compute Engine API 中,在请求正文中添加
"provisioningModel": "SPOT"字段。
如需详细了解在创建实例 或 MIG 时如何设置这些参数,请参阅 计算实例和集群创建概览。
集群部署工具
Cluster Toolkit 是一种开源 部署工具,建议用于创建 GPU 加速集群。 Cluster Toolkit 可以部署 Google Kubernetes Engine (GKE) 或 Slurm 集群。
或者,您可以选择使用以下方法之一预配计算实例组,然后根据需要加入自己的工作负载调度器:
预留块部署类型
如果您在创建集群式 GPU 计算实例或集群时使用受预留约束的预配模型,则您收到的机器会自动部署在密集分配的主机块中。此部署具有以下优势:
非阻塞式网络,可使用 Google 的动态机器学习 (ML) 网络结构实现一致的高带宽、低延迟实例连接。
访问网络拓扑,该拓扑提供实例之间相对邻近度的分层视图。此功能适用于高级作业调度使用场景。
使用编排器时,可进行精细的拓扑感知布置。
用户可以精细控制维护时间表,以最大限度地提高作业调度和正常运行时间,并最大限度地减少停机时间。
预留操作模式
如果您使用受预留约束的预配模型,则 您预留的机器类型决定了预留操作模式 的预留容量。每种模式都定义了如何响应主机错误或主机故障报告,以及您对预留基础架构的可见性和控制级别。
每种预留操作模式都定义了以下内容:
谁管理恢复:您或 Google Cloud。
您用于恢复的容量:仅预留容量,或 预留内或预留外的容量。
您的布置控制级别:您是否可以在计划时间之前查看和开始 维护特定预留子块,以进行 精细控制。
当您预留容量来创建计算实例或集群时,您必须 在以下预留操作模式之一之间进行选择: 受管模式或全容量模式。
受管模式
在受管模式下, Google Cloud 会在出现主机错误或主机故障 报告后自动管理计算实例的维护和 恢复流程。如果您的工作负载需要高稳定性,并且您希望使用自动化流程来最大限度地减少停机时间,则此方法非常适合。
受管模式具有以下特征:
仅使用预留容量进行恢复:Compute Engine 仅 使用预留容量来重启实例。如果预留中没有可用容量,则 Compute Engine 仅在您获得更多容量后才会重启实例。
自动重启实例: Google Cloud 处理实例的整个恢复 过程。当需要进行主机维护时,Compute Engine 会自动将预留中的实例迁移到其他可用机器上,然后重新启动这些实例。
块管理和可见性:您可以查看各个预留和预留块的拓扑、运行状况和 维护状态。您还可以接收这些资源的维护通知,并选择在预定维护时间之前开始维护。
潜在的 API 速率限制:对报告故障主机 API 的调用可能会受到每个预留的 速率限制。
全容量模式
在全容量模式下,您需要负责管理计算实例恢复流程。您必须在出现主机错误或主机故障报告后手动开始维护。与受管模式不同,您还可以查看和开始维护预留子块。借助这些功能,您可以全面精细地控制实例的维护和恢复流程。
全容量模式具有以下特征:
使用预留和未预留的容量进行恢复:您可以使用 预留的资源以及预留之外的任何可用资源,帮助您在实例的主机发生故障时迁移和重启实例。
手动重启实例:您需要负责实例的恢复流程 的实例。 如果因主机错误或主机故障报告而需要进行主机维护,Compute Engine 会停止您的实例。您只能在维护完成后重启实例。
块和子块管理和可见性:您可以查看各个预留、 预留块和预留子块的拓扑、运行状况和维护状态。您还可以接收这些资源的维护通知,并选择在预定维护时间之前开始维护。
无 API 速率限制:当您调用 报告故障主机 API 时,没有速率限制。
维护调度类型
如果您使用受预留约束的预配模型,则 Cluster Director 会提供用于为 集群中正在运行的计算实例安排主机维护的选项。当您预留容量时,您可以指定是否对实例进行分组并同步维护调度 (grouped),也可以使实例松散耦合并进行独立的维护调度 (independent)。
分组维护安排
分组维护调度类型有助于确保,无论 Compute Engine 何时预配计算实例,运行相同工作负载的所有实例都具有相同的计划维护频率。这种紧密耦合的维护可让您完全控制已用和未用容量,从而优化作业的性能。
在以下情况下,组维护调度类型非常有用:
您的环境使用作业调度器,例如 Slurm 或 GKE。
您希望运行训练或其他高度并行化的计算工作负载。
独立维护调度
这种独立维护调度类型可为实例提供不同的维护安排。如果您希望运行推理或有限规模的训练,并且工作负载在具有单独的维护时间表时运行效率更高,则此配置非常适合。