TensorFlow Serving 入门教程(Windows)

TensorFlow Serving 介绍

     TensorFlow Serving 是一个用于机器学习模型 serving 的高性能开源库,可以将训练好的模型直接上线并提供服务。其一个重要特性是:它支持模型热更新与自动模型版本管理,这意味着一旦部署 TensorFlow Serving 后,你再也不需要为线上服务操心,只需要关心你的线下模型训练。
     TF Serving采用客户端/服务端模式,其通信方式有两种 gRPC和REST API(注:后者需TensorFlow 1.8及更高版本),下图为TensorFlow Serving的框架图:
TensorFlow Serving 入门教程(Windows)_第1张图片

Docker 安装 TensorFlow Serving

     安装TensorFlow Serving有三种方法:Docker,二进制,源码编译。本文只介绍其中最简单、最直接的方法:Docker 安装。如想尝试其他方式可以参考 https://www.tensorflow.org/tfx/serving/setup.

  1. Docker 安装

    可参考:https://www.runoob.com/docker/windows-docker-install.html

  2. 使用docker 拉取 TensorFlow Serving 最新版镜像
    docker pull tensorflow/serving  # 默认为 latest版本
    

    如需拉取其他版本可以参考dockers hub tensorflow / serve repo

  3. 获取官方服务仓库(其中demo部分可以测试服务是否能够正常启动)
    # 新建一个文件用于存放官方示例代码, 本文直接放在E盘下
    git clone https://github.com/tensorflow/serving
    cd serving
    # 官方示例代码位置
    E:/serving/tensorflow_serving/servables/tensorflow/testdata
    

Docker 运行 TensorFlow Serving 实例

  1. 使用docker命令启动服务(以 REST API 方式,端口:8501)
    TESTDATA="E:/serving/tensorflow_serving/servables/tensorflow/testdata"
    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 '&'
    

    建立磁盘映射除了使用-v参数,也可以使用mount参数:

    docker run -p 8501:8501 --mount type=bind,source=E:/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu,target=/models/half_plus_two -e MODEL_NAME=half_plus_two -t tensorflow/serving '&'
    

    其中参数解析:

    –mount: 表示要进行挂载
    source: 指定要运行部署的模型地址, 也就是挂载的源,这个是在宿主机上的servable模型目录(pb格式模型而不是checkpoint模型)==注意:==此地址必须是模型的绝对路径!!!
    target: 这个是要挂载的目标位置,也就是挂载到docker容器中的哪个位置,这是docker容器中的目录,模型默认挂在/models/目录下,如果改变路径会出现找不到model的错误
    -t: 指定的是挂载到哪个容器
    -d: 后台运行
    -p: 指定主机到docker容器的端口映射
    -e: 环境变量
    -v: docker数据卷
    –name: 指定容器name,后续使用比用container_id更方便

    运行效果:
    TensorFlow Serving 入门教程(Windows)_第2张图片

  2. Windows 客户端访问服务

    重新打开一个测试窗口,这里使用curl命令:

    curl -XPOST http://localhost:8501/v1/models/half_plus_two:predict -d "{\"instances\":[1.0, 2.0, 5.0]}"
    

    (注:这里需要注意,源码中half_plus_two的模型版本是00000123,但在访问时也必须输入v1而不是v000000123。)
    运行效果:
    在这里插入图片描述

参考文献

官方介绍
TensorFlow Serving使用指南
TensorFlow Serving入门
tensorflow serving docker
tensorflow serving + docker部署模型
使用tensorflow-serving部署tensorflow模型

你可能感兴趣的:(TensorFlow)