术语表

Docker

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

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

Docker 是一个功能强大的平台,它通过使用容器简化了应用程序的开发、部署和运行。容器允许开发人员将应用程序与它所需的所有部分(如库和其他依赖项)打包,并将其作为一个包全部发送出去。这就确保了应用程序可以在任何其他机器上运行,无论该机器的自定义设置与编写和测试代码时使用的机器有何不同。对于熟悉基本机器学习概念的用户来说,Docker 提供了一种高效管理和部署模型的简化方式,可确保不同环境下的一致性。

Docker 的核心概念

Docker 的核心是几个关键概念:

  • 镜像镜像是一个只读模板,包含创建 Docker 容器的说明。它包括应用程序代码、库、工具、依赖项以及运行应用程序所需的其他文件。映像是根据 Dockerfile 中编写的一系列指令构建的。
  • 容器:容器是一个映像的可运行实例。你可以使用 Docker API 或CLI 来创建、启动、停止、移动或删除容器。容器之间以及容器与主机系统之间是隔离的,但它们可以通过定义的通道与其他容器和外界进行通信。
  • Dockerfile:这是一份文本文件,包含用户在命令行上调用的所有命令,用于组装镜像。Docker 可以通过读取 Dockerfile 中的指令自动构建镜像。
  • Docker 引擎:使用 Docker 组件和服务构建并运行容器的底层客户端-服务器技术。
  • Docker Hub:Docker 提供的基于云的注册服务,用于查找容器映像并与团队或 Docker 社区共享。它类似于 GitHub,但针对的是 Docker 镜像。你可以从Docker Hub提取映像作为容器的基础,也可以推送自己的映像与他人共享。

人工智能和机器学习的相关性

在人工智能和机器学习方面,Docker 具有几个关键优势:

  • 可重复性:Docker 容器可确保机器学习模型在不同环境下(从开发人员的笔记本电脑到生产服务器)始终如一地运行。这对于重现研究成果和可靠地部署模型至关重要。
  • 可扩展性:Docker 可与 Kubernetes 等容器编排工具无缝协作,从而轻松扩展机器学习应用。你可以部署一个模型的多个实例,并有效地分配工作负载。
  • 依赖性管理:机器学习项目通常依赖于特定版本的库和框架。Docker 可以将这些依赖关系封装在一个容器中,避免冲突并确保模型按预期运行。
  • 可移植性:Docker 容器可以在任何支持 Docker 的系统上运行,无论是本地机器、基于云的虚拟机还是内部服务器。这种可移植性简化了将机器学习模型从开发到生产的过程。进一步了解高效部署计算机视觉模型的模型部署最佳实践。

人工智能/移动语言的实际应用

下面有两个具体例子,说明 Docker 在现实世界的人工智能/移动语言应用中的应用:

  1. 训练和部署对象检测模型:假设您正在使用Ultralytics YOLO 进行对象检测项目。您可以使用 Docker 为训练模型创建一致的环境。通过定义一个包含所有必要依赖项的 Dockerfile,如 PyTorchOpenCV 和Ultralytics 库等所有必要的依赖项,就可以确保训练过程的可重复性。模型训练完成后,您可以将其打包成 Docker 镜像,然后部署到生产环境中,如云服务器或边缘设备。这样就可以轻松扩展部署和管理模型更新。例如,我们的Docker 快速入门指南提供了使用 Docker 设置和使用Ultralytics YOLO 模型的说明。

  2. 开发和测试人工智能驱动的网络应用程序:想象一下,您正在开发一个使用机器学习模型进行图像分类的网络应用程序。Docker 可以帮助简化开发和测试流程。您可以为网络应用程序、机器学习模型和任何其他所需服务(如数据库)创建单独的容器。这样,您就可以独立开发和测试每个组件。例如,您可以使用带有 TensorFlow或PyTorch 的容器为机器学习模型提供服务,而另一个容器则运行网络应用程序的前端。这种模块化方法使应用程序的更新和维护更加容易。

与类似术语的比较

  • 容器化与虚拟化:虽然容器化(Docker 使用的容器)和虚拟化都允许隔离环境,但两者有很大不同。虚拟机(VM)将整个机器虚拟化到硬件级别,包括操作系统。这使得虚拟机笨重且启动缓慢。另一方面,容器将操作系统虚拟化,因此重量轻、启动快。Docker 容器共享主机系统的操作系统内核,减少了开销,提高了效率。
  • Docker 与 Kubernetes:Docker 是一个用于构建和运行容器的平台,而Kubernetes是一个用于大规模管理容器的容器编排工具。Kubernetes 可自动部署、扩展和管理容器化应用程序。Docker 可单独用于运行容器,而 Kubernetes 通常与 Docker 结合使用,以管理大规模部署。

通过利用 Docker,人工智能和机器学习从业人员可以简化工作流程,加强协作,并更有效地部署模型。要了解有关在Ultralytics YOLO 上设置和使用 Docker 的更多信息,请参阅我们的Docker 快速入门指南。

阅读全部