用户可以上传已经训练好的模型,平台提供开箱即用的http server服务,AI应用可以通过rest api调用模型服务。
支持的框架
- TensorFlow
- Pytorch
下面以不同框架为例子,介绍训练,打包的过程,更多列子可以参考这个。
模型运行在server上,server部署到集群上。server会load model,提供http服务,接受post请求,经过model的处理,返回对应输出。
Tensorflow
模型提供者需要根据以下介绍,对自己的模型作出对应的修改。
TensorFlow ModelServer: 1.14.0-rc0
TensorFlow Library: 1.14.0
tensorflow-serving 输入输出格式,参考官方文档
例子用到input,行向量输入一组数据4个参数,对应output一组三个的预测几率结果
1 |
|
output
1 |
|
模型打包,iris.tar.gz就是可以上传的模型
1 |
|
打包注意事项
- 打包格式为tar.gz
- 压缩包不能用0001.tar.gz这种命名方式,最好用英文命名,不然报错
Pytorch
镜像: kfserving/pytorchserver:v0.6.1
pytorch 版本1.7.1
由于这不是AI框架提供的server,是kserve写的server,提供的功能也比较简单。
参照源码里面的predict方法
1 |
|
得到输入输出格式,模型forward函数里面做input的预处理
1 |
|
例子用到input,行向量输入一组数据4个参数,对应output一组三个的预测几率结果
1 |
|
output
1 |
|
打包格式为tgz,直接压缩两个文件,不然会模型运行会报错
1 |
|
自定义Model Server
如果开箱即用的model server不能满足要求,可以使用 KServe ModelServer API 构建自己的模型服务器。
用户可以完全掌握model server的输入输出和数据处理
继承扩展kserve.Model
可以继承KServe.Model
自定义里面的三个方法 preprocess
, predict
and postprocess
, 按序执行。
- preprocess:预处理input
- predict: 利用input执行推理,输出ouput
- postprocess:美化prdict的output
具体原理如下
1 |
|
还有一个额外的load
方法用于编写自定义代码以将模型从本地文件系统或远程模型存储加载到内存中,一般的好做法是在model server 的 __init__
中调用,以便加载模型当用户进行预测调用时启动并准备好服务。
代码实例model.py 完整示例
1 |
|
镜像构建
文件结构
1 |
|
Dockerfile
1 |
|
ModelServer参数
- –workers :model server workers(multi-processing) 数目,默认为1,获取使用并行推理
- –max_buffer_size:model server接受的最大数据量 默认10M
详细参数参考这里,关于端口最后别改。
requirements.txt
1 |
|
镜像构建
1 |
|
input
1 |
|
测试镜像
1 |
|