深圳Yolo 视觉
深圳
立即加入
词汇表

Kubernetes

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

Kubernetes 通常缩写为 K8s,是一个开源容器编排系统,可自动 的部署、扩展和管理。该系统最初Google 工程师设计,现在由云本地计算基金会(CN Kubernetes已发展成为运行有弹性、可扩展和可管理的容器应用程序的行业标准。 已发展成为运行弹性分布式软件系统的行业标准。在快速发展的 人工智能(AI)机器学习(ML)领域中,它是一个 在快速发展的人工智能(AI)和机器学习(ML)领域,它是一个基础架构层,使工程团队能够高效地管理复杂模型从实验开发到大规模生产的整个生命周期。 模型从实验开发到大规模生产的整个生命周期。

核心概念和架构

Kubernetes 的核心是管理运行容器化工作负载的计算机器集群(称为节点)。它 在很大程度上依赖于容器化技术--一种将代码及其 技术,以确保应用程序能在不同环境中一致运行。 环境中运行一致。Kubernetes 引入了 "Pod "等抽象概念,"Pod "是最小的可部署单元、 和 "部署 "等抽象概念,它们可以保持应用程序的理想状态。通过将软件与 通过将软件与底层硬件解耦,它允许 计算机视觉工程师可以专注于模型 性能,而不是服务器维护。 亚马逊 EKSGoogle Kubernetes 引擎 (GKE) 等托管服务。

AI和机器学习中的 Kubernetes

对于 对于机器学习运营 (MLOps) 而言,Kubernetes 是不可或缺的,因为它解决了可扩展性这一关键挑战。 可扩展性。现代人工智能工作负载,尤其是涉及深度学习的工作负载 需要大量计算资源。 计算资源。Kubernetes 分布式训练 调度多个节点上的训练作业,从而促进分布式训练。 图形处理器(GPU)的多个节点上智能调度训练作业,从而促进分布式训练。 在模型部署阶段,K8s 可确保 在模型部署阶段,K8s 可确保推理 API 的高可用性,根据实时流量需求自动增减运行 pod 的数量,从而优化性能和成本。 流量需求,从而优化性能和成本。

实际应用

  1. 智能城市交通监控:城市管理部门部署了 Ultralytics YOLO11模型来分析交通流量并 实时detect 拥堵情况。该应用在 Kubernetes 集群上进行了容器化和协调。利用 的 水平 Pod Autoscaler、 系统可检测到高峰时段视频流数据的峰值,并自动提供额外的推理 播客。这确保了不间断的 对象检测服务,而无需 手动配置服务器。
  2. 电子商务可视化搜索:一家在线零售商实施了一个 推荐系统,允许用户 搜索产品。该管道由不同的微服务组成,分别用于图像预处理、特征提取和向量数据库搜索。 提取和矢量数据库搜索。Kubernetes 对这些组件进行协调,允许 特征工程团队可以独立于搜索索引更新 提取模型,确保其生产环境的灵活性和系统稳定性。 生产环境中的灵活性和系统稳定性。

区分相关技术

了解 Kubernetes 与其他常见基础架构工具的区别很有帮助:

  • Kubernetes 与DockerDocker 是一种工具 是一种用于创建和运行单个容器的工具,而 Kubernetes 是一种协调器,用于在整个机群中管理这些容器。 的协调器。通常,开发人员使用 Docker 构建他们的 神经网络应用映像,然后依靠 Kubernetes 来大规模运行它们。
  • Kubernetes 与无服务器计算 无服务器计算AWS Lambda这样的无服务器平台抽象掉了所有基础架构 管理,使其成为事件驱动功能的理想选择。相比之下,Kubernetes 提供了对网络、存储和资源分配的细粒度控制。 网络、存储和资源分配的细粒度控制。 复杂的模型服务架构所必需。

工具和生态系统

Kubernetes 生态系统非常庞大,包括用于软件包管理的Helm和用于监控集群健康状况的 用于监控集群健康状况的Prometheus等工具。对于专门的 ML 工作流,像 Kubeflow 这样的平台 等平台在Kubernetes上运行,以简化端到端管道。 展望未来,即将推出的Ultralytics 平台旨在 平台旨在进一步简化这些流程,为数据管理和模型训练提供一个全面的环境,抽象出底层基础架构的复杂性。 抽象出底层基础设施的复杂性。

示例:容器化推理脚本

要在 Kubernetes 上部署模型,首先需要一个执行推理的脚本。这个Python 代码段演示了 加载YOLO11 模型,然后将其封装在 Docker 容器中并由 K8s 调度。

from ultralytics import YOLO

# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")

# Run inference on an image source
# This script would typically run inside a Kubernetes Pod
results = model("https://ultralytics.com/images/bus.jpg")

# Print the detected class names
for result in results:
    for cls_id in result.boxes.cls:
        print(f"Detected: {result.names[int(cls_id)]}")

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入