使用Docker部署机器学习模型分步指南

译文 精选
人工智能 机器学习
你是否厌倦了修复同样的部署问题?不妨了解Docker如何使你的机器学习模型每次都能顺畅运行。

译者 | 布加迪

审校 | 重楼

部署机器学习模型与开发一样重要,特别是在确保不同环境之间的一致性时。软件版本或配置方面的变化/差异可能导致不一致的行为或意外错误。Docker将应用程序连同其依赖项封装到一个容器中,以确保它在任何地方都能一样正常运行。它可以简化部署过程并尽可能减少错误。

Docker简述

Docker是一开源平台,它使开发人员能够将应用程序连同其依赖项打包到一个容器中。这个容器是轻量级便携盒子,封装了应用程序运行所需的所有必要内容(比如代码、库和设置。容器应用程序操作系统或配置方面的差异隔离开来,从而确保应用程序在各种环境中一致地运行。此外,利用Docker可以简化团队成员之间的协作,便于从开发环境更平滑地过渡到生产环境

部署机器学习模型分步指南

不妨看看如何使用Docker部署机器学习模型。

1. 搭建环境

开始之前,确保你已经在系统上安装了Docker。你可以从Docker官方网站下载

2. 构建机器学习模型

你需要准备好部署一个经过训练的机器学习模型。在本教程中,我们使用scikit-learnPython举一个简单的示例。

model.py:

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pickle

# Train and save the model
def train_model():
 # Load dataset
 data = load_iris()
 X, y = data.data, data.target

 # Train model
 model = RandomForestClassifier()
 model.fit(X, y)

 # Save the trained model
 with open('model.pkl', 'wb') as f:
 pickle.dump(model, f)
 print("Model trained and saved as model.pkl")

# Load model and make a prediction using predefined test data
def predict():
 # Load the saved model
 with open('model.pkl', 'rb') as f:
 model = pickle.load(f)

 # Test data (sample input for prediction)
 test_data = [5.1, 3.5, 1.4, 0.2] # Example features
 prediction = model.predict([test_data])

 print(f"Prediction for {test_data}: {int(prediction[0])}")

if __name__ == '__main__':
 train_model()
 predict()

上面的例在一个脚本中结合了模型训练、保存和预测。train_model()函数使用Iris数据集训练一个简单模型,并将其保存为model.pklpredict()函数加载保存的模型并使用预定义的测试数据进行预测。

3. 创建requirements.txt文件

文件中列出你的应用程序需要的所有Python依赖项。在本例中

requirements.txt:

scikit-learn

4. 创建Dockerfile

Dockerfile是一个脚本,含用于构建Docker镜像一系列指令。

下面是我们应用程序的简单Dockerfile。确保Dockerfile创建时没有扩展名,因为它允许Docker在构建镜像时不需要任何额外的参数就能识别它。

Dockerfile:

# Use a base image with Python
FROM python:3.11-slim

# Set the working directory in the container
WORKDIR /app

# Copy the necessary files into the container
COPY requirements.txt requirements.txt
COPY model.py model.py

# Install the required Python libraries
RUN pip install -r requirements.txt

# Run the Python script when the container starts
CMD ["python", "model.py"]

现在不妨了解Dockerfile中每个关键字的含义。

  • FROM指定Dockerfile的基本镜像。我们在本例中使用Python 3.11-slim。
  • WORKDIR将工作目录设置为定的路径。此后,所有命令将相对该目录加以执行。
  • COPY这个命令将内容从本地机器复制到Docker容器。这里,它复制了requirements.txt和model.py文件。
  • RUN是镜像的环境中shell执行命令。这里,它在安装requirements.txt文件中列出所有项目依赖项。
  • CMD该命令指定容器启动时运行的默认命令。在本例中,它使用Python运行model.py脚本。

5. 构建Docker镜像

打开命令提示或终端,进入到Dockerfile所在的工作目录,然后运行以下命令

docker build -t ml-model

这个命令使用当前目录构建一个名为ml-model的Docker镜像。

6. 运行Docker容器

一旦构建了Docker镜像,我们终于准备好运行容器。运行如下命令

docker run ml-model

输出如下

Model trained and saved as model.pkl
Prediction for [5.1, 3.5, 1.4, 0.2]: 0

7. 标记容器,并将容器推送到DockerHub

Docker Hub是Docker镜像的存储库,方便用户在团队或生产环境之间共享、版本控制和分发容器。

在Docker Hub上创建一个帐户。创建完毕后,运行以下命令通过终端登录帐户

docker login

你必须用用户名标记Docker镜像,以便它知道将镜像推送到哪里。替换你的用户名,执行以下命令

docker tag ml-model yourdockerhubusername/ml-model

一旦镜像已标记完毕,你就可以使用以下命令将镜像推送到Docker Hub。

docker push yourdockerhubusername/ml-model

现在都可以拉并运行你的Docker镜像了,只需运行以下命令:

docker pull yourdockerhubusername/ml-model
docker run yourdockerhubusername/ml-model

结论

使用Docker部署机器学习模型保证跨不同平台拥有一致环境和依赖从而使部署过程更顺畅更具可扩展性。本教程探讨了使用Docker构建、包和部署机器学习模型的步骤,强调了其简单性。

有了Docker,模型部署来得更直接简单从而不需要搭建复杂环境。

原文标题Step-by-Step Guide to Deploying ML Models with Docker,作者:Kanwal Mehreen

责任编辑:华轩 来源: 51CTO
相关推荐

2024-09-09 11:45:15

ONNX部署模型

2023-02-07 16:36:34

机器学习Docker无服务器

2019-10-23 08:00:00

Flask机器学习人工智能

2024-02-20 15:17:35

机器学习模型部署

2020-07-10 10:39:04

Python开发工具

2021-01-25 09:00:00

机器学习人工智能算法

2022-09-07 08:00:00

机器学习MLFlow工具

2018-11-07 09:00:00

机器学习模型Amazon Sage

2017-07-07 14:41:13

机器学习神经网络JavaScript

2021-11-02 09:40:50

TensorFlow机器学习人工智能

2023-12-05 15:44:46

计算机视觉FastAPI

2011-11-18 10:14:50

云计算

2023-08-02 09:59:51

2019-01-23 11:12:42

机器学习机器模型预测工资

2023-02-24 15:10:46

机器学习数据集

2022-03-28 18:59:02

DockerFlask深度学习

2023-11-06 10:50:35

机器学习LIME

2020-01-02 14:13:01

机器学习模型部署预测

2022-12-21 19:06:55

机器学习人工智能

2023-03-01 08:00:00

机器学习数据集
点赞
收藏

51CTO技术栈公众号