文本/流式推理接口

接口功能

提供文本/流式推理处理功能。

接口格式

操作类型:POST

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

请求参数

参数

是否必选

说明

取值要求

prompt

必选

推理请求文本。

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

max_tokens

可选

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

uint64_t类型,取值范围(0, maxIterTimes]。默认值16。

repetition_penalty

可选

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

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

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

presence_penalty

可选

存在惩罚介于-2.0和2.0之间,它影响模型如何根据到目前为止是否出现在文本中来惩罚新token。正值将通过惩罚已经使用的词,增加模型谈论新主题的可能性。

float类型,取值范围[-2.0, 2.0],默认值0.0。

frequency_penalty

可选

频率惩罚介于-2.0和2.0之间,它影响模型如何根据文本中词汇的现有频率惩罚新词汇。正值将通过惩罚已经频繁使用的词来降低模型一行中重复用词的可能性。

float类型,取值范围[-2.0, 2.0],默认值0.0。

temperature

可选

控制生成的随机性,较高的值会产生更多样化的输出。1.0表示不进行计算,大于1.0表示输出随机性提高。temperature=0,即采用greedy sampling,该参数映射到后处理的1.0。

float类型,取值>=0.0,默认值1.0。

推荐使用大于或等于0.001的值,小于0.001可能会导致文本质量不佳。

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

top_k

可选

控制模型生成过程中考虑的词汇范围,只从概率最高的k个候选词中选择。-1表示不进行top k计算。使用限制请参见使用限制

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

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

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。

stream

可选

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

bool类型,默认值false。

使用样例

请求样例:

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

请求消息体:

{
    "prompt": "My name is Olivier and I",
    "max_tokens": 20,
    "repetition_penalty": 1.03,
    "presence_penalty": 1.2,
    "frequency_penalty": 1.2,
    "temperature": 0.5,
    "top_k": 10,
    "top_p": 0.95,
    "stream": false
}

响应样例:

输出说明

返回值

类型

说明

text

string

推理返回结果。

vLLM流式返回结果,每个token的返回结果添加'\0'字符做分割。使用curl命令发送vLLM流式推理请求的样例如下:

curl -H "Accept: application/json" -H "Content-type: application/json" --cacert /home/runs/static_conf/ca/ca.pem  --cert /home/runs/static_conf/cert/client.pem  --key /home/runs/static_conf/cert/client.key.pem -X POST -d '{
"prompt": "My name is Olivier and I",
"stream": true,
"repetition_penalty": 1.0,
"top_p": 1.0,
"top_k": 10,
"max_tokens": 16,
"temperature": 1.0
}' https://{ip}:{port}/generate