如何为(tensorflow)模型提供自定义元数据?

时间:2019-01-09 16:30:55

标签: tensorflow tensorflow-serving

通过TensorFlow-Serving为TensorFlow模型提供服务时,我需要向客户公开自定义元数据(例如,模型的输入数据要求,培训信息...)。

在保存模型之前,我尝试通过tf.add_to_collection( <my_custom_key>, <value> )添加信息,并且确实,该信息显示在服务器使用的.pb(txt)文件中。

但是,当前看来,对查询元数据的响应(例如,通过GET http://localhost:8501/v1/models/<my_model>/metadata)仅返回signature_def节的内容(也不能扩展,验证程序会阻止该内容),并且我不知道要查询其他部分的内容。

是否可以为TF服务提供/查询自定义元数据?

2 个答案:

答案 0 :(得分:1)

不幸的是,目前尚没有添加逻辑来允许提供除signaturedefs之外的元数据,而且我不确定我们是否对支持这种用法的一般用例有很好的了解。

关于如何处理保存在保存的模型中的元数据,大概是要在图形中添加一个包含感兴趣的张量值(输入/输出形状)的常量,使用下面的链接创建新的签名并进行推断具有该签名-我从未见过这样做,但是我无法想象为什么它不起作用。

https://www.tensorflow.org/guide/saved_model#manually_build_a_savedmodel

答案 1 :(得分:0)

虽然我仍然没有找到TensorFlow Serving的解决方案,但其他读者可能会感兴趣,当使用NVidia's Triton Inference Server时可以实现。

在将其作为TFS替代方案(主要是因为其对pytorch和ONNX等其他模型格式的内置支持)进行评估时,我发现在Triton中,可以通过{{3} }使用'parameters'属性。添加后

parameters: {
  key: "inference_properties"
  value: {
    string_value: "<my-custom-inference-property-info>"
  }
}

在模型的config.pbtxt文件中,我可以在客户端检索信息。这不是非常方便,因为只能提供带有字符串值的平面映射,但是仍然可以。