术语表

Docker

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

Docker 是一个开源平台,它通过使用操作系统级虚拟化,将软件打包成称为容器的软件包,从而实现应用程序的自动化部署、扩展和管理。对于机器学习(ML)工程师和数据科学家来说,Docker 是一个至关重要的工具,它解决了环境不一致这一常见问题--臭名昭著的 "在我的机器上也能运行 "问题。通过将应用程序的代码与运行所需的所有库、框架(如PyTorch)和其他依赖项捆绑在一起,Docker 可确保模型无论部署在哪里,都能以相同的方式运行。这种一致性是可靠部署模型的基础,也是现代MLOps实践的基石。Ultralytics 提供了一份Docker 快速入门指南,以帮助用户开始将其应用程序容器化。

Docker 如何工作

Docker 的工作流程围绕几个核心组件展开,这些组件共同打包和运行应用程序:

  • Dockerfile:这是一个简单的文本文件,包含一系列顺序命令或指令。这些指令告诉 Docker 如何构建特定的 Docker 映像。对于一个 ML 项目来说,Dockerfile 将指定基本操作系统、安装 Python 和OpenCV 等依赖项的命令、复制模型文件和推理代码,并定义容器启动时要运行的命令。你可以在Docker 官方文档中找到更多关于 Dockerfile 的信息。
  • Docker 映像:镜像是一个轻量级、独立、可执行的软件包,包含运行软件所需的一切,包括代码、运行时、库、环境变量和配置文件。它是根据 Dockerfile 创建的只读模板。英伟达 NGC 等注册机构通常会提供针对 ML 的映像,这些映像预配置了 GPU 驱动程序和 ML 框架。
  • Docker 容器:容器是 Docker 映像的可运行实例。运行映像时,映像会变成一个容器,它是一个运行在主机内核上的隔离进程。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。与传统的虚拟化相比,这使它们极为高效。开放容器倡议(OCI)等组织对该技术进行了标准化。

真实世界的人工智能/移动语言应用

Docker 简化了人工智能模型从实验到生产的整个生命周期。

  1. 计算机视觉模型部署到边缘:物体检测而训练的Ultralytics YOLO11模型可以打包到一个 Docker 容器中。该容器包括模型权重、推理脚本和所有必要的依赖项(如特定的 CUDA 库版本)。然后,这个容器就可以在各种平台上统一部署,从功能强大的云GPU到资源有限的边缘 AI设备(如英伟达 Jetson)。这可确保模型按预期运行,而这正是智能监控等应用中实时推理的关键要求。
  2. 创建可重复的研究环境:开发图像分割新算法的数据科学家可以创建一个 Docker 容器,锁定特定版本的 Python、TensorFlow 和其他库。这种容器化环境可以与合作者共享,或与研究论文一起发表,让其他人能够完美复制训练环境并验证结果。Ultralytics HUB等平台与容器技术相结合,进一步简化了这一过程。

与类似术语的比较

虽然 Docker 是容器化的核心,但它经常与其他技术一起使用:

  • 集装箱化:这是将软件打包成容器的一般概念。Docker 是最流行容器化平台,它提供了构建、运输和运行容器的工具。
  • 库伯网络:Docker 管理单个主机上的单个容器,而 Kubernetes 是一个容器编排平台。它可以跨机器集群自动部署、扩展和管理容器化应用程序。可以把 Docker 想象成创建运输容器,而把 Kubernetes 想象成管理系统和端口。你可以在Kubernetes 的官方网站上了解更多信息。
  • 虚拟机(VM):虚拟机通过模拟整个硬件系统(包括客户操作系统)来实现隔离。由 Docker 管理的容器将操作系统虚拟化,共享主机内核。这使得容器比虚拟机更轻便、更快速、更节省资源,尽管虚拟机提供了更强的隔离性。Docker 官方网站提供了一个很好的比较。

通过利用 Docker,人工智能和计算机视觉(CV)从业人员可以显著提高工作流程效率、协作性和已部署模型的可靠性。有关 Docker 用途的一般概述,OpenSource.com 的 Docker 解释等资源提供了易于理解的介绍。这项技术是多种模型部署选项的关键推动因素。

加入 Ultralytics 社区

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

立即加入
链接复制到剪贴板