1.模型的整个使用流程
从模型训练到部署:training data→train→convert→infer→outputdata
convert:模型转换、量化、网络层合并、剪枝、优化等过程得到推理模型
infer:一般用专门推理引擎进行推理
原因:1.模型已简化;2.convert转化后的格式,对部署平台硬件计算更友好
2.模型部署的平台
2.1 在线服务器端部署,精度优先
一般大模型/分布式复杂模型前端部署不了,eg千亿级参数模型GPT-3
对延迟不敏感,如百度识图这种以图搜图应用
2.2 离线嵌入式端部署,兼顾精度与速度,资源消耗
模型,如目标检测;
对延迟,资源敏感;
3.模型部署有哪些方法
3.1 几种常见方式:原始训练框架部署;训练框架部署引擎;手动模型重构;专用推理引擎
原始训练框架部署:如caffe训练的模型用caffe部署,TensorFlow用TensorFlow
训练框架部署引擎:有些框架提供对应部署引擎,如TensorFlow有TensorLite,PyTorch有PyTorch-Mobile(手机移动端)
手动模型重构:模型本质上二进制文件,自己写代码解析
专用推理引擎:一些巨头或者硬件平台开发好的
3.2 特点
原始训练框架部署,如用完整的TensorFlow/PyTorch/Caffe等,可用来训练,也可用来推理,一般验证模型时拿来推理,一般不真正用来生产中(手机/嵌入式端)部署,原因如下:
- 需安装整个框架。框架复杂且依赖的库多
- 推理性能差
- 很多冗余功能
- 内存占用大
训练框架自带的部署引擎,如TensorLite(TF-Lite),PyTorch-Mobile
- 一般只支持训练框架自己的模型
- 支持硬件和操作算子有限
手动模型重构
- 手写C/C++代码,实现计算图,并导入权重数据
- 需构造者对模型有充分了解,非大佬不能及
专用推理引擎,高性能,移动/嵌入式端推理框架,如NCNN、MNN、Tengin
- 可以直接加载主流框架的模型文件,无需进行模型转换
- 只以来C/C++库,无任何第三方库依赖
- 支持Android/Linux/RTOS/裸板环境(CPU/GPU/ARM/FPGA)
- Python/C/APP等接口,方便不同语言调用