0x00 基本环境
博主在一台xubuntu-16.04.3的虚拟机上部署的生产环境。至于为什么用xubuntu,纯粹是由于我个人喜欢这个系统的界面。
0x01 Bazel
Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make、Ant、Gradle、Buck、Pants和Maven一样。
安装方式见:
https://docs.bazel.build/versions/master/install.html
0x02 gRPC
gRPC是由Google主导开发的RPC框架,使用HTTP/2协议并用ProtoBuf作为序列化工具。其客户端提供Objective-C、Java接口,服务器侧则有Java、Golang、C++等接口,从而为移动端(iOS/Androi)到服务器端通讯提供了一种解决方案。 当然在当下的环境下,这种解决方案更热门的方式是RESTFull API接口。该方式需要自己去选择编码方式、服务器架构、自己搭建框架(JSON-RPC)。gRPC官方对REST的声音是:
和REST一样遵循HTTP协议(明确的说是HTTP/2),但是gRPC提供了全双工流
和传统的REST不同的是gRPC使用了静态路径,从而提高性能
用一些格式化的错误码代替了HTTP的状态码更好的标示错误
安装方式见:
https://github.com/grpc/grpc/tree/master/src/python/grpcio
0x03 tensorflow-serving
机器学习技术支撑着许多 Google 产品的功能,比如:Google 应用中的语音识别,收件箱的智能回复,以及 Google 照片搜索,等等。尽管软件行业几十年中积累起的无数经验促成了很多用于构建并支持产品的最佳实践,但基于机器学习的服务却还是带来了一些新颖而有趣的挑战。如今,专为解决这些挑战的系统终于出现了,这就是 TensorFlow Serving。TensorFlow Serving 是一种用于机器学习模型的高性能开源服务系统,专为生产环境而设计,并针对 TensorFlow 进行了优化处理。
TensorFlow Serving 系统非常适用于大规模运行能够基于真实情况的数据并会发生动态改变的多重模型。它能够实现:
模型生命周期管理。
使用多重算法进行试验。
GPU 资源的有效使用。
项目见https://github.com/tensorflow/serving
下载TensorFlow-Seving代码到本地
$>git clone --recurse-submodules https://github.com/tensorflow/serving
$>cd serving
配置tensorflow代码
$>cd tensorflow
$./configure