Python ML模型在docker中给出了错误的输出
我们一直在用python训练一个模型,在使用Docker时看到了一个非常奇怪的行为。当在本地系统(Mac机器)中运行时,模型给出了正确的预测,但是当我们使用docker时,它给出的预测与实际情况相差甚远。下面是我们的Python ML模型在docker中给出了错误的输出,python,pandas,docker,machine-learning,scikit-learn,Python,Pandas,Docker,Machine Learning,Scikit Learn,我们一直在用python训练一个模型,在使用Docker时看到了一个非常奇怪的行为。当在本地系统(Mac机器)中运行时,模型给出了正确的预测,但是当我们使用docker时,它给出的预测与实际情况相差甚远。下面是我们的Dockerfile的样子- FROM ubuntu:18.04 RUN apt -y update &&\ apt -y install python3 python3-pip RUN python3 -m pip install --upgrade p
Dockerfile
的样子-
FROM ubuntu:18.04
RUN apt -y update &&\
apt -y install python3 python3-pip
RUN python3 -m pip install --upgrade pip &&\
pip3 install -U scikit-learn
ADD ./python_requirements.txt /
RUN python3 -m pip3 install -r python_requirements.txt
ENTRYPOINT ["bash","/scripts/start_flask.sh"]
这是docker compose.yml的
version: "2"
services:
flask:
build : .
volumes :
- ../scripts:/scripts
- ../data:/data
ports:
- 3000:3000
除了一些警告之外,docker中没有错误,我知道这些警告可以忽略-
| /usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
flask_1 | return f(*args, **kwds)
flask_1 | /usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
flask_1 | return f(*args, **kwds)
flask_1 | /usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
flask_1 | return f(*args, **kwds)
flask_1 | /usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
flask_1 | return f(*args, **kwds)
flask_1 | /usr/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88
flask_1 | return f(*args, **kwds)
flask_1 | * Running on http://0.0.0.0:3000/ (Press CTRL+C to quit)
最后,这是我们用来触发python代码文件的脚本
#! /bin/bash
cd /scripts
python3 server.py
根据下面的评论,我确实检查了docker中的模块版本和本地系统中的模块版本,并将其同步。现在,容器内和本地系统中的模块版本与下面相同-
scikit-learn==0.22.1
pandas==1.0.1
numpy==1.18.1
Flask==1.1.1
scipy==1.4.1
然而,问题依然存在。几天以来一直在努力找出这里出了什么问题。任何帮助和指示都将不胜感激
BRDocker容器的日志中是否有错误?可能是应用程序在运行时在容器内运行时产生了一些错误。@vkozyrev我已经用收到的警告更新了问题。没有错误,例如当您在Docker容器外运行应用程序时,您是否收到这些警告?在您的本地和Docker环境中,项目中使用的模块版本是否相同?我看到您在dockerfile中安装了这些模块,但是如果您在行为上遇到差异,可能值得检查一下。您能确保模块版本相同吗?如果是,您是否可以尝试不装载卷,例如在docker中复制所需的文件?我曾经在docker上遇到共享卷问题,一些文件未被检测到/忽略。docker容器的日志中是否存在一些错误?可能是应用程序在运行时在容器内运行时产生了一些错误。@vkozyrev我已经用收到的警告更新了问题。没有错误,例如当您在Docker容器外运行应用程序时,您是否收到这些警告?在您的本地和Docker环境中,项目中使用的模块版本是否相同?我看到您在dockerfile中安装了这些模块,但是如果您在行为上遇到差异,可能值得检查一下。您能确保模块版本相同吗?如果是,您是否可以尝试不装载卷,例如在docker中复制所需的文件?我曾经在docker上遇到共享卷问题,一些文件未被检测到/忽略。