流式推理接口

提供流式推理处理功能。

接口格式

操作类型:POST

URL:https://{ip}:{port}/generate_stream

请求参数

参数

是否必选

说明

取值要求

inputs

必选

推理请求文本。

非空,0KB<字符数<=512KB,支持中英文。tokenizer之后的token数量<=(maxSeqLen-maxIterTimes)和max_position_embeddings之间的较小值(相关参数从配置文件中获取)。

parameters

可选

模型推理后处理相关参数。

-

decoder_input_details

可选

是否返回推理请求文本的token id。

bool类型,默认值false。对于流式接口,该参数只能为false。

details

可选

是否返回推理详细输出结果。根据TGI 0.9.4接口行为,“details”=true,即返回所有的details信息。

bool类型参数,默认值false。

do_sample

可选

是否做sampling。

bool类型,默认值false。

max_new_tokens

可选

允许推理生成的最大token个数。该字段受到配置文件maxIterTimes参数影响,推理token个数<=maxIterTimes。

uint_64类型,取值范围(0, maxIterTimes]。默认值20。

repetition_penalty

可选

重复惩罚用于减少在文本生成过程中出现重复片段的概率。它对之前已经生成的文本进行惩罚,使得模型更倾向于选择新的、不重复的内容。

float类型,大于0,默认值1.0。

  • 小于1.0表示对重复进行奖励。
  • 1.0表示不进行重复度惩罚。
  • 大于1.0表示对重复进行惩罚。

建议最大值取2,同时视模型而定。

return_full_text

可选

是否将推理请求文本(inputs参数)添加到推理结果前面。

bool类型,默认值false。

  • true表示添加。
  • false表示不添加。

seed

可选

用于指定推理过程的随机种子,相同的seed值可以确保推理结果的可重现性,不同的seed值会提升推理结果的随机性。

uint_64类型,取值范围(0, 18446744073709551615],不传递该参数,系统会产生一个随机seed值。

temperature

可选

控制生成的随机性,较高的值会产生更多样化的输出。

float类型,大于0,默认值1.0。

取值越大,结果的随机性越大。推荐使用大于或等于0.001的值,小于0.001可能会导致文本质量不佳。

建议最大值取2,同时视模型而定。

top_k

可选

控制模型生成过程中考虑的词汇范围,只从概率最高的k个候选词中选择。使用限制请参见使用限制

uint32_t类型,取值范围(0, vocabSize)&&(0, 2147483647],默认值0。

字段未设置时,默认值使用0来表示不进行该项处理,但是不可主动设置为0。

vocabSize是从modelWeightPath路径下的config.json或者padded_vocab_size的文件中读取的vocab_size值,若不存在则vocabSize取默认值0。建议用户在config.json文件中添加vocab_size或者padded_vocab_size参数,否则可能导致推理失败。

top_p

可选

控制模型生成过程中考虑的词汇范围,使用累计概率选择候选词,直到累计概率超过给定的阈值。该参数也可以控制生成结果的多样性,它基于累积概率选择候选词,直到累计概率超过给定的阈值为止。

float类型,取值范围(0.0, 1.0),默认值1.0。

字段未设置时,默认值使用1.0来表示不进行该项处理,但是不可主动设置为1.0。

truncate

可选

输入文本做tokenizer之后,将token数量截断到该长度。读取截断后的n个token。

uint32_t类型,取值范围(0, maxSeqLen-maxIterTimes],默认值0(表示不做truncate)。

字段未设置时,默认值使用0来表示不进行该项处理,但是不可主动设置为0。

typical_p

可选

解码输出概率分布指数。

当前后处理不支持。

float类型,取值范围(0.0, 1.0],默认值1.0。

watermark

可选

是否带模型水印。

当前后处理不支持。

bool类型,默认值false。

  • true:带模型水印。
  • false:不带模型水印。

使用样例

请求样例:

POST https://{ip}:{port}/generate_stream

请求消息体:

{
    "inputs": "My name is Olivier and I",
    "parameters": {
        "decoder_input_details": false,
        "details": true,
        "do_sample": true,
        "max_new_tokens": 20,
        "repetition_penalty": 1.03,
        "return_full_text": false,
        "seed": null,
        "temperature": 0.5,
        "top_k": 10,
        "top_p": 0.95,
        "truncate": null,
        "typical_p": 0.5,
        "watermark": false
    }
}

响应样例(使用sse格式返回):

data: {"token":{"id":13,"text":"\n","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":26626,"text":"Jan","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":300,"text":"et","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":3732,"text":" makes","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":395,"text":" $","logprob":null,"special":null},"generated_text":null,"details":null}

……

data: {"token":{"id":395,"text":" $","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":29896,"text":"1","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":29896,"text":"1","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":29947,"text":"8","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":29889,"text":".","logprob":null,"special":null},"generated_text":null,"details":null}

data: {"token":{"id":2,"text":"","logprob":null,"special":null},"generated_text":"\nJanet makes $104 a day at the farmers' market.\nThe number of eggs that Janet sells at the farmers' market each day is 16 - 3 - 4 = 7.\nShe makes $2 for each egg that she sells.\nThe total amount that she makes is $2 * 7 = $14.\nThe total amount that she makes is $14 + $104 = $118.\nThe total amount that she makes is $118.","details":{"prompt_tokens":74,"finish_reason":"eos_token","generated_tokens":116,"seed":8756727004129248931}}

输出说明

返回值

类型

说明

data

object

一次推理返回的结果。

token

object

每一次推理的token。

id

int

token id。

text

string

token对应文本。

logprob

概率对数

当前不支持,默认返回null。

special

bool

表明该token是否是special,如果是“special”=true,该token在做连接的时候可以被忽略。当前不支持,默认返回null。

generated_text

string

推理文本返回结果,只在最后一次推理结果才返回。

details

object

推理details结果,只在最后一次推理结果返回,并且请求参数“details”=true才返回details结果。

prompt_tokens

int

用户输入的prompt文本对应的token长度。

finish_reason

string

结束原因,只在最后一次推理结果返回。

  • eos_token:请求正常结束。
  • stop_sequence:
    • 请求被主动CANCEL或STOP,用户不感知,丢弃响应。
    • 请求执行中出错,响应输出为空,err_msg非空。
    • 请求输入校验异常,响应输出为空,err_msg非空。
  • length:
    • 请求因达到最大序列长度而结束,响应为最后一轮迭代输出。
    • 请求因达到最大输出长度(包括请求和模型粒度)而结束,响应为最后一轮迭代输出。
  • invalid flag:无效标记。

generated_tokens

int

推理结果token数量。

seed

int

返回推理请求的seed值,如果请求参数没有指定seed参数,则返回系统随机生成的seed值。