【问题标题】:How to containerize a simple machine learning python application using docker?如何使用 docker 容器化一个简单的机器学习 python 应用程序?
【发布时间】:2019-01-26 09:22:05
【问题描述】:

repo 中的代码显示了如何创建一个烧瓶 Web 端点来预测“在泰坦尼克号灾难中幸存”的概率。训练好的模型使用 joblib 序列化为 pickle 文件,输入 age、ticket_class、boarding_location 和性别进行预测。

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

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

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

问题

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

【问题讨论】:

    标签: python docker machine-learning flask containers


    【解决方案1】:

    为简单起见,让我们基于 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
    

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

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

    另外,当实际在生产中使用这个容器时,你应该考虑更多的事情,例如。如何保持容器轻量级(例如,使用 alpine 而不是 ubuntu)。您可能还想将图像上传到集线器,以便从那里部署容器。

    希望这有助于作为一个起点。

    【讨论】:

    • 谢谢!在我的 ./ 我有多个文件夹和代码。如何在维护文件夹结构的同时将它们复制到 /app? VOLUME 和 MOUNT 命令在 Dockerfile 中做同样的事情吗?
    • EXPOSE 9999 和 EXPOSE 9999:9999 有什么区别?
    猜你喜欢
    • 2018-01-27
    • 2012-07-07
    • 1970-01-01
    • 2015-12-02
    • 2019-09-06
    • 2019-06-16
    • 2012-11-07
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多