Docker
探索 Docker 如何实现可复现的 AI 部署。学习在容器中封装 Ultralytics YOLO26 模型,以实现从云端到边缘设备的无缝扩展。
Docker 是一个开源平台,允许开发者使用容器化技术来自动化应用程序的部署、扩展和管理。在人工智能和机器学习的背景下,Docker 充当了一个标准化的软件单元,它将代码以及所有依赖项(例如库、系统工具和设置)打包在一起,从而使应用程序能够在不同的计算环境中快速且可靠地运行。这消除了常见的“在我的机器上运行正常”的问题,确保在研究人员的笔记本电脑上训练的神经网络在部署到大型云服务器或边缘设备时表现完全相同。
为什么 Docker 对 AI 和机器学习很重要#
现代机器学习运维 (MLOps) 在很大程度上依赖于可复现性和可移植性。AI 项目通常涉及复杂的软件栈,包括特定版本的 Python、用于GPU 加速的 CUDA 驱动程序,以及诸如 PyTorch 或 TensorFlow 的深度学习框架。在不同的团队和基础设施之间手动管理这些内容很容易出错。
Docker 通过创建轻量级的独立容器简化了这一过程。与需要为每个实例提供完整操作系统的传统虚拟机 (VM) 不同,容器共享宿主机的操作系统内核,但在隔离的用户空间中运行。这使得它们的资源利用率显著提高,启动速度更快,这在扩展模型服务基础设施或运行分布式训练任务时至关重要。
实际应用#
Docker 在 AI 生命周期中无处不在,从最初的实验阶段到最终的部署阶段均有应用。
-
一致的训练环境: 数据科学团队可能会使用 Docker 镜像来共享统一的开发环境。例如,从事目标检测研究的研究人员可以拉取一个预构建的镜像,其中包含所有必要的驱动程序和库。这确保了当他们训练 YOLO26 模型时,其结果可以被同事复现,而不管底层硬件是否存在差异。
-
边缘 AI 部署: 在智慧城市监控中,更新后的模型需要推送至成千上万的边缘设备,例如交通摄像头或无人机。Docker 容器允许工程师打包新版本的模型并通过空中下载技术进行部署。由于容器包含了推理运行时,更新过程无缝且不会干扰设备的核心操作系统。
Docker 与 Kubernetes 与虚拟机的区别#
为了理解 Docker 的特定角色,将其与相关技术区分开来会很有帮助:
- Docker 与虚拟机 (VMs): 虚拟机对硬件进行虚拟化,这意味着每个 VM 都在 hypervisor 之上运行完整的操作系统(如 Windows 或 Linux)。这会消耗大量的内存和 CPU。Docker 则是对操作系统进行虚拟化,使容器比虚拟机更小、更快捷。
- Docker 与 Kubernetes: 这些是互补的技术,而非竞争技术。Docker 是用于创建和运行单个容器的工具。Kubernetes 是一个容器编排平台,用于管理 Docker 容器集群,处理大规模云计算环境中的自动扩展、负载均衡和自我修复等任务。
示例:在容器中运行推理#
以下示例展示了 Python 脚本在专为计算机视觉设计的 Docker 容器中可能呈现的样子。此脚本使用 ultralytics 包来加载模型并执行推理。容器环境确保了正确的依赖项(如 opencv-python 和 torch)已经存在。
from ultralytics import YOLO
# Load the YOLO26 model (weights are typically included in the Docker image)
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a containerized microservice, this might process incoming API requests
results = model.predict("https://ultralytics.com/images/bus.jpg")
# Log the detection results
print(f"Detected {len(results[0].boxes)} objects in the image.")将 Docker 集成到你的工作流中#
为了开始使用容器化,开发者通常会定义一个 Dockerfile,这是一个包含组装镜像的所有命令的文本文档。构建完成后,这些镜像可以存储在诸如 Docker Hub 或提供 GPU 优化容器的 NVIDIA NGC Catalog 等注册表中。
对于希望简化训练和部署流程而又不想手动管理 Dockerfiles 的用户,Ultralytics Platform 提供了集成的工具来处理云环境的复杂性。这使用户能够专注于提高模型准确率而不是配置基础设施。此外,你可以探索我们的Docker 快速入门指南以了解如何在容器中立即运行 Ultralytics 模型。






