通过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服务提供/查询自定义元数据?
答案 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
文件中,我可以在客户端检索信息。这不是非常方便,因为只能提供带有字符串值的平面映射,但是仍然可以。