概念-数据面板-开放推理协议扩展

type
status
date
slug
summary
tags
category
icon
password
网址
二进制张量数据扩展允许客户端以二进制格式在 HTTP/REST 请求的主体中发送和接收张量数据。由于开放推理协议中没有针对16位浮点类型的特定数据类型,该扩展对于发送和接收 FP16 数据以及高吞吐量场景下的大型张量特别有用。

概述

以二进制数据表示的张量数据按小端字节序、行优先排列,元素之间没有步长或填充。所有张量数据类型都可以用数据类型的原生大小表示为二进制数据。对于 BOOL 类型元素,true 是值为 1 的单个字节,false 是值为 0 的单个字节。对于 BYTES 类型,一个元素由表示长度的4字节无符号整数和实际字节组成。张量的二进制数据在 JSON 对象之后在 HTTP 主体中传递(参见示例)。
二进制张量数据扩展使用参数来指示输入或输出张量是以二进制数据形式传输的。
binary_data_size参数在$request_input$response_output中使用,用于指示输入或输出张量是以二进制数据形式传输的:
  • "binary_data_size":int64参数,表示张量二进制数据的大小(以字节为单位)。
binary_data参数在$request_output中使用,用于指示输出应该从KServe运行时以二进制数据形式返回。
  • "binary_data":布尔参数,如果输出应该以二进制数据形式返回则为true,如果张量应该以JSON形式返回则为false(或不提供)。
binary_data_output参数在$inference_request中使用,用于指示所有输出都应该从KServe运行时以二进制数据形式返回,除非被特定输出的"binary_data"参数覆盖。
  • "binary_data_output":布尔参数,如果所有输出都应该以二进制数据形式返回则为true,如果输出应该以JSON形式返回则为false(或不提供)。如果在某个输出上指定了"binary_data",则会覆盖此设置。
当一个或多个张量以二进制数据形式传输时,请求或响应的HTTP主体将包含JSON推理请求或响应对象,后跟按照JSON中指定的输入或输出张量顺序排列的二进制张量数据。
  • 如果请求或响应中存在任何二进制数据,必须提供Inference-Header-Content-Length头部以给出JSON对象的长度,而Content-Length继续给出完整主体长度(按HTTP要求)。

示例

发送和接收二进制数据

对于以下请求,输入张量input0input2以二进制数据形式发送,而input1以非二进制数据形式发送。注意,input0input2输入张量具有参数binary_data_size,表示二进制数据的大小。
输出张量output0必须以二进制数据形式返回,因为通过将binary_data参数设置为true来请求。另外注意,JSON部分的大小在Inference-Header-Content-Length中提供,二进制数据的总大小反映在Content-Length头部中。
假设模型返回一个数据类型为FP16的[ 3, 2 ]张量和一个数据类型为FP32的[2, 2]张量,将返回以下响应。
推理客户端示例

请求所有输出采用二进制格式

对于以下请求,binary_data_output设置为true以接收所有输出作为二进制数据。注意,binary_data_output设置在$inference_request参数字段中,而不是在$inference_input参数字段中。通过在$request_output中将binary_data参数设置为false,可以为特定输出覆盖此参数。
假设模型返回一个数据类型为FP16的[ 3, 2 ]张量和一个数据类型为FP32的[2, 2]张量,将返回以下响应。
上一篇
概念-控制面板
下一篇
概念-数据面板 - 推理面板
Loading...
文章列表
Kserve中文文档
快速开始
管理指南
用户指南
开发指南
机器学习概念
大模型周报