下载
中文
注册

Token推理接口

接口功能

实现token输入的文本/流式推理。

接口格式

操作类型:POST

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

{ip}{port}请使用业务面的IP地址和端口号,即“ipAddress”“port”

请求参数

参数名

是否必选

说明

取值要求

input_id

必选

数组,代表输入的token ID值。

tokenId的值需要在模型词表范围内。token ID取值范围为(1, 1024*1024]。

stream

可选

指定返回结果是文本推理还是流式推理。

bool类型,默认值false。

  • true:流式推理。
  • 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。

  • true:做sampling。
  • false:不做sampling。

seed

可选

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

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

当seed取到临近最大值时,会有WARNING,但并不会影响使用。若想去掉WARNING,可以减小seed取值。

repetition_penalty

可选

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

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

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

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

details

可选

是否返回推理详细输出结果。

bool类型,默认值false。

typical_p

可选

解码输出概率分布指数。

当前后处理不支持。

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

watermark

可选

是否带模型水印。

当前后处理不支持。

bool类型,默认值false。

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

priority

可选

设置请求优先级。

uint64_t类型,取值范围[1, 5],默认值5。

值越低优先级越高,最高优先级为1。

timeout

可选

设置等待时间,超时则断开请求。

uint64_t类型,取值范围(0, 3600],默认值600,单位:秒。

使用样例

请求样例:

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

请求消息体:

{
    "input_id": [5618, 19678, 701, 9072, 13],
    "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
        }
    }
  • 流式推理(“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}}

输出说明

表1 文本推理结果说明

返回值

类型

说明

generated_text

string

推理返回结果。

details

object

推理details结果。目前定义以下字段,支持扩展。

finish_reason

string

推理结束原因。

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

generated_tokens

int

推理结果token数量。PD场景下统计P和D推理结果的总token数量。当一个请求的推理长度上限取maxIterTimes的值时,D节点响应中generated_tokens数量为maxIterTimes+1,即增加了P推理结果的首token数量。

seed

int

如果请求指定了sampling seed,返回该seed值。

表2 流式推理结果说明

返回值

类型

说明

data

object

一次推理返回的结果。

prefill_time

float

流式推理下首token时延,单位:ms。

decode_time

float

流式推理下非首token的token时延,单位:ms。

generated_text

string

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

details

object

推理details结果,只在最后一次推理结果返回,支持扩展。

finish_reason

string

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

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

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对应文本。