tensorflow serving介绍和安装
1.tensorflow serving 简介
参考:https://blog.csdn.net/jeffery0207/article/details/86072456
servable在这里就是模型(model)
loader就是管理模型的生命周期(load/upload)
source就是servable的模板
总结:
- Sources create Loaders for Servable Versions.
- Loaders are sent as Aspired Versions to the Manager, which loads and serves them to client requests.
详细:
1.Source 为指定的服务(磁盘中检测模型权重的新版本)创建Loader,Loader里包含了服务所需要的元数据(模型);
2.Source 使用回调函数通知 Manager 的 Aspired Version(Servable version的集合);
3.Manager 根据配置的Version Policy决定下一步的操作(是否 unload 之前的Servable,或者 load 新的Servable);
4.如果 Manager 判定是操作安全的,就会给 Loader 要求的resource并让 Loader 加载新的版本;
5.客户端向 Manager 请求服务,可以指定服务版本或者只是请求最新的版本。Manager 返回服务端的处理结果;
举个例子:
假设Source表示具有频繁更新的模型权重的TensorFlow图。权重存储在磁盘上的文件中。
- Source检测到新版本的模型权重。它创建一个Loader,其中包含指向磁盘上模型数据的指针。
- Source会向动态管理器通知Aspired Version。
- 动态管理器应用版本策略并决定加载新版本。
- 动态管理器告诉Loader有足够的内存。Loader使用新权重实例化TensorFlow图。
- 客户端请求处理最新版本的模型,动态管理器返回新版本Servable的句柄。
2.使用docker 安装tensorflow serving
参考:https://tensorflow.google.cn/tfx/serving/docker?hl=zh-CN
# 下载镜像
docker pull tensorflow/serving
#下载tensorflow 模型
git clone https://github.com/tensorflow/serving
# 模型地址
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"
# 开始tensorflow serving 实例 打开rest 接口
docker run -t --rm -p 8501:8501 \
-v "$TESTDATA/saved_model_half_plus_two_cpu:/models/half_plus_two" \
-e MODEL_NAME=half_plus_two \
tensorflow/serving &
# 使用模型预测
curl -d '{"instances": [1.0, 2.0, 5.0]}' \
-X POST http://localhost:8501/v1/models/half_plus_two:predict
#结果
{ "predictions": [2.5, 3.0, 4.5] }