的 注意 强> :完全和广泛地回答这个问题需要深入研究Serving架构,它的API以及它们如何与模型的签名交互。我将跳过所有这些以使答案保持可接受的长度,但如果有必要,我可以随时扩展过于模糊的部分(如果是这样的话,请留下评论)。
half_plus_two模型如何知道如何处理实例参数?
由于几个未提及的原因堆积起来,使这个方便简短的例子,如果只有IMO有点误导。
1) 的 在哪里 instances 参数来自哪里? 强> 的定义 预测API 对于RESTful API,有一个预定义的请求格式,在其两种可能的形式之一中,需要一种格式 instances 参数。
instances
2) 的 什么是 instances 参数图到? 强> 我们不知道。对于只有一个输入的SignatureDefs, instances 在那种非常具体的呼叫格式中 直接映射到输入而无需指定输入的键( 请参阅API规范中的“以行格式指定输入张量”部分 )。
因此,会发生的情况是:只对一个输入定义的模型发出POST请求。 TF服务获取该输入并将其提供给模型,运行它直到它具有模型签名的“输出”部分中定义的张量的所有值,并返回一个JSON对象 key:result “输出”列表中每个键的项目。
key:result
如何从文本生成教程中提供训练模型,并将模型api的输入参数映射到独特的方法,如generate_text?
你不能(至少不直接将函数映射到Serving方法)。服务基础架构暴露了一些预定义的方法( regress , predict , classify )知道如何解释签名以生成您通过运行模型的特定子图所请求的输出。这些子图必须包含在SavedModel中,例如使用 tf.py_func 不行。
regress
predict
classify
tf.py_func
你最好的机会是尝试将文本生成描述为TF子图(即仅使用TF操作)并编写一个单独的SignatureDef,它接受起始字符串和 num_generate 作为输入。
num_generate