今天下午更新代码时发现docker里的prophet容器进程突然挂掉,在排查之后选择重新进行了安装,并在此之上用了gunicorn管理flask服务,网上的博客很多都不是很靠谱,于是乎我对整个安装过程进行了记录,希望能帮助到同样在docker上部署prophet镜像服务遇到此问题的朋友们
主要产生的问题,还是在于**「pystan库与fbprophet库同时安装的冲突」**
安装过程
1.选择拉取一个python镜像,也可以直接拉取一个anaconda镜像,后者的库更多,这里我们选择**「python3.8」**版本,同时在安装的过程中更新一下镜像的仓库,python镜像默认是ubuntu系统,下面是我的dockerfile
FROM python:3.8
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
&& apt-get clean \
&& apt-get update \
2.进入到dockerfile目录下,执行
docker build -t prophet:v1 .
3.镜像构建好之后,进入到镜像中,镜像中的gcc-g++环境已经是装好的,我们只需安装几个插件,其中一定别忘了**「build-essentail」**,没有这个是编译不了
apt install vim
# 编译软件必须
apt install build-essential
4.接下来向服务器上传一个txt文件,里面是安装必须的模块,这里要注意⚠️,「pystan和fbprophet这两库不能放在一起构建,一定要分开装」,这个问题很难发现,建一个文件requirement.txt,写入以下内容
gunicorn
gevent
flask
numpy
pandas
convertdate
cmdstanpy
Cython
holidays
LunarCalendar
setuptools-git
tqdm
同样在requirement.txt文件目录下运行
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
整个时间比较长,我们可以用阿里云的镜像源加速安装过程,安装完上面一系列家伙后,再安装pystan和fbprophet
pip install pystan
pip install fbprophet
5.可以验证一下fbprophet源码的地址[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yw9yqVxi-1624952632847)(https://mmbiz.qpic.cn/mmbiz_png/ZicXTSSBakToGszlkyRxpGVcLNFfllZXWFM2cVae22XeQs0wt5AXJ1uIibCeUxgheUjaehKq3hgdE3mtasjtWhFQ/640?wx_fmt=png)]
6.在容器里测试一下,用**「docker cp」**命令将测试代码拷贝到容器里
import pandas as pd
import numpy as np
from fbprophet import Prophet
# 数据文件请从github上的Prophet项目下载,并放在代码的对应目录
df = pd.read_csv('data.csv')
df['y'] = np.log(df['y'])
print (df.tail())
# 定义模型
m = Prophet()
# 训练模型
m.fit(df)
# 构建预测集,预测未来一年的涨势
future = m.make_future_dataframe(periods=365)
print (future.tail())
# 进行预测
forecast = m.predict(future)
print (forecast.tail(10))
没什么问题的话,会输出一下内容,说明安装成功了
今天就写到这,有时间输出一篇专门分析该模型论文的文章