本文档介绍了 Google Kubernetes Engine (GKE) 中的动态切片。借助动态切分,您可以将已配置的 TPU 子块配置为不同的拓扑。此功能可减少重新创建节点池的需求,在发生故障时允许自动恢复,从而增强容错能力,并优化资源利用率。
动态切分功能适用于希望优化 TPU 利用率、缩短配置时间并提高大规模训练和推理工作负载容错能力的机器学习 (ML) 工程师和平台工程师。
在阅读本文档之前,您应该先熟悉以下内容:
- GKE 中的 TPU。
- TPU Cluster Director。动态切分是一项由 TPU Cluster Director 启用的 TPU 功能。
- 全容量模式预留。动态切分功能仅适用于使用“所有容量”模式的 TPU。
什么是动态切片?
借助动态切分,您可以将 TPU 预配与 TPU 使用情况分离,从而灵活管理 Cloud TPU 容量。动态切片涉及以下流程:
- 以较小的单位配置资源:您可以以称为子块的单位配置资源。子块是 Ironwood (TPU7x) 容量的基本逻辑构建单元。对于 Ironwood (TPU7x),子块表示一个 16 节点的 TPU 虚拟机组,其拓扑为
4x4x4的互连 TPU 芯片。在 TPU 全容量模式和动态切分的情况下,节点池直接映射到子块。 - 将子块拼接在一起:动态切片会将这些子块拼接在一起,形成更大的切片。
动态切片的优势
动态切片可帮助您实现以下目标:
- 缩短配置时间:单独配置子块可加快整体配置速度,因为这样可以最大限度地减少任何单点故障的影响。
- 缩短恢复时间:如果发生 TPU 芯片故障,最小的故障单元是子块。动态切片可隔离故障子块,以便在健康子块上重新调度工作负载,这比重新配置整个大型切片要快得多。
- 调整容量:如果您有不同的工作负载要求,则无需删除并重新创建节点池即可更改拓扑。您可以动态重新配置已预配的节点池,以匹配指定的配置。
动态切片的关键要素
动态切片引入了以下关键概念:
- 节点池的增量预配:动态切片使用增量预配,这是一种容错的节点池预配模型。此模型会将您的所有 TPU 容量转换为包含 16 个 TPU 虚拟机的节点池。
- Slice 控制器:在 GKE 控制平面内运行的 Kubernetes 自定义资源控制器,用于管理动态切片。切片控制器管理 Slice 自定义资源(表示动态切片)的生命周期。Slice 控制器负责创建、持续监控和删除 Slice。使用调度器时,调度器会指导 Slice 自定义资源的创建和删除。
- 切片自定义资源:根据所请求的 TPU 拓扑动态将子块拼接在一起。此过程依赖于 OCS 网络的动态重新配置来连接 TPU 节点池,有助于确保实现最佳性能。您可以通过检查 Slice 自定义资源的状态字段来检查动态切片形成进度或健康状况。
使用调度器进行动态切片
如需使用动态切片,您可以使用以下任一选项:
- 使用您自己的调度程序来管理 Slice 自定义资源。如果您有复杂的调度要求,或者希望将动态切片与现有调度基础架构集成,此选项会很有用。如需开始使用,请参阅将动态切片与自定义调度器搭配使用。
- 使用调度程序自动创建 Slice 自定义资源。您可以配置 Kueue 和拓扑感知调度 (TAS),以自动创建 Slice 自定义资源。如需开始使用,请参阅使用 Kueue 和 TAS 调度动态切片。