部署语言
主要是c\c++和python
C\C++和Python区别:
(1)语言类型不一样:编译性、解释性
(2)C++执行效率快
(3)python跨平台
(4)开发效率python快(代码简单)
C++的优势:
(1)C++执行效率快,Python耗费的硬件资源比较大
(2)安全性:Python会被反编译,C/C++不会被反编译
部署接口
HTTP(flask):BS架构(浏览器——服务器)——RESTful API
TCP/IP(socket):CS架构(客户端——服务端)——gRPC API
通常不会去单独使用gRPC,而是将gRPC作为一个部件进行使用,这是因为在生产环境,我们面对大并发的情况下,需要使用分布式系统来去处理,而gRPC并没有提供分布式系统相关的一些必要组件。而且,真正的线上服务还需要提供包括负载均衡,限流熔断,监控报警,服务注册和发现等等必要的组件
部署设备
(1)PC端——SDK部署(开发包部署)
① .pt
② .onnx
③ TVM
(2)Server端(服务器)
① HTTP(flask)
② TCP/IP(socket)
(3)Mobil端(移动设置:IOS,Android)
① IOS
② Android
部署方式
一、所有模型+ REST API
例如使用flask创建接口,并使用flask启动接口,此方式用于没有并发请求的单线程,不适用于生产部署。但是可在此基础上进行优化,使其能用于生产部署,改进方式参考链接Deploy to Production
二 、pytorch模型部署
(1)使用指定的编程语言(C/C++/JAVA)调用Libtorch在对应的平台(Windows/Linux)编写程序,然后直接部署。(libtorch安照c++11标准下写的)
(2)先使用Python在任意平台编写模型(跨平台),然后使用torch.jit.trace()将Python文件转成c++文件,最后使用save()方法打包成.pt文件,然后使用C/C++/JAVA或其他语言在其他平台上调用。
(3)将Python模型转换成onnx,再转成caffe,tenssorflow等其他框架的模型。(坑较多)
三、 keras、tensorflow模型部署
使用Docker与TensorFlow Serving进行部署,可参考tensorflow官网以及博客
注意
模型生产部署需要考虑:多线程,并发,线程安全问题(加锁)以及消息队列。
3634

被折叠的 条评论
为什么被折叠?



