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

  • 相关阅读:
    [洛谷P2742]【模板】二维凸包([USACO5.1]圈奶牛Fencing the Cows)
    [洛谷P4781]【模板】拉格朗日插值
    [洛谷P4550]收集邮票
    [洛谷P4900]食堂
    [洛谷P2057][SHOI2007]善意的投票
    [CF1083C]Max Mex
    bzoj3110: [Zjoi2013]K大数查询 【树套树,标记永久化】
    bzoj 1207: [HNOI2004]打鼹鼠 (dp)
    bzoj 1037: [ZJOI2008]生日聚会Party (dp)
    bzoj 2140: 稳定婚姻 (二分图)
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/15319868.html
Copyright © 2011-2022 走看看