概述
Kubernetes 是一个开源系统,可以跨机器集群自动调度、扩展和重新启动容器化程序。对于机器学习,它可以让团队将需要 GPU 的训练作业和延迟敏感的模型服务器打包到共享硬件上,而无需照顾单独的服务器。
ML 工作负载的 Kubernetes 是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。
深入探讨
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
Kubernetes 是一个开源系统,可以跨机器集群自动调度、扩展和重新启动容器化程序。对于机器学习,它可以让团队将需要 GPU 的训练作业和延迟敏感的模型服务器打包到共享硬件上,而无需照顾单独的服务器。 ML 工作负载的 Kubernetes 是一个技术构建块,会大规模影响模型质量、基础设施成本、延迟和可靠性。为了建立深入的理解,请将 Kubernetes for ML Workloads 视为一种操作模型,而不是单一功能:定义所需的结果,澄清假设,并将系统可以可靠地执行的操作与仍需要专家判断的操作分开。
在实践中,使用 Kubernetes 进行机器学习工作负载的强大团队会根据可靠性和成本来优化架构、数据和基础设施选择。他们记录明确的成功标准,根据实际数据和工作流程进行测试,并根据观察到的失败模式而不是一次性基准测试胜利进行迭代。这就是理论理解转变为跨产品、政策和运营的持久能力的地方。
多年来,架构决策决定着性能和运营成本。与此同时,优化一个基准测试可以隐藏更广泛的系统弱点。最具弹性的方法是将实验速度与治理规则结合起来:运行试点、捕获证据、发布决策日志,并随着模型行为、用户期望和监管要求的发展不断更新保障措施。
战略影响
多年来,架构决策决定着性能和运营成本。
多年来,架构决策决定着性能和运营成本。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
更好的工程选择可以减少生产中的可靠性事故。
更好的工程选择可以减少生产中的可靠性事故。在高质量部署中,这会转化为可衡量的操作规则、所有权边界和定期审查仪式,以便团队可以增强信心,而不是扩大模糊性。
现实世界的实施
研究实验室使用 Kubeflow Training Operator 在四个节点上启动 32-GPU PyTorch 分布式训练作业,然后在收敛时自动释放 GPU。
一家电子商务公司通过 KServe 提供其推荐模型,该模型会在闪购期间自动扩展副本,并在一夜之间回落。
一家银行以 Kubernetes CronJobs 的形式运行夜间批处理评分作业,将它们在备用 CPU 节点上排队,这样它们就不会与白天的服务流量竞争。
一家初创公司使用 Kubernetes 上的 Ray 来运行并行超参数扫描,在现场实例上启动数十个短期试用 Pod 以降低成本。
实施模式
ML 工作负载的 Kubernetes 实践
研究实验室使用 Kubeflow Training Operator 在四个节点上启动 32-GPU PyTorch 分布式训练作业,然后在收敛时自动释放 GPU。
一家研究实验室使用 Kubeflow Training Operator 在四个节点上启动 32-GPU PyTorch 分布式训练作业,然后在收敛时自动释放 GPU。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
ML 工作负载的 Kubernetes 实践
一家电子商务公司通过 KServe 提供其推荐模型,该模型会在闪购期间自动扩展副本,并在一夜之间回落。
一家电子商务公司使用 KServe 为其推荐模型提供服务,该模型会在限时抢购期间自动扩展副本并在一夜之间回落。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。
ML 工作负载的 Kubernetes 实践
一家银行以 Kubernetes CronJobs 的形式运行夜间批处理评分作业,将它们在备用 CPU 节点上排队,这样它们就不会与白天的服务流量竞争。
一家银行以 Kubernetes CronJobs 的形式每晚运行批处理评分作业,将它们在备用 CPU 节点上排队,这样它们就不会与白天的服务流量竞争。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会得到更好的结果。
ML 工作负载的 Kubernetes 实践
一家初创公司使用 Kubernetes 上的 Ray 来运行并行超参数扫描,在现场实例上启动数十个短期试用 Pod 以降低成本。
一家初创公司使用 Kubernetes 上的 Ray 来运行并行超参数扫描,在现场实例上启动数十个短期试用 Pod 以降低成本。当团队预先定义质量阈值、为边缘情况保留人工升级路径并随着时间的推移跟踪生产力增益和错误成本时,通常会获得更好的结果。
风险与防护栏
优化一项基准测试可以隐藏更广泛的系统弱点。
基础设施和维护成本常常被低估。
随着系统变得更加复杂,安全性和可观察性差距可能会扩大。
实施路线图
在实施之前定义延迟、质量和成本目标。
在实施之前定义延迟、质量和成本目标。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在实际负载和数据条件下进行基准测试。
在实际负载和数据条件下进行基准测试。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
仪器监控错误、漂移和用户影响。
仪器监控错误、漂移和用户影响。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。
在扩展之前准备回滚和事件响应路径。
在扩展之前准备回滚和事件响应路径。将每个步骤视为证据门:如果不满足标准,则暂停推出,缩小差距,然后再扩大使用。