Docker镜像搭建TensorFlow Serving环境

tensorflow开发环境docker镜像 docker tensorflow serving_docker

 

1.如何在Docker中部署 tf serving

2.标准的tf serving API有哪些

3.如何打包自己的定制Docker镜像

当在Tensorflow中建立模型并训练好以后,只在本地运行或jupyter notebook是不够的。需要部署在服务器环境中,成为一个可访问的Rest/RPC服务,使其他模块可以通过提供相关的数据并得到模型预测的结果。

一个便捷的方式是把TensorFlow的服务部署在Docker容器中,如果已经安装部署好Docker,下面官方文档中的教程让你快速测试如何发布一个模型服务。

 

登录后复制

下载 TensorFlow 服务 的Docker 镜像
docker pull tensorflow/serving

下载用于测试的模型
git clone https://github.com/tensorflow/serving

测试模型的文件路径赋值给变量TESTDATA
TESTDATA="$(pwd)/serving/tensorflow_serving/servables/tensorflow/testdata"

启动 TensorFlow 服务容器并开启REST API端口:8501

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 &

向模型的预测接口predict查询预测结果 
curl -d '{"instances": [1.0, 2.0, 5.0]}' 
    -X POST http://localhost:8501/v1/models/half_plus_two:predict

服务会返回下面这种形式的结果
Returns => { "predictions": [2.5, 3.0, 4.5] }

 

需要注意的是请求路径中http://localhost:8501/v1/models/half_plus_two:predict,V1用以区分模型文件的版本。模型文件需要放在对应版本号命名的文件夹下面。如果收到类似下面的错误:

 

登录后复制


2020-06-27 05:40:16.397018: W tensorflow_serving/sources/storage_path/file_system
_storage_path_source.cc:267] No versions of servable cnn_lob found under base path

 

创建名称为1的子目录,把保存的模型移入后正常运行。

API

  1. 查看模型状态
    http://localhost:8501/v1/models/${model_name}

返回:

 

登录后复制


{
 "model_version_status": [
  {
   "version": "1",
   "state": "AVAILABLE",
   "status": {
    "error_code": "OK",
    "error_message": ""
   }
  }
 ]
}

 

  1. http://localhost:8501/v1/models/${model_name}/metadata

查看模型元数据

 

登录后复制


...
   "outputs": {
    "dense_9": {
     "dtype": "DT_FLOAT",
     "tensor_shape": {
      "dim": [
       {
        "size": "-1",
        "name": ""
       },
       {
        "size": "10",
        "name": ""
       }
      ],
      "unknown_rank": false
     },
     "name": "StatefulPartitionedCall:0"
    }
   },
   "method_name": "tensorflow/serving/predict"
  }
  
  

 

创建服务镜像

前面的运行方式依赖当前控制台进程,不适用于实际生产环境。下面我们把模型导入容器,创建定制的镜像文件。

 

登录后复制


# 下载官方服务镜像
docker pull tensorflow/serving

 

创建 Dockerfile

 

登录后复制


FROM tensorflow/serving
#复制模型文件到镜像内
COPY ./cnn_lob /models/cnn_lob/
#设置模型根目录的环境变量
ENV MODEL_BASE_PATH=/models
ENV MODEL_NAME=cnn_lob

 

首先把tensorflow的服务镜像作为后台程序启动:

docker run -d --name serving_base tensorflow/serving

然后,复制所保存的模型文件到容器内模型存放目录:

docker cp models/<my model> serving_base:/models/<my model>

最后,提交容器并更改容器内的环境变量MODEL_NAME为上一步导入的模型名称,同时命名容器名称:

docker commit --change "ENV MODEL_NAME <my model>" serving_base <my container>

停止当前运行

docker kill serving_base

我们现在有了名称为 <my container> 的容器镜像,用于部署和运行我们模型的服务。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空