由于模型训练完之后需要上线部署,这个过程中需要将模型集成到当前的软件架构中,因此要根据软件架构考虑模型的实际部署方法。目前来看主流的部署方法有以下几种方案:
1.python服务接口
在python服务器上部署模型文件,给出一个http服务,后台通过这个服务就可以调用模型进行输入输出了。
优点:算法与后端的工作界限明显,不需要特别多的沟通;在使用模型前还需要进行数据预处理,不需要额外再进行代码迁移。
缺点:需要服务器安装python环境,维护的成本增加,服务器之间接口的通信问题,获取模型输出所需时间可能更长。
2.java直接加载模型
目前工业界比较成熟的部署方案就是使用tensorflow的java包,然后加载训练的模型文件。
需要事先将模型文件保存成pb格式,然后在java的环境中添加依赖。最后再加载模型。
优点:不需要额外的接口,调用方便;不需要额外安装python环境
缺点:需要将数据预处理这部分代码迁移成java,并添加到后端项目代码中。另外google对这种方法重视不高,没有详细的文档,也很少更新维护代码。模型预测速度和调python接口差不多。
3.docker+tf-serving部署模型
这个是google比较推荐的部署方法,部署文档比较详细。也是广泛使用的方法。这种方法直接将模型部署在docker容器中,然后提供两种接口,分别是Grpc接口和http接口,前者据说是在读取批量数据上更有优势,例如图片数据;服务启动后只要可以连接,任何语言都可以调用。
优点:部署方便,不受服务器限制;可以同时部署多个模型,方便模型的管理和版本控制;模型推理的速度快,经过测试比前两种快2倍。
缺点:同样需要编写数据预处理代码,数据输入格式需要按文档的要求。
综上所述,目前几种部署方案都可以使用,需要根据实际情况灵活选择合适的方法。个人觉得如果是比较规范的平台化部署可以用tf-serving;如果只是比较小的功能,不需要太多的后续维护的模型1和2都可以。
从搜集的资料上看,由于对模型推理速度的性能要求越来越高,例如bert这种参数上亿的模型,目前使用gpu环境部署模型的场景越来越多,Nvidia的tensorRT也有越来越多人开始尝试,据说比tf-serving的推理速度更快。
今天的文章深度学习模型部署的几种方法分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/49755.html