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创建的只读模板。 专门用于ML的镜像通常在NVIDIA NGC之类的注册表中可用,这些注册表已预先配置了GPU驱动程序和ML框架。
- Docker容器:容器是Docker镜像的可运行实例。 运行镜像时,它将成为一个容器,该容器是在主机内核上运行的隔离进程。 多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器都作为用户空间中的隔离进程运行。 与传统的虚拟化相比,这使它们非常高效。 该技术已通过开放容器计划(OCI)之类的组织进行了标准化。
真实世界的AI/ML应用
Docker 简化了 AI 模型的整个生命周期,从实验到生产。
- 将计算机视觉模型部署到边缘: 为目标检测训练的Ultralytics YOLO11模型可以打包到Docker容器中。此容器包括模型权重、推理脚本以及所有必要的依赖项,如特定的CUDA库版本。然后,可以将此单个容器一致地部署在各种平台上,从强大的云GPU到资源受限的边缘人工智能设备(如NVIDIA Jetson)。这确保了模型按预期执行,这是实时推理在智能监控等应用中的关键要求。
- 创建可重现的研究环境: 开发用于 图像分割 的新算法的数据科学家可以创建一个 Docker 容器,该容器锁定 Python、TensorFlow 和其他库的特定版本。 这种容器化环境可以与合作者共享或与研究论文一起发布,从而使其他人可以完美地复制 训练 环境并验证结果。 像 Ultralytics HUB 这样的平台与容器技术集成,以进一步简化此过程。
与类似术语的比较
虽然 Docker 是容器化的核心,但它通常与其他技术一起使用:
- 容器化: 这是将软件打包到容器中的通用概念。Docker 是最流行的容器化平台,提供构建、交付和运行容器的工具。
- Kubernetes: 虽然 Docker 管理单个主机上的各个容器,但 Kubernetes 是一个容器编排平台。它可以自动在机器集群中部署、扩展和管理容器化应用程序。可以将 Docker 视为创建运输集装箱,而 Kubernetes 视为管理船舶和港口的系统。您可以在Kubernetes 官方网站上了解更多信息。
- 虚拟机 (VM): VM 通过模拟包括客户操作系统在内的整个硬件系统来提供隔离。由 Docker 管理的容器虚拟化操作系统,共享主机内核。这使得容器比 VM 更轻量级、更快且资源效率更高,但 VM 提供更强的隔离。Docker 官方网站提供了一个很好的比较。
通过利用 Docker,AI 和 计算机视觉 (CV) 从业者可以显著提高工作流程效率、协作和已部署模型的可靠性。有关 Docker 用途的概述,可以参考 OpenSource.com 的 Docker 说明 等资源,其中提供了易于理解的介绍。这项技术是各种模型部署选项的关键推动因素。