术语表

Kubernetes

了解 Kubernetes 如何通过可扩展的模型部署、分布式培训和高效资源管理来简化 AI/ML 工作负载。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

Kubernetes 通常简称为 K8s,是一个开源平台,旨在自动部署、扩展和运行应用容器。Kubernetes 最初由Google 设计,现在由云本地计算基金会负责维护。从本质上讲,Kubernetes 是容器化应用的协调器,它通过计算机集群对应用进行管理,使其高效、可靠地运行。对于熟悉机器学习的用户来说,可以把 Kubernetes 想象成管弦乐队的指挥,确保所有不同的乐器(您的人工智能/ML 应用组件)和谐、大规模地演奏。

什么是 Kubernetes?

Kubernetes 的核心是一个管理容器化应用程序的系统。容器将软件代码及其依赖关系打包,这样应用程序就能在不同的计算环境中统一、一致地运行。Docker是一种流行的容器化技术,经常与 Kubernetes 一起使用。Kubernetes 可自动执行部署、管理和扩展这些容器化应用所涉及的许多手动流程。它将组成应用程序的容器组合成逻辑单元,便于管理和发现。这些单元被称为pod,部署在机器集群中。然后,Kubernetes 会处理以下任务:

  • 服务发现和负载平衡:Kubernetes 可以使用 DNS 名称或自己的 IP 地址来公开容器。如果容器的流量很大,Kubernetes 可以进行负载平衡并分配网络流量,从而保证部署的稳定性。
  • 存储协调:Kubernetes 允许您自动挂载所选的存储系统,如本地存储、公共云提供商等。
  • 自动推出和回滚:您可以使用 Kubernetes 为部署的容器描述所需的状态,它会以可控的速度将实际状态更改为所需的状态。例如,Kubernetes 可自动为部署创建新容器、移除现有容器并将其所有资源导入新容器。
  • 自动打包:Kubernetes 允许您指定每个容器需要多少CPU 和 RAM(内存)。Kubernetes 可以将容器装入节点,以充分利用资源。
  • 自愈:Kubernetes 会重启出现故障的容器,在节点死亡时替换和重新安排容器,杀死对用户定义的健康检查没有响应的容器,并在容器准备就绪之前不向客户发布广告。
  • 秘密和配置管理:Kubernetes 可让您存储和管理敏感信息,如密码、OAuth 标记和 SSH 密钥。您可以部署和更新机密及应用配置,而无需重建容器镜像,也不会在堆栈配置中暴露机密。

为什么 Kubernetes 与人工智能和 ML 相关?

由于 ML 工作负载的资源密集型和可扩展性,Kubernetes 与人工智能和机器学习领域尤其相关。训练大型模型,尤其是用于物体检测的Ultralytics YOLO 模型,通常需要在多个 GPU 或 TPU 上进行分布式计算。Kubernetes 提供了高效管理这些分布式资源的基础设施。

此外,大规模部署用于推理的人工智能/ML 模型需要稳健且可扩展的基础设施。Kubernetes 允许用户将模型容器化,并通过可扩展的应用程序接口提供服务,从而简化了模型部署。这对于需要低推理延迟和高吞吐量的实际应用来说至关重要。

Kubernetes 在 AI/ML 中的应用

  1. 可扩展的模型服务:考虑一个实时物体检测应用,如智能城市交通管理系统,使用 Ultralytics YOLOv8.随着城市的发展,处理来自更多摄像头的视频馈送的需求也在增加。Kubernetes 允许您动态扩展模型服务基础设施。通过将YOLOv8 模型作为容器化服务部署在 Kubernetes 上,您可以根据进入的流量轻松增加或减少模型实例的数量,从而确保即使在大负载情况下也能保持稳定的性能。这种可扩展性对于在实时人工智能应用中保持低延迟和高可用性至关重要。

  2. 分布式训练:训练最先进的人工智能模型通常需要海量数据集和强大的计算能力。为了缩短训练时间,有必要在机器集群中进行分布式训练。Kubernetes 可以通过管理多个节点上的工作负载分配、监控进度和处理故障来协调分布式训练作业。例如,您可以使用 Kubernetes 管理大型图像分类模型的分布式训练作业,该模型使用ImageNet 这样的数据集。Kubernetes 可确保每个训练节点都配置正确,数据得到有效分发,整个训练过程能够抵御节点故障。

总之,Kubernetes 是管理人工智能和 ML 工作负载复杂性的强大工具,可为培训和部署阶段提供可扩展性、弹性和效率。它协调容器化应用的能力使其成为构建和运行现代可扩展人工智能系统的理想平台。

阅读全部