美文网首页模型部署
tensorflow serving + docker部署模型

tensorflow serving + docker部署模型

作者: 泛酸的桂花酒 | 来源:发表于2019-05-27 14:37 被阅读0次

    搬运自官网地址
    官网的例子在windows上不能直接运行成功,我这里稍作几条命令的修改,可以在windows的docker中运行。

    1.安装docker

    安装前系统必备的内容
    Windows需要运行Microsoft Hyper-V。如果需要,Docker Desktop for Windows安装程序会为您启用Hyper-V,并重新启动计算机。

    image.png
    系统要求
    • Windows 10 64位:专业版,企业版或教育版(Build 15063或更高版本)。
    • 在BIOS中启用虚拟化。通常,默认情况下启用虚拟化。这与启用Hyper-V不同。有关详细信息,请参阅 故障排除中必须启用虚拟化
    • 具有CPU SLAT功能。
    • 至少4GB的RAM。
      注意:如果您的系统不符合运行Docker Desktop for Windows的要求,则可以安装Docker Toolbox,它使用Oracle Virtual Box而不是Hyper-V。

    安装Docker Desktop for Windows桌面应用程序

    1. 双击Docker Desktop for Windows Installer.exe以运行安装程序。

      如果您尚未下载安装程序(Docker Desktop Installer.exe),则可以从download.docker.com获取 。它通常会下载到您的Downloads文件夹,或者您可以从Web浏览器底部的最新下载栏运行它。

    2. 按照安装向导接受许可,授权安装程序,然后继续安装。

      Docker.app系统会要求您在安装过程中使用系统密码进行授权。需要特权访问才能安装网络组件,指向Docker应用程序的链接以及管理Hyper-V VM。

    3. 在安装完成对话框中单击完成以启动Docker。

    部署到docker

    1.拉取tensorflow serving镜像默认会拉去最新的latest版本

    docker pull tensorflow/serving
    
    image.png

    当然也可以拉去其他的版本的镜像,可以参考dockers hub tensorflow / serve repo

    2.运行服务镜像

    tensoflow有cpu和GPU两个版本具有以下属性:

    • 端口8500暴露于gRPC
    • 端口8501暴露给REST API
    • 可选环境变量MODEL_NAME(默认为model)
    • 可选环境变量MODEL_BASE_PATH(默认为/models)
      当服务镜像运行modelserver是,它运行如下:
    tensorflow_model_server --port=8500 --rest_api_port=8501 \
      --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME}
    
    

    要使用Docker,您需要:

    • 主机上的开放端口
    • 要保存的SavedModel
    • 客户将引用的模型名称

    你要做的是 运行Docker容器, 容器的端口发布到主机的端口,并将主机的路径安装到容器所需模型的SavedModel。

    我们来看一个例子:

    docker run -p 8501:8501 \
      --mount type=bind,source=/path/to/my_model/,target=/models/my_model \
      -e MODEL_NAME=my_model -t tensorflow/serving
    

    这种情况下,我们们启动了一个Docker容器,将REST API端口8501发布到我们主机的端口8501,并采用我们命名的模型my_model并将其绑定到默认模型基本路径( { MODEL_BASE_PATH }/ { MODEL_NAME}= /models/my_model)。最后,我们填补了环境变量 MODEL_NAME有my_model,离开MODEL_BASE_PATH它的默认值。
    这时候在容器中运行

    tensorflow_model_server --port=8500 --rest_api_port=8501 \
      --model_name=my_model --model_base_path=/models/my_model
    

    如果我们想发布gRPC端口,我们会使用-p 8500:8500。您可以同时打开gRPC和REST API端口,也可以选择仅打开其中一个。

    传递其他参数
    tensorflow_model_server支持许多可以传递给服务docker容器的其他参数。例如,如果我们想要传递模型配置文件而不是指定模型名称,我们可以执行以下操作:

    docker run -p 8500:8500 -p 8501:8501 \
      --mount type=bind,source=/path/to/my_model/,target=/models/my_model \
      --mount type=bind,source=/path/to/my/models.config,target=/models/models.config \
      -t tensorflow/serving --model_config_file=/models/models.config
    

    创建自己的服务镜像
    如果您想要将模型内置到容器中的服务镜像,则可以创建自己的镜像。
    首先将服务镜像作为进程运行:

    docker run -d --name serving_base tensorflow/serving
    

    接下来,将SavedModel复制到容器的模型文件夹:

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

    最后,通过更改MODEL_NAME 以匹配模型的名称来提交为您的模型提供服务的容器“:

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

    你现在可以停下来了 serving_base

    docker kill serving_base
    

    这将为您留下一个<my container>可以部署的Docker镜像,并将加载您的模型以便在启动时提供服务。

    运行一个例子

    让我们来看一个完整的例子,我们加载一个SavedModel并使用REST API调用它。首先拉出服务镜像:

    docker pull tensorflow/serving
    

    这将在安装了ModelServer的情况下提取最新的TensorFlow服务映像。

    接下来,我们将使用一个名为的玩具模型Half Plus Two,它0.5 * x + 2为x我们提供的预测值生成。

    要获得此模型,请首先克隆TensorFlow服务仓库。

    mkdir -p /tmp/tfserving
    cd /tmp/tfserving
    git clone https://github.com/tensorflow/serving
    
    image.png

    接下来,运行TensorFlow Serving容器,将其指向此模型并打开REST API端口(8501)(如果在windows下面应该加上盘符如下):

    docker run -p 8501:8501 --mount type=bind,source=C:/tmp/tfserving/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 '&'
    
    image.png

    打开一个窗口测试接口这里使用curl命令,注意windows下面json 的区别,这里用windows的curl命令

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

    相关文章

      网友评论

        本文标题:tensorflow serving + docker部署模型

        本文链接:https://www.haomeiwen.com/subject/gfvmzqtx.html