zoukankan      html  css  js  c++  java
  • 【tensorlow】tensorflow-serving初步使用记录

    概述

    tensorflow-serving支持rpc和rest,本文基于rest编写。构建k8s的pod

    部署

    单模型部署,dockerfile如下:

    FROM tensorflow/serving
    MAINTAINER zhouwenyang
    ADD model /models/${model_name}/${version}
    ENV MODEL_NAME=${model_name}

    ${model_name}和${version}根据自己需要更改。可以使用挂载文件的方式,但是如果部署k8s则需要打进容器,或者使用共享的volumes的方式

    多模型部署参考:https://www.jianshu.com/p/d11a5c3dc757

    查看模型输入输出情况: http://${host}:${port}/v1/models/${model_name}/metadata

    自定义op

    预测

    根据查看模型的metadata,搞起一个http post接口

    接口地址为: http://${host}:${port}/v1/models/${model_name}:predict 

    post参数为:

    {
      "inputs":{
        "${param1}":${value1},
        "${param2}":${value2},
        "${param3}":${value3},
        "${param4}":${value4}
      }  
    }

     问题

    • tag只支持serve

    tf-serving模型目前支持模型tag为serve。这个是因为tf-serving官方支持的比较烂

    排查: 查看源码 https://github.com/tensorflow/serving/blob/ceba636bb7c5c98bde35d1818fd033b36300fffe/tensorflow_serving/model_servers/main.cc#L189

    查看tensorflow-serving这个镜像的Dockerfile如下: https://hub.docker.com/layers/tensorflow/serving/latest/images/sha256-6651f4839e1124dbde75ee531825112af0a6b8ef082c88ab14ca53eb69a2e4bb?context=explore 可知,其实tf-serving的docker镜像内部就是运行的/usr/bin/tf_serving_entrypoint.sh 脚本,

    脚本内容: 

    #!/bin/bash 
    tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} "$@"

    解决: 

    编写tf-serving-entrypoint.sh

    #!/bin/bash
    
    tensorflow_model_server --port=8500 --rest_api_port=8501 --model_name=${MODEL_NAME} --model_base_path=${MODEL_BASE_PATH}/${MODEL_NAME} --saved_model_tags=${MODEL_TAGS} "$@"

    编写Dockerfile

    FROM tensorflow/serving:latest
    MAINTAINER zhouwenyang
    ENV MODEL_TAGS=serve
    ADD tf_serving_entrypoint.sh /usr/bin
    RUN chmod u+x /usr/bin/tf_serving_entrypoint.sh
    ENTRYPOINT ["/usr/bin/tf_serving_entrypoint.sh"]

    然后docker build。使用这个生成的镜像代替tensorflow-serving官方镜像即可

    具体使用:

    docker run -itd --name my-tf -v /model:/models/1/modelname -e MODEL_NAME=modelname -e MODEL_TAGS=my-tag wenyangchou/tf-serving:latest

    镜像已上传:wenyangchou/tf-serving:latest

  • 相关阅读:
    Html/CSS前端如何实现文字边框阴影
    酷炫,用Html5/CSS实现文字阴影
    前端“黑话”polyfill
    JavaScript之DOM对象获取(1)
    你知道二维码是怎么得来的吗?
    Spring5中的DispatcherServlet初始化
    一文搞懂并发和并行
    使用SecureCRT软件运维的配置习惯
    Linux双网卡绑定
    Linux网卡配置文件参数注释
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/15319868.html
Copyright © 2011-2022 走看看