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

Docker

使用 Docker 简化 AI/ML 工作流程! 了解如何在各种环境中部署模型、确保可重复性并高效扩展。

Docker 是一个开源平台,通过容器化实现应用程序的自动化部署、扩展和管理。 容器化。在快速发展的 人工智能(AI)领域,Docker 解决了 "在我的机器上运行 "这一关键难题。通过打包 机器学习(ML)模型及其 Docker 通过将机器学习(ML)模型及其代码、运行时、系统工具和库打包成一个标准化的单元(称为容器),保证了软件在任何情况下都能以完全相同的方式运行。 软件将以严格相同的方式运行,而不受计算环境的影响。这种一致性对于现代 MLOps管道至关重要,可促进 从本地开发顺利过渡到 云计算基础设施或边缘设备。

Docker 的核心概念

了解 Docker 需要熟悉定义其工作流程的三个基本组件。

  • Dockerfile:这是一个文本文档,包含用户在命令行上调用的所有命令。 行的所有命令。对于人工智能项目来说,一个 Dockerfile就像一份食谱,指定了基本的 操作系统,安装 Python等语言,并设置必要的 框架,如 PyTorchTensorFlow.
  • Docker 映像:映像是一个只读模板,包含创建 Docker 容器的说明。 它捕获了特定时刻的应用程序状态。开发人员通常使用来自注册中心的优化基础镜像 像NVIDIA NGC这样的注册机构提供的优化基础镜像,以利用预装的驱动程序来实现 GPU加速。
  • Docker 容器:容器是一个映像的可运行实例。它将应用程序与 隔离,同时共享主机的操作系统内核。这种隔离可确保将软件冲突 最小化,这是稳定 模型部署的关键要求。

Docker 在现实世界中的人工智能应用

Docker 是部署强大的 计算机视觉 (CV)解决方案必不可少。

  1. 边缘人工智能部署:将模型部署到资源有限的设备(如 NVIDIA Jetson 等资源受限的设备时,Docker 容器提供了一个 轻量级环境,其中包括特定的依赖项,如 OpenCV和特定硬件库等特定依赖项。例如,一个 Ultralytics YOLO11模型打包在一个 Docker 容器中 可以轻松地推送到数千台远程摄像机上,用于 对象检测,而无需担心 单个设备的配置。
  2. 可复制的研究与培训:在学术和工业研究中,复制成果至关重要。 至关重要。通过使用 Docker,研究人员可以冻结模型训练过程中使用的每个库的准确版本。 模型训练。这就消除了因软件更新而造成的差异 软件更新造成的差异,并允许其他人验证研究结果或在此基础上开展工作,从而促进数据科学领域更好的合作。 数据科学的协作。

将 Docker 与YOLO集成

在 Docker 容器中运行推理,有助于确保环境保持清洁,并且依赖包不会与其他系统级软件包发生冲突。 不会与其他系统级软件包冲突。下面是一个简单的Python 脚本,通常在 Docker 容器内执行图像分割或 检测任务。

from ultralytics import YOLO

# Load the YOLO11 model (downloads automatically if not present)
model = YOLO("yolo11n.pt")

# Perform object detection on an online image source
results = model("https://ultralytics.com/images/bus.jpg")

# Print the number of objects detected to verify inference
print(f"Detected {len(results[0].boxes)} objects in the image.")

Docker 与虚拟机

虽然这两种技术都能隔离应用程序,但它们的功能不同。

  • 虚拟机(VM):虚拟机模拟整个计算机系统,包括完整的客户操作系统。 系统。这使得虚拟机很重,启动速度较慢。 红帽提供了详细的比较 说明了架构上的差异。
  • Docker 容器:容器虚拟化操作系统而非硬件。它们共享 主机的内核,从而大大提高了轻量级和效率。这种效率在 在部署高性能模型(如即将推出的 YOLO26 等高性能模型时,这种效率至关重要。 开销最小化。

与 Kubernetes 的关系

Docker 和Kubernetes是不同但互补的 工具。Docker 用于创建和运行单个容器。然而,当在用于模型服务的服务器集群上管理数百个容器时 服务器集群管理数百个容器时,需要一个 协调工具。Kubernetes 可协调 Docker 容器的调度和执行,确保高可用性和可扩展性,从而实现企业级的模型服务。 可用性和可扩展性。 人工智能代理的高可用性和可扩展性。您可以在 Kubernetes 文档

Ultralytics 生态系统的未来发展,如即将推出的Ultralytics Platform,将利用这些 容器化原则来简化数据来源、培训和部署工作流程,进一步抽象化基础架构管理的复杂性。 基础设施管理的复杂性。

加入Ultralytics 社区

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

立即加入