探索Kubernetes如何自动化部署和扩展AI模型。学习如何在K8s上Ultralytics 实现高性能计算机视觉。
Kubernetes(常简称为K8s)是一个开源平台,旨在自动化部署、扩展和管理容器化应用程序。该平台最初由Google 开发Google 现由云原生计算基金会(CNCF)维护,已成为云端软件编排的行业标准。 在人工智能(AI) 与机器学习(ML)领域,它作为关键基础设施层,使工程团队能够管理从分布式训练到高可用性生产推理的复杂工作流。通过抽象底层硬件,Kubernetes确保应用程序无论部署在本地环境还是公共云服务商处,都能可靠高效地运行。
在核心层面,Kubernetes基于集群架构运行,该架构由一组称为节点的工件机器组成。 这些节点运行容器化工作负载, 而控制平面则管理集群的整体状态。Kubernetes中最小的可部署单元是 "Pod",它封装了共享存储和网络资源的一个或多个容器。这种抽象对计算机视觉应用至关重要, 因为它允许开发者将依赖项(如特定的CUDA )打包为 图形处理单元(GPU)的特定CUDA库——打包到 一致的环境中。亚马逊弹性Kubernetes服务(EKS)、 Azure Kubernetes服务(AKS)和 Google (GKE)等主流云服务 提供了该架构的托管版本,减轻了数据科学团队的维护负担。
Kubernetes在机器学习运维(MLOps)中的核心价值 在于其处理动态工作负载的能力。人工智能模型在训练阶段通常需要海量计算资源, 而在部署阶段则要求极低的推理延迟。
Kubernetes是众多跨行业大规模人工智能部署的基石:
一个常见的困惑点在于Kubernetes与Docker之间的关系。它们并非竞争对手,而是互补技术。Docker是创建和运行独立容器(封装应用程序)的工具,而 Kubernetes则是管理跨多台机器的容器集群的工具。你使用Docker将模型权重和代码打包成镜像,再通过Kubernetes决定该镜像在生产环境中何时、何地运行以及运行多少副本。
要在Kubernetes上部署模型,开发人员通常从一个Python 开始,该脚本作为容器的入口点。以下代码演示了使用Ultralytics 模型进行简单推理任务的示例。该脚本将在pod内部运行,处理传入的请求。
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")
Kubernetes生态系统包含大量专为数据科学设计的工具。 Kubeflow作为广受欢迎的工具包,致力于使机器学习工作流在Kubernetes上的部署变得简单、可移植且可扩展。 为监控集群健康状况和应用指标,工程师通常依赖Prometheus。为进一步简化模型训练与部署流程Ultralytics 提供统一接口,实现数据集管理与模型训练自动化,支持用户导出适用于云计算集群的模型。此外,Helm等包管理器通过可复用图表,助力管理复杂的 Kubernetes 应用。