如何使用Docker容器化简单的机器学习python应用程序?

时间:2018-08-20 09:11:07

标签: python docker machine-learning flask containers

repo中的代码显示了如何创建一个Flask Web端点来预测“幸存的泰坦尼克号灾难”的可能性。使用joblib将训练后的模型序列化为泡菜文件,并以年龄,ticket_class,boarding_location和性别作为输入来进行预测。

训练数据-https://www.kaggle.com/c/titanic/data

AWS Sagemaker的架构 Architecture of AWS Sagemaker https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-hosting.html

上图中的体系结构看起来是容器化和部署ML应用程序的好方法。

问题

  1. 如何在笔记本电脑上的repo中的ML + flask应用程序中使用容器化?我的目标是在生产环境中部署容器。
  2. 如何运行上述容器?

1 个答案:

答案 0 :(得分:3)

为简单起见,让我们基于Ubuntu创建映像。

在空目录中创建文件Dockerfile,其中包含以下内容:

FROM ubuntu

# Install pip and git and clone repo into /app
RUN apt-get update && apt-get install --assume-yes --fix-missing python-pip git && git clone https://github.com/amirziai/sklearnflask.git /app

# Change WORKDIR
WORKDIR /app

# Install dependencies
RUN pip install -r requirements.txt

# Expose port and run the application when the container is started
EXPOSE 9999
ENTRYPOINT python main.py 9999

然后可以通过在包含docker build -t <TAG> .的目录中运行Dockerfile来构建映像。然后,您可以使用docker run <TAG>来运行它。

我想您想添加自己的sklearn模型。有不同的方法可以做到这一点,例如您可以更改Dockerfile并使用ADD将本地文件系统中的文件添加到映像中,或者可以在运行容器时mount模型。

此外,在生产中实际使用此容器时,您应该考虑一些其他事项,例如如何保持容器轻巧(例如,使用alpine而非ubuntu)。您可能还想将映像上传到中心,以便可以从那里部署容器。

希望这可以作为起点。