参考 https://tf.wiki/zh_hans/deployment/serving.html
    要点:

    1. tf-serving需要的是saveModel的保存格式 .pd,如果是checkpoint,需要转换格式,参考:https://www.yuque.com/shareit/pgqkzm/dhkzt8
    2. 保存模型的目录最终结构:

      1. model_name
      2. └── 1
      3. ├── saved_model.pb
      4. └── variables
      5. ├── best_19-71660.data-00000-of-00001
      6. ├── best_19-71660.index
      7. ├── best_19-71660.meta
      8. └── c2s.py
    3. 报错处理:

      1. Did you forget to name your leaf directory as a number (eg. ‘/1/‘)?

    这是因为保存模型的目录缺少了版本号。仔细看第2点的目录树中有一个以数字1命名的文件夹,这个就是版本号,不可以缺少。模型放在这个目录下就好

    1. To inspect available tag-sets in the SavedModel, please use the SavedModel CLI: saved_model_cli

    这个是因为保存模型的代码中,错误使用了add_meta_graph_and_variables,没有添加或添加错了tag。应该是:

    1. model_name = 'model_name/1' # 注意使用了 model_name/1 这样的格式。这是 tf-seving 的约定。/之前的是模型名称,之后的 1 是模型的版本。
    2. builder = tf.saved_model.builder.SavedModelBuilder(model_name)
    3. builder.add_meta_graph_and_variables(sess, [tf.saved_model.tag_constants.SERVING])
    4. builder.save()

    注,当model_name/下出现了新的版本号,tf-serving就会热更新模型!!!

    1. “error”: “Serving signature name: \”serving_default\” not found in signature def”

    这是因为模型没有这个标记(签名),在宿主机使用如下命令查看模型标记(签名):

    1. saved_model_cli show --dir saved_model/1/ --all
    1. 占位
      1. 用docker来部署 ```python docker pull tensorflow/serving # 直接拉取最新版,这个对tf1.x和tf2.x都可以用

    MODELDIR = ‘${pwd}’ docker run -t —rm -p 8501:8501 -v “${MODELDIR}/model_name:/models/model_name” -e MODEL_NAME=model_name tensorflow/serving & ```