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

容器化

探索容器化在 AI/ML 项目中的强大功能。使用先进的工具简化工作流程,确保一致性并高效扩展。

容器化是一种软件部署过程,它将应用程序的代码与所有文件和库捆绑在一起。 捆绑在一起,以便在任何基础设施上运行。通过将软件及其依赖关系封装成一个轻量级的 单元(称为容器),开发人员可确保应用程序在任何特定计算环境下都能稳定运行。 计算环境。在快速发展的 在快速发展的机器学习(ML)领域,容器化已 已成为现代 MLOps战略的基石。它通过隔离执行环境 它通过隔离执行环境,解决了臭名昭著的 "它在我的机器上也能运行 "的问题,使复杂的 计算机视觉(CV)工作流的可移植性、 可重现,并易于扩展。

容器化在人工智能中的作用

对于数据科学家和 ML 工程师来说,管理诸如特定版本的 Python, PyTorch和 CUDA 驱动程序可能具有挑战性。容器化通过创建一个不可变的环境来解决这个问题。

  • 便携性:集装箱式 YOLO11模型 可以从开发人员的本地笔记本电脑无缝移动到高性能内部服务器或公共云 实例,而无需重新配置。这种灵活性对于混合 云计算战略至关重要。
  • 效率:与模拟整个硬件堆栈和操作系统的传统虚拟机(VM)不同,容器共享主机系统的操作系统内核。 操作系统不同,容器共享主机系统的操作系统内核。这使它们大大提高了轻量级和 启动速度更快,可优化资源使用,为 模型服务
  • 可扩展性:容器易于复制。当应用程序的流量激增时,协调 工具可以立即启动额外的容器实例来处理负载,从而确保较低的 推理延迟

核心技术和概念

了解容器化需要熟悉一些关键技术,这些技术将容器的构建和管理方式标准化。 构建和管理的标准化方式。

  • Docker最广泛采用的平台 在容器中开发、运输和运行应用程序。Ultralytics 提供了全面的 Docker 快速入门指南,帮助用户高效部署 对象检测模型。Docker 遵循由 开放容器倡议(OCI)制定的行业标准,确保不同平台间的兼容性。 平台的兼容性。
  • KubernetesDocker 管理 单个容器,而 Kubernetes 是一个协调系统,用于自动部署、扩展和管理 容器化应用程序。它通常用于管理大型集群的 GPU资源 分布式训练
  • 容器注册中心:这些是存储和共享容器镜像的存储库。流行的 的例子包括 Docker Hub 和NVIDIA NGC 目录。 GPU人工智能软件。

容器化与虚拟机

区分容器和 虚拟机。虚拟机运行完整的 虚拟机运行完整的客户操作系统,通过管理程序虚拟访问主机资源。这可以创建高水平的 隔离,但会产生大量开销。相反,容器将操作系统虚拟化,允许 多个隔离的用户空间实例在单个内核上运行。这种区别使容器成为微服务和 选择。 资源有限。

实际应用

容器化应用于人工智能生命周期的各个阶段,从研究到生产。

1.可重复的研究环境

在学术和工业研究中,结果的再现至关重要。通过在容器 镜像中定义确切的环境,研究人员就能确保他们的 模型训练实验可以被任何人复制、 复制。这就消除了因库版本或系统配置不同而造成的差异。例如,一个 研究图像分割的团队可以共享一个 Docker 映像,其中包含他们特定的数据集处理工具和模型架构,从而保证结果的一致性。 结果的一致性。

2.部署到边缘

将深度学习模型部署到边缘设备(如 NVIDIA Jetson 等边缘设备部署深度学习模型需要高度优化的 环境。容器允许开发人员将模型打包,如 YOLO11这样的模型,只需要必要的运行时依赖项。这种 可以部署到成千上万的远程设备上,更新安全摄像机的对象检测能力。 安全摄像头或自主机器人的物体检测功能 或自主机器人,而无需人工干预。请在 AWS 容器用例

示例:容器就绪推理脚本

在对应用程序进行容器化时,通常会创建一个脚本作为入口点。下面的Python 代码演示了使用 ultralytics 软件包。该脚本可以是 运行在专为 实时推理.

from ultralytics import YOLO

# Load the YOLO11 model (ensure weights are present in the container)
model = YOLO("yolo11n.pt")

# Perform inference on an image URL
# In a container, this might process incoming video streams or API requests
results = model.predict(source="https://ultralytics.com/images/bus.jpg", save=True)

# Print detection results to verify operation
for result in results:
    print(f"Detected {len(result.boxes)} objects in the frame.")

该脚本有效地展示了当依赖关系由 容器环境来处理依赖关系时,代码占用空间有多小。通过利用 模型权重,容器 就成了一个可随时部署的独立智能单元。有关容器基础知识的更多阅读,请参阅 Red Hat 容器文档提供了极好的 入门材料。

加入Ultralytics 社区

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

立即加入