技术指南

用于 ML 工作负载的 Kubernetes

Kubernetes 是一个开源系统,可以跨机器集群自动调度、扩展和重新启动容器化程序。

听听这个指南AI叙述 · ~2 min

在本页阅读时间:2分钟
  1. 概述
  2. 深入探讨
  3. 现实世界的实施
  4. ML 工作负载的 Kubernetes 的未来
  5. 付诸实践
  6. 不断探索
  7. 常见问题

概述

对于机器学习,它可以让团队将需要 GPU 的训练作业和延迟敏感的模型服务器打包到共享硬件上,而无需照顾单独的服务器。

深入探讨

Kubernetes 最初是在 Google 上构建的,用于运行 Web 服务,它将您的集群视为一个由 CPU、内存和 GPU 组成的大池,然后决定哪台机器运行每个容器。 ML 团队之所以依赖它,是因为工作负载是突发性的且成本高昂:训练运行可能需要 8 个 GPU 持续 6 个小时,然后什么都不需要。 Kubernetes 将该 pod 调度到具有空闲 GPU 的节点上,当作业完成时,它会释放硬件。它还使推理服务器保持活动状态,重新启动崩溃的容器并在计算机之间传播副本以实现弹性。 Kubeflow、Ray 和 KServe 等构建于其之上的工具添加了特定于 ML 的部分,例如分布式训练运算符、超参数调整和自动缩放模型端点,因此数据科学家可以使用更高级别的抽象而不是原始 YAML。

现实世界的实施

研究实验室使用 Kubeflow Training Operator 在四个节点上启动 32-GPU PyTorch 分布式训练作业,然后在收敛时自动释放 GPU。

一家电子商务公司通过 KServe 提供其推荐模型,该模型会在闪购期间自动扩展副本,并在一夜之间回落。

一家银行以 Kubernetes CronJobs 的形式运行夜间批处理评分作业,将它们在备用 CPU 节点上排队,这样它们就不会与白天的服务流量竞争。

一家初创公司使用 Kubernetes 上的 Ray 来运行并行超参数扫描,在现场实例上启动数十个短期试用 Pod 以降低成本。

ML 工作负载的 Kubernetes 的未来

团队可以将队列准入、合适的 GPU 资源暴露和拓扑感知布局与其 ML 工作负载控制器结合起来。组准入有助于避免部分工作人员分配,而模型服务器可以通过适当的服务配置支持缩放到零。这些行为取决于已安装的组件和设置。操作员应该测试恢复、资源限制、互连和冷启动延迟,而不是假设容器编排器单独提供所有培训或服务功能。

付诸实践

为什么这很重要

  • 成本与预算. 多年来,架构决策决定着性能和运营成本。
  • 更清晰的判决. 技术教育帮助团队选择正确的堆栈,而不仅仅是最新的堆栈。
  • 质量控制. 更好的工程选择可以减少生产中的可靠性事故。

留意

  • 优化一项基准测试可以隐藏更广泛的系统弱点。
  • 基础设施和维护成本常常被低估。
  • 随着系统变得更加复杂,安全性和可观察性差距可能会扩大。

后续步骤

  1. 在实施之前定义延迟、质量和成本目标。
  2. 在实际负载和数据条件下进行基准测试。
  3. 仪器监控错误、漂移和用户影响。
  4. 在扩展之前准备回滚和事件响应路径。

不断探索

免费通讯

获取每日AI简报

每个工作日早晨提供三条经过验证的AI故事,使用简明英文撰写。永久免费,无广告。

每个工作日发送一封邮件。一键退订。我们永不出售或分享您的地址。

测试一下自己

参加 Kubernetes for ML 工作负载测验

每个答案即时反馈,课程通过后可获得可验证ID的可分享证书。

开始测验

支持免费AI教育。AI Understanding是一家501(c)(3)非营利组织——无广告,无付费墙,永不收费。 捐款

常见问题

什么是适用于机器学习工作负载的 Kubernetes?

Kubernetes 是一个开源系统,可以跨机器集群自动调度、扩展和重新启动容器化程序。对于机器学习,它可以让团队将需要 GPU 的训练作业和延迟敏感的模型服务器打包到共享硬件上,而无需照顾单独的服务器。

Kubernetes 调度程序针对 ML 工作负载的主要工作是什么?

调度程序将 Pod 的资源请求(CPU、内存、GPU)与可用节点进行匹配,并将 Pod 放置在适合的位置。它不涉及模型代码或数据。

Kubernetes 通常如何为 Pod 提供 GPU 可用?

设备插件将 GPU 作为可调度资源(例如 nvidia.com/gpu)公开,让 Pod 请求它们并让调度程序跟踪可用性。

对于 GPU 节点上的 NoSchedule 污点,匹配的 Pod 容忍会做什么?

容忍消除了匹配的污点屏障。其他资源和调度要求仍然适用。

哪个工具添加了 ML 特定的功能,例如在 Kubernetes 之上的分布式训练运算符?

Kubeflow 将 ML 工作流程分层到 Kubernetes 上,包括训练运算符、管道和调整,因此团队可以避免手写低级集群配置。

为什么 Kubernetes 非常适合突发性机器学习工作负载?

训练过程非常激烈:短暂使用大量 GPU,然后就没有了。 Kubernetes 在资源空闲时放置作业,并在完成后释放它们,从而提高利用率。