工业产品中TensorFlow使用方法
- 用TensorFlow的C++/Java/Nodejs API直接使用保存的TensorFlow模型:类似Caffe,适合做桌面软件。
- 直接将使用TensorFlow的Python代码放到Flask等Web程序中,提供Restful接口:实现和调试方便,但效率不太高,不大适合高负荷场景,且没有版本管理、模型热更新等功能。
- 将TensorFlow模型托管到TensorFlow Serving中,提供RPC或Restful服务:实现方便,高效,自带版本管理、模型热更新等,很适合大规模线上业务。
TensorFlow Serving简介
Tensorflow Serving是Google官方提供的模型部署方式,正确导出模型后,可一分钟完成部署(官方广告)。TF1.8后,Tensorflow Serving支持RESTfull API和grpc的请求方式,模型部署完成后可很方便的利用post请求进行测试。
TensorFlow Serving服务框架
框架分为模型训练、模型上线和服务使用三部分。模型训练与正常的训练过程一致,只是导出时需要按照TF Serving的标准定义输入、输出和签名。模型上线时指定端口号和模型路径后,通过tensorflow_model_server命令启动服务。服务使用可通过grpc和RESTfull方式请求。
模型导出
需指定模型的输入和输出,并在tags中包含”serve”,在实际使用中,TF Serving要求导出模型包含”serve”这个tag。此外,还需要指定默认签名,tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY = “serving_default”,此外tf.saved_model.signature_constants定义了三类签名,分别是:
- 分类classify
- 回归regress
- 预测predict
|
|
一般而言,用predict就完事了。
启动服务
|
|
请求服务
|
|
python可以通过post请求,golang可以通过grpc服务请求。