Docker 在 AI/ML 中的入门指南

2025-06-04

Docker 在 AI/ML 中的入门指南

在机器学习 (ML) 和人工智能 (AI) 领域,处理环境和依赖关系会迅速变得复杂。Docker 通过为您的项目提供一致且可移植的环境,确保跨各种系统无缝执行代码,从而简化了这些挑战。

在本指南中,我们将探讨 Docker 如何通过确保一致性、可重复性和易于部署来简化您的 AI/ML 工作流程。学习如何轻松设置 Docker、创建容器化环境以及部署机器学习模型。

什么是 Docker?
Docker 是一个开源平台,它使开发人员能够使用轻量级、可移植的容器自动部署应用程序。容器打包了应用程序运行所需的一切:代码、运行时、系统工具、库和设置。这确保了应用程序无论部署在何处都能一致运行。

关键概念:

- 容器:包含运行应用程序所需一切的封装环境。-
镜像:用于创建容器的只读模板,包含应用程序代码、库和依赖项。-
Dockerfile:包含构建 Docker 镜像指令的文本文件,它定义了环境以及设置应用程序的步骤。

图片描述

图片描述

为什么要在 AI/ML 项目中使用 Docker?
Docker 对于 AI/ML 项目尤其有价值,原因如下:

跨环境一致性: Docker 通过将所有依赖项打包到容器中来确保环境保持一致,从而缓解开发环境和生产环境之间差异导致的问题。这对于依赖项和配置可能差异很大的机器学习项目至关重要。

实验的可重复性: Docker 提供了一个标准化的环境,使重现结果并与他人共享实验变得更加容易。这对于科学研究和机器学习至关重要,因为可重复性是关键。

简化部署: Docker 容器有助于将机器学习模型部署为服务。容器化后,模型可以部署在任何支持 Docker 的系统上,从而轻松实现扩展和管理。

隔离和安全:容器将应用程序及其依赖项与主机系统隔离,提供额外的安全层并减少不同应用程序之间的冲突。

图片描述

设置 Docker
要开始使用 Docker,请按照以下步骤操作:

1.安装Docker Desktop:

- Windows/Mac:
从 Docker 网站下载 Docker Desktop 并按照安装说明进行操作。
- Linux:按照 Docker 网站上针对您的特定发行版的安装说明进行操作。

2. 验证安装:
打开终端并运行:

docker --version

此命令应显示已安装的 Docker 版本。确保 Docker 正在运行并正确安装。

基本 Docker 命令
以下是一些可帮助您入门的基本 Docker 命令:

  • 构建图像:

docker build -t myimage .

此命令从当前目录中的 Dockerfile 构建 Docker 镜像。-t 标志为镜像添加名称。

- 运行容器:

docker run -d -p 8080:80 myimage

这将从指定的镜像运行一个容器,并将容器中的 80 端口映射到主机上的 8080 端口。-d参数表示以分离模式运行容器。

- 拉取图像:

docker pull ubuntu

此命令从 Docker Hub 下载 Docker 镜像。您可以使用它来拉取基础镜像或预构建镜像。

- 列出正在运行的容器:

docker ps

此命令列出所有正在运行的容器及其详细信息。

- 停止并删除容器:

docker stop <container_id>
docker rm <container_id>

使用这些命令可以通过容器的 ID 或名称来停止和删除容器。

Docker 备忘单
外部聊天表

为 AI/ML 创建您的第一个 Docker 容器

让我们学习如何为一个简单的机器学习项目创建 Docker 容器。我们将使用一个基本的 Python 脚本作为示例。

1.创建一个简单的ML模型:

  • 准备一个 Python 脚本(例如model.py),使用 scikit-learn 训练一个简单模型。将以下代码保存在model.py中:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# Load data
iris = load_iris()
X, y = iris.data, iris.target

# Split data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Train model
model = RandomForestClassifier()
model.fit(X_train, y_train)

# Make predictions
predictions = model.predict(X_test)

# Print accuracy
print(f"Accuracy: {accuracy_score(y_test, predictions)}")

Enter fullscreen mode Exit fullscreen mode

2.编写Dockerfile:

下面是我们示例的基本 Dockerfile:

# Use the official Python image from the Docker Hub
FROM python:3.9

# Set the working directory in the container
WORKDIR /app

# Copy the current directory contents into the container
COPY . /app

# Install any needed packages specified in requirements.txt
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

# Run model.py when the container launches
CMD ["python", "model.py"]

Enter fullscreen mode Exit fullscreen mode

创建包含以下内容的requirements.txt文件:

scikit-learn

3.构建并运行Docker容器:

- 构建 Docker 镜像:

docker build -t mymlmodel .

- 运行 Docker 容器:

docker run mymlmodel

这将在容器内执行您的model.py脚本并打印模型的准确性。

图片描述

图片描述

故障排除

常见问题:

- Docker Daemon 未运行:确保 Docker 已正确安装并正在运行。在 Windows/Mac 上,您可能需要启动 Docker Desktop。在 Linux 上,请使用sudo systemctl start docker。-
权限问题:如果遇到权限问题,使用 运行 Docker 命令sudo可能会有所帮助,但将您的用户添加到 Docker 组是更好的解决方案(sudo usermod -aG docker $USER)。-
依赖项冲突:有时,特定的软件包版本可能会导致问题。请确保您的 Dockerrequirements.txt包含确切的版本,或者考虑使用pip freeze输出以进行更严格的控制。

Docker Compose

对于管理涉及多个服务的更复杂的设置,Docker Compose 非常有用。这是一个基本示例:

创建 docker-compose.yml 文件:

version: '3'
services:
  mlmodel:
    image: mymlmodel
    build: .
    ports:
      - "8080:80"

Enter fullscreen mode Exit fullscreen mode

该文件定义了一个名为mlmodel的单一服务,它从当前目录构建并将容器中的端口 80 映射到主机上的端口 8080。

更复杂的用例

对于更高级的场景,可以考虑将 Docker 与其他工具集成,例如使用 TensorFlow Serving 来提供模型服务,或使用 Flask 来创建 API。这些设置有助于部署和管理更复杂的机器学习应用程序。

最佳实践

- 保持镜像轻量:仅在 Docker 镜像中包含必要的依赖项。避免安装不必要的软件包或文件。-
管理依赖项:使用 requirements.txt 文件或类似文件来管理 Python 软件包依赖项。这可确保安装所有必需的软件包。-
使用 Docker Compose:对于涉及多个容器(例如,Web 服务器和数据库)的复杂设置,Docker Compose 可以简化编排和管理。-
优化 Dockerfile:尽可能合并命令,以最大限度地减少 Dockerfile 中的层数。有效使用缓存来加快构建速度。

结论

Docker 提供了一种强大而灵活的方法来管理 AI/ML 项目中的环境和依赖项。通过容器化您的机器学习模型,您可以实现更高的一致性、可重复性和易于部署性。Docker 简化了开发流程,并有助于确保您的模型在任何环境中都能顺畅运行。

资源和进一步阅读

Docker 文档

Docker 数据科学简介

Docker化机器学习模型

文章来源:https://dev.to/docker/getting-started-with-docker-for-aiml-a-beginners-guide-4k6j
PREV
使用 Python、Django 构建聊天机器人
NEXT
Axios 与 Fetch 对比