使用Docker进行模型部署

文章目录

  • 1、思路
  • 2、实现步骤
    • 2.1 数据、模型准备
    • 2.2 镜像制作
    • 2.3 使用

1、思路

因为多数公司正式集群都不能使用公网环境,对于模型部署比较麻烦。所以想这在公网环境下完成模型调试,然后根据相关环境和参数直接制作一个docker镜像,部署到内网集群。

2、实现步骤

2.1 数据、模型准备

假设已经有一个模型文件,主函数predict,只要将 train_df, test_df传入即可得到结果。
首先,传输时候要转换成json,另外要将数据类型传输过来。

# 数据类型转换为dict
test_df_dtypes = {}
for d in test_df.dtypes.index:
	test_df_dtypes[d] = str(test_df.dtypes[d])
# 日期格式因为转换有误,看情况更改
test_df_dtypes['date'] = 'datetime64[s]'
# 转换为json
test_df = test_df.to_json()

flask服务方面,接受并转换数据:

# 读取数据类型数据
train_df_dtypes = eval(request.json['train_df_dtypes'])
# train_df,并转换数据类型
train_df = pd.read_json(request.json['train_df'])
train_df = train_df.astype(train_df_dtypes)

模型预测完,传输回来同理。

2.2 镜像制作

1、首先选择基本镜像,可以用 python,如果服务需要正式一点可以选用 tiangolo/uwsgi-nginx-flask:python3.8,我这里直接用python:3镜像制作,如果用nignx可以参考链接。
更新:因为模型训练和预测时间比较长,使用nignx会出现 time out 断开连接的情况。
2、requirements.txt ,准备需要安装的依赖
3、Dockerfile

# base image
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

ADD . /
WORKDIR /
RUN pip install -r /requirements.txt
CMD ["flask", "run", "--host=0.0.0.0", "--port=5050"]

4、镜像制作 docker build -t myimage .,注意后面的.
5、运行 docker run -it --rm -p 5050:5050 myimage,或者生产环境运行(以daemon方式运行)docker run -d -p 5050:5050 --name myname myimage

2.3 使用

datas=json.dumps({'train_df':train_df ,'train_df_dtypes':str(train_df_dtypes)})
p = requests.post('http://192.168.99.100:5050/getForecast',data=datas,headers=headers)
#p = requests.post('http://127.0.0.1:5050/getForecast',data=datas,headers=headers)

windows的docker运行地址,一般是192.168.99.100。

你可能感兴趣的:(小项目,python,docker,人工智能)