用于 ML 工作负载的 Kubernetes
Kubernetes 是一个开源系统,可以跨机器集群自动调度、扩展和重新启动容器化程序。
概述
For machine learning, it lets teams pack GPU-hungry training jobs and latency-sensitive model servers onto shared hardware without babysitting individual servers.
深入探讨
Kubernetes 最初是在 Google 上构建的,用于运行 Web 服务,它将您的集群视为一个由 CPU、内存和 GPU 组成的大池,然后决定哪台机器运行每个容器。 ML 团队之所以依赖它,是因为工作负载是突发性的且成本高昂:训练运行可能需要 8 个 GPU 持续 6 个小时,然后什么都不需要。 Kubernetes 将该 pod 调度到具有空闲 GPU 的节点上,当作业完成时,它会释放硬件。它还使推理服务器保持活动状态,重新启动崩溃的容器并在计算机之间传播副本以实现弹性。 Kubeflow、Ray 和 KServe 等构建于其之上的工具添加了特定于 ML 的部分,例如分布式训练运算符、超参数调整和自动缩放模型端点,因此数据科学家可以使用更高级别的抽象而不是原始 YAML。
技术洞察
Kubernetes 通过设备插件分配 GPU,这些插件会宣传 nvidia.com/gpu 等资源,调度程序会根据 pod 的请求进行匹配。污点和容忍度使廉价的 CPU 作业远离昂贵的 GPU 节点,而节点选择器和关联规则将训练固定到特定的硬件。对于多 GPU 训练,操作员创建一组相互发现并运行 PyTorch DDP 或 Horovod 等框架的 Pod,使用 NCCL 在集群网络上交换梯度。
战略影响
成本与预算
多年来,架构决策决定着性能和运营成本。
更清晰的判决
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
质量控制
更好的工程选择可以减少生产中的可靠性事故。
ML 工作负载的 Kubernetes 的未来
期待更紧密的 ML 集成:群组调度会立即启动所有分布式训练 Pod,或者根本不启动;部分和时间切片 GPU 共享,以便多个轻量作业共享一张卡;以及尊重快速 NVLink 互连的拓扑感知布局。 Kubernetes 上的无服务器推理(将请求之间的端点扩展到零)正在走向成熟。随着模型的膨胀,调度程序越来越多地跨多个集群和云进行协调,Kueue 和 Volcano 等基于队列的公平共享系统正在成为管理稀缺 GPU 容量的标准。
现实世界的实施
研究实验室使用 Kubeflow Training Operator 在四个节点上启动 32-GPU PyTorch 分布式训练作业,然后在收敛时自动释放 GPU。
一家电子商务公司通过 KServe 提供其推荐模型,该模型会在闪购期间自动扩展副本,并在一夜之间回落。
一家银行以 Kubernetes CronJobs 的形式运行夜间批处理评分作业,将它们在备用 CPU 节点上排队,这样它们就不会与白天的服务流量竞争。
一家初创公司使用 Kubernetes 上的 Ray 来运行并行超参数扫描,在现场实例上启动数十个短期试用 Pod 以降低成本。
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实际负载和数据条件下进行基准测试。
仪器监控错误、漂移和用户影响。
在扩展之前准备回滚和事件响应路径。
不断探索
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Kubernetes for ML Workloads quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
常见问题
What is Kubernetes for ML Workloads?
Kubernetes 是一个开源系统,可以跨机器集群自动调度、扩展和重新启动容器化程序。对于机器学习,它可以让团队将需要 GPU 的训练作业和延迟敏感的模型服务器打包到共享硬件上,而无需照顾单独的服务器。
Kubernetes 调度程序针对 ML 工作负载的主要工作是什么?
调度程序将 Pod 的资源请求(CPU、内存、GPU)与可用节点进行匹配,并将 Pod 放置在适合的位置。它不涉及模型代码或数据。
Kubernetes 通常如何为 Pod 提供 GPU 可用?
设备插件将 GPU 作为可调度资源(例如 nvidia.com/gpu)公开,让 Pod 请求它们并让调度程序跟踪可用性。
ML 集群中常用的污点和容忍有哪些?
污点会排斥节点上的 Pod;只有具有匹配耐受性的吊舱才能在那里着陆。这为真正需要 GPU 的作业保留了稀缺的 GPU 节点。
哪个工具添加了 ML 特定的功能,例如在 Kubernetes 之上的分布式训练运算符?
Kubeflow 将 ML 工作流程分层到 Kubernetes 上,包括训练运算符、管道和调整,因此团队可以避免手写低级集群配置。
为什么 Kubernetes 非常适合突发性机器学习工作负载?
训练过程非常激烈:短暂使用大量 GPU,然后就没有了。 Kubernetes 在资源空闲时放置作业,并在完成后释放它们,从而提高利用率。