网站首页 文章专栏 深度学习应用部署的几种形式
平时做实验都是参考一个模型,自己改改,在新数据上获得一个不错的效果。如果比较有先进性,还可以写篇论文。代码呢?就丢在github上好了,写个比较好的README让程序员同行可以复现结果。
但是,有没有想过做成产品的形式?就是通过各种手段让小白用户也能使用我们的成果?
我始终认为实验室的深度学习和生产环境中的深度学习是不一样的。以tensorflow为例,它是先定义图的结构,然后再送数据训练。如果只是前向传播,可以先加载pb模型,再送入数据。
但是考虑api服务的逻辑,服务器暴露出一个api接口,一个client请求数据,这时候再加载pb模型然后给出结果?这样每来一个请求都要加载一次pb模型显然消耗过大。
幸好我们tensorflow已经有了部署工具,docker形式的tensorflow serve1.
这样我们的部署逻辑就变成了训练模型->保存为可部署的模型->用tensorflow serve部署。写一个简单的api接口就可以了。
如果需要demo,可以参考[2]。
api服务的主要对象依旧是专业人员,如网站的程序员,我们还可以再进一步,直接面向消费者。
其实要做的事情不多,只要在api服务的基础上,用html+css+js做一个浏览器端的GUI应用即可。
有时候并不希望应用发布到网上,或者说网络是不可信的,我们需要单机不联网部署。但是我们依旧希望减小部署难度,最大化利用上述部署的成果,怎么办呢?
目前的方案是暴力地将所有服务通过docker安装在目标主机上,这样可以实现浏览器内使用。如果碰上又老又顽固的客户,只会单只手指双击exe文件那种,就用pyqt做个比较像桌面应用的浏览器。
参考:
1. tensorflow/serving docker
2. tensorflow serve demo