MindIE原生文本/流式推理接口
接口功能
提供文本/流式推理处理功能。
接口格式
操作类型:POST
URL:https://{ip}:{port}/infer
请求参数
参数名 |
是否必选 |
说明 |
取值要求 |
---|---|---|---|
inputs |
必选 |
推理请求内容。单模态文本模型为string类型,多模态模型为list类型。 |
|
type |
可选 |
推理请求内容类型。 |
|
text |
可选 |
推理请求内容为文本。 |
非空,0KB<字符数<=4MB,支持中英文。tokenizer之后的token数量小于或等于maxInputTokenLen、maxSeqLen-1、max_position_embeddings和1MB之间的最小值。其中,max_position_embeddings从权重文件config.json中获取,其他相关参数从配置文件中获取。 |
image_url |
可选 |
推理请求内容为图片。 |
支持本地图片传入,图片类型支持jpg、png、jpeg和base64编码的jpg图片,支持URL图片传入。支持http和https协议。当前支持传入的最大图片数为1。 |
stream |
可选 |
指定返回结果是文本推理还是流式推理。 |
bool类型,默认值false。
|
parameters |
可选 |
模型推理后处理相关参数。 |
- |
temperature |
可选 |
控制生成的随机性,较高的值会产生更多样化的输出。 |
float类型,大于0.0,默认值1.0。 取值越大,结果的随机性越大。推荐使用大于或等于0.001的值,小于0.001可能会导致文本质量不佳。 建议最大值取2.0,同时视模型而定。 |
top_k |
可选 |
控制模型生成过程中考虑的词汇范围,只从概率最高的k个候选词中选择。 |
uint32_t类型,取值范围(0, 2147483647],字段未设置时,默认值由后端模型确定,详情请参见说明。取值大于或等于vocabSize时,默认值为vocabSize。 vocabSize是从modelWeightPath路径下的config.json文件中读取的vocab_size或者padded_vocab_size的值,若不存在则vocabSize取默认值0。建议用户在config.json文件中添加vocab_size或者padded_vocab_size参数,否则可能导致推理失败。 |
top_p |
可选 |
控制模型生成过程中考虑的词汇范围,使用累计概率选择候选词,直到累计概率超过给定的阈值。该参数也可以控制生成结果的多样性,它基于累积概率选择候选词,直到累计概率超过给定的阈值为止。 |
float类型,取值范围(0.0, 1.0),字段未设置时,默认使用1.0来表示不进行该项处理,但是不可主动设置为1.0。 |
max_new_tokens |
可选 |
允许推理生成的最大token个数。实际产生的token数量同时受到配置文件maxIterTimes参数影响,推理token个数小于或等于Min(maxIterTimes, max_new_tokens)。 |
int类型,取值范围(0,2147483647],默认值20。 |
do_sample |
可选 |
是否做sampling。 |
bool类型,不传递该参数时,将由其他后处理参数决定是否做sampling。
|
seed |
可选 |
用于指定推理过程的随机种子,相同的seed值可以确保推理结果的可重现性,不同的seed值会提升推理结果的随机性。 |
uint_64类型,取值范围(0, 18446744073709551615],不传递该参数,系统会产生一个随机seed值。 当seed取到临近最大值时,会有WARNING,但并不会影响使用。若想去掉WARNING,可以减小seed取值。 |
repetition_penalty |
可选 |
重复惩罚用于减少在文本生成过程中出现重复片段的概率。它对之前已经生成的文本进行惩罚,使得模型更倾向于选择新的、不重复的内容。 |
float类型,大于0.0,默认值1.0。
建议最大值取2.0,同时视模型而定。 |
details |
可选 |
是否返回推理详细输出结果。 |
bool类型,默认值false。 |
typical_p |
可选 |
解码输出概率分布指数。 当前后处理不支持。 |
float类型,取值范围(0.0, 1.0],默认值1.0。 |
watermark |
可选 |
是否带模型水印。 当前后处理不支持。 |
bool类型,默认值false。
|
priority |
可选 |
设置请求优先级。 |
uint64_t类型,取值范围[1, 5],默认值5。 值越低优先级越高,最高优先级为1。 |
timeout |
可选 |
设置等待时间,超时则断开请求。 |
uint64_t类型,取值范围(0, 3600],默认值600,单位:秒。 |
使用样例
请求样例:
POST https://{ip}:{port}/infer
请求消息体:
- 单模态文本模型:
{ "inputs": "My name is Olivier and I", "stream": false, "parameters": { "temperature": 0.5, "top_k": 10, "top_p": 0.95, "max_new_tokens": 20, "do_sample": true, "seed": null, "repetition_penalty": 1.03, "details": true, "typical_p": 0.5, "watermark": false, "priority": 5, "timeout": 10 } }
- 多模态模型:
"image_url"参数的取值请根据实际情况进行修改。
{ "inputs": [ {"type": "text", "text": "My name is Olivier and I"}, { "type": "image_url", "image_url": "/xxxx/test.png" } ], "stream": false, "parameters": { "temperature": 0.5, "top_k": 10, "top_p": 0.95, "max_new_tokens": 20, "do_sample": true, "seed": null, "repetition_penalty": 1.03, "details": true, "typical_p": 0.5, "watermark": false, "priority": 5, "timeout": 10 } }
响应样例:
- 文本推理(“stream”=false):
{ "generated_text": "am a french native speaker. I am looking for a job in the hospitality industry. I", "details": { "finish_reason": "length", "generated_tokens": 20, "seed": 846930886 } }
- 流式推理:
- 流式推理1(“stream”=true,使用sse格式返回):
data: {"prefill_time":45.54,"decode_time":null,"token":{"id":626,"text":"am"}} data: {"prefill_time":null,"decode_time":128.32,"token":{"id":263,"text":" a"}} data: {"prefill_time":null,"decode_time":18.17,"token":{"id":5176,"text":" French"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":17739,"text":" photograph"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":261,"text":"er"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":2729,"text":" based"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":297,"text":" in"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":3681,"text":" Paris"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":29889,"text":"."}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":13,"text":"\n"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":29902,"text":"I"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":505,"text":" have"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":1063,"text":" been"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":27904,"text":" shooting"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":1951,"text":" since"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":306,"text":" I"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":471,"text":" was"}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":29871,"text":" "}} data: {"prefill_time":null,"decode_time":16.80,"token":{"id":29896,"text":"1"}} data: {"prefill_time":null,"decode_time":16.80,"generated_text":"am a French photographer based in Paris.\nI have been shooting since I was 15","details":{"finish_reason":"length","generated_tokens":20,"seed":846930886},"token":{"id":29945,"text":null}}
- 流式推理2(“stream”=true,配置项“fullTextEnabled”=true,使用sse格式返回):
data: {"prefill_time":33.55400085449219,"decode_time":null,"token":{"id":5122,"text":":"}} data: {"prefill_time":null,"decode_time":19.922000885009766,"token":{"id":7552,"text":":)"}} data: {"prefill_time":null,"decode_time":12.803999900817871,"token":{"id":40,"text":":)I"}} data: {"prefill_time":null,"decode_time":11.869000434875488,"token":{"id":2776,"text":":)I'm"}} data: {"prefill_time":null,"decode_time":12.008000373840332,"generated_text":":)I'm ","details":null,"token":{"id":4102,"text":null}}
- 流式推理1(“stream”=true,使用sse格式返回):
输出说明
返回值 |
类型 |
说明 |
---|---|---|
generated_text |
string |
推理返回结果。 |
details |
object |
推理details结果。目前定义以下字段,支持扩展。 |
finish_reason |
string |
推理结束原因。
|
generated_tokens |
int |
推理结果token数量。PD场景下统计P和D推理结果的总token数量。当一个请求的推理长度上限取maxIterTimes的值时,D节点响应中generated_tokens数量为maxIterTimes+1,即增加了P推理结果的首token数量。 |
seed |
int |
如果请求指定了sampling seed,返回该seed值。 |
返回值 |
类型 |
说明 |
---|---|---|
data |
object |
一次推理返回的结果。 |
prefill_time |
float |
流式推理下首token时延,单位:ms。 |
decode_time |
float |
流式推理下非首token的token时延,单位:ms。 |
generated_text |
string |
推理文本结果,只在最后一次推理结果才返回。 |
details |
object |
推理details结果,只在最后一次推理结果返回,支持扩展。 |
finish_reason |
string |
推理结束原因,只在最后一次推理结果返回。
|
generated_tokens |
int |
推理结果token数量。PD场景下统计P和D推理结果的总token数量。当一个请求的推理长度上限取maxIterTimes的值时,D节点响应中generated_tokens数量为maxIterTimes+1,即增加了P推理结果的首token数量。 |
seed |
int |
如果请求指定了sampling seed,返回改seed值。 |
token |
List[token] |
每一次推理的token。 |
id |
int |
token ID。 |
text |
string |
token对应文本。 |