Tensorflow Golang Server
文章目录
这篇博文记录分享一下我在使用golang(以下简称Go)构建TensorFlow服务端方面的一些经验。
TensorFlow这里不多介绍了,相信对这篇文章感兴趣的人对它已经有了一定程度的了解。 使用训练好的TensorFlow模型(推荐使用python写训练脚本)搭建Web服务,基本逻辑是 服务端进程加载模型(计算图),挂起服务。其中,模型(计算图)并不用为服务端程序重新编写, 直接使用训练阶段导出的图和参数即可。可以看到,这一步是通用的,对不同模型来说。 当然,由于模型(计算图)执行的都是数值计算,而服务端拿到的请求(request)内容是有很大差别的, 对不同任务来说。也就是说,需要一个中间过程,来处理拿到的请求,再送给模型(计算图), 最后将结果再过一个中间过程,送出响应(response)。
那么接下来需要考虑的问题就是,选用哪种工具来搭建服务端。 一般来说,python可以作为一个快速搭建服务的选择。 但是,python本身并发性不够好,而且将python对象送给计算图及从图中拿到结果生成python对象速度较慢(忘记从哪儿听来的了)。 因此,一些人选择使用C++来搭建服务。 然而,C++的使用难度可以说比python是要高一些的。 我到现在还不知道怎么用C++搭建一个支持并发的Web服务…… 如果你也碰到了上述问题,那么Go可以说是你的最佳选择了。 Go的goroutine提供了简单的并发(当然,如果使用其自带的net/http包的话,连goroutine都不用写了), 而且,Go自带垃圾回收机制,不用像写C++那样痛苦。此外,编译后的Go程序,执行效率高于python。
下面给出我的Go语言服务端模板代码。
文章作者 nanqiao15
上次更新 2018-04-16