vllm0.5.0的v1/completions各参数说明

一、调用示例

curl -X 'POST' \
  'http://ip:8001/v1/completions' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "model": "qwen-api",
  "prompt": [
    "讲个中文笑话"
  ],
  "best_of": 1,
  "n": 1,
  "use_beam_search": false,
  "echo": false,
  "frequency_penalty": 0.3,
  "presence_penalty": 0.3,
  "repetition_penalty": 1.2,
  "max_tokens": 600,
  "seed": 0,
  "stop": "[。!?]",
  "include_stop_str_in_output": true,
  "stream": false,
  "temperature": 0.2,
  "top_p": 0.7,
  "user": "tmp" 
}'

二、参数介绍

基本参数

  • model: 指定使用的语言模型名称或标识符。
  • prompt: 提供给模型的输入文本,是字符串或字符串数组。
  • stream: 是否流式返回生成的结果。
  • stream_options: 流式响应的额外选项。
  • temperature: 控制输出随机性的参数,值越低,输出越确定。
  • top_p: 核采样,只从累积概率达到此值的最小集合中选择下一个词。
  • use_beam_search: 是否使用束搜索算法进行解码。
  • top_k: 只考虑最高概率的k个词汇。
  • user: 用户ID或其他标识符,可用于跟踪或限制API使用。
  • best_of: 从多个候选输出中选择最佳的一个。如果设置为0,则此功能被禁用。
  • echo: 默认为false。如果为true,返回结果将包含输入的提示文本。
  • 三个惩罚参数

  • frequency_penalty: 默认是0.范围[-2, 2],设置为0.2

      对重复出现的 token 施加惩罚,以减少重复性。

作用:对已经生成的 token 的频率施加惩罚,以减少重复性。

工作原理:当某个 token 在生成的文本中出现得越频繁,它的惩罚就越大,从而降低该 token 再次被选中的概率。

适用场景:适用于希望减少某些 token 过度重复的情况,比如避免生成过于冗长或单调的文本。

  • presence_penalty: 默认为0.范围[-2, 2],设置为0.2

       对已经出现在文本中的新token施加惩罚,以鼓励多样性。

      作用:对新出现的 token 施加惩罚,鼓励模型选择新的 token 而不是已经在文本中出现过的 token。

    工作原理:一旦某个 token 出现了一次,它就会受到惩罚,不论其频率如何。这可以促使模型探索更多的词汇,增加文本多样性。

     适用场景:适用于需要提高文本多样性,避免过多使用相同词汇的情况,特别是在短文本生成中。

  • repetition_penalty: 默认为0,范围(0, 2],设置为1.2

     在generation_config.json中的值为1.05

     对已生成的单词施加惩罚,避免重复。

     作用:对所有已生成的 token 施加惩罚,特别是那些已经生成过一次或多次的 token。

     工作原理:与 frequency_penalty 类似,但它不仅考虑 token 的频率,还更加强调避免重复,即使 token 只出现了一次也会受到惩罚。

适用场景:特别适合用于防止生成的文本中含有明显的重复片段,如句子或短语的重复。

frequency_penalty 和 presence_penalty 都是为了增加生成文本的多样性,但它们侧重不同:前者关注的是 token 的频率,而后者关注的是 token 是否已经出现过。

repetition_penalty 更像是两者的结合体,它更加严格地惩罚任何已经出现过的 token,有助于避免生成文本中的重复现象。

实际应用中的选择

在实际应用中,您可能需要根据具体的需求和生成文本的特点来调整这些参数。例如:

如果您发现生成的文本中有某些单词或短语反复出现,可以尝试增加 repetition_penalty。

如果生成的文本显得单调且缺乏变化,可以通过适当增加 frequency_penalty 和 presence_penalty 来提升多样性。

对于不同的任务类型(如诗歌创作、新闻摘要等),您可能需要微调这些参数以获得最佳效果。

对理解模型很重要的参数

  • logprobs: 如果指定一个正整数值n,将在每个生成的token上返回最可能的n个token及其对数概率。

注:正式环境设置为0,非正式环境用于获取生成文本中每个token的选择依据及其可能的替代选项。这对于分析模型决策过程、调试或理解模型行为非常有用。

token数量

  • max_tokens: 模型生成的最大token数量。

1.长度不够导致的结束。因此max_tokens能设置太小,尽量设置大一些,但不要超过模型的最大值。

Finish_reason输出内容标识,说明:
· normal:输出内容完全由大模型生成,未触发截断、替换
· stop:输出结果命中入参stop中指定的字段后被截断
· length:达到了最大的token数,根据EB返回结果is_truncated来截断
· content_filter:输出内容被截断、兜底、替换为**等

min_tokens: 最少生成的token数量。

建议,不要设置min_tokens的值,否则模型生成的后半部分内容会乱说。

下面是设置了min_tokens为300,max_tokens为500的场景。

响应格式

  • response_format: 默认为text.定义响应格式的结构。支持json_object、text两种格式。

以json_object格式返回,容易出现不满足效果情况

Stop

  • stop: 当生成的文本中遇到这个字符串时停止生成。

含义:指定一个或多个字符串(通常是标点符号、特殊标记或句子结尾),当生成的文本中遇到这些字符串时,生成过程将停止。

作用:主要用于基于字符或字符串匹配来决定生成文本的结束位置。它直接在生成的文本内容上进行匹配,因此非常适合用来标识常见的结束符号,如句号 (.)、换行符 (\n) 或特定的结束标记(例如 [END])。

应用场景:

当您希望生成的文本在遇到特定的短语或句子结构时结束。

适用于需要精确控制文本结束位置的情况,尤其是当结束标志是明确的字符串时。

其他

  • logit_bias: 对特定 token 的 logits 应用偏差值,影响它们的选择概率。
  • n: 要生成的完成次数(回复的数量)。
  • seed: 随机种子,确保结果可复现。
  • min_p: 最小累积概率阈值,与top_p相似但不是基于比例而是绝对概率。
  • length_penalty: 默认为1.0.对长序列施加惩罚或奖励。
  • early_stopping: 如果设置为true,在达到某个条件时提前终止生成过程。
  • stop_token_ids: 停止生成的特殊token ID列表。
  • ignore_eos: 忽略结束符号(EOS),继续生成直到满足其他停止条件。
  • skip_special_tokens: 是否跳过特殊token在最终输出中。
  • spaces_between_special_tokens: 特殊token之间是否插入空格。
  • truncate_prompt_tokens: 输入提示的最大长度,超过则截断。truncate_prompt_tokens必须大于1
  • include_stop_str_in_output: 是否在输出中包括停止字符串。
  • suffix: 在每次完成的末尾添加的文本。
  •       注:不支持,可以理解改参数无效

三、chat/completions与completions对照

序号v1/chat/completionsv1/completions备注
文本对话例子文本续写例子
1  "messages": [  "prompt": [
2    {  ],
3      "content": "string",
4      "role": "system",
5      "name": "string"
6    },
7    {
8      "content": "string",
9      "role": "user",
10      "name": "string"
11    },
12    {
13      "content": "string",
14      "role": "assistant",
15      "name": "string",
16      "function_call": {
17        "arguments": "string",
18        "name": "string"
19      },
20      "tool_calls": [
21        {
22          "id": "string",
23          "function": {
24            "arguments": "string",
25            "name": "string"
26          },
27          "type": "function"
28        }
29      ]
30    },
31    {
32      "content": "string",
33      "role": "tool",
34      "name": "string",
35      "tool_call_id": "string"
36    },
37    {
38      "content": "string",
39      "role": "function",
40      "name": "string"
41    },
42  ],
43  "model": "string",qwen-api  "model": "string",指定使用的语言模型名称或标识符
44  "max_tokens": 0,  "max_tokens": 16,不能设置太小,否则容易导致句子不完整。
45  "frequency_penalty": 0,  "frequency_penalty": 0,
46  "presence_penalty": 0,  "presence_penalty": 0,
47  "repetition_penalty": 1,  "repetition_penalty": 1,在generation_config.json中的值为1.05。
范围(0, 2],设置为1.2。
48  "stream": false,  "stream": false,
  "temperature": 0.7,  "temperature": 1,
  "top_p": 1,  "top_p": 1,
  "top_k": -1,  "top_k": -1,
  "min_tokens": 0,  "min_tokens": 0,
49  "stream_options": {  "stream_options": {
50    "include_usage": true    "include_usage": true
51  },  },
52  "seed": 0,  "seed": 0,随机种子,确保结果可复现。默认为0,表示随机
53  "stop": "string",谢谢  "stop": "string",谢谢当生成的文本中遇到这个字符串时停止生成。不能为空。
生成时停止生成的字符串列表。
返回的输出将不包含停止字符串。
指定一个字符串(通常是标点符号、特殊标记或句子结尾),当生成的文本中遇到这些字符串时,生成过程将停止
  "stop_token_ids": [  "stop_token_ids": [
00
  ],  ],
  "best_of": 0,  "best_of": 0,best_of 必须大于或等于 n
  "use_beam_search": false,  "use_beam_search": false,是否使用束搜索算法进行解码。当 use_beam_search 设置为 True 时,best_of 参数实际上定义了束搜索的宽度。束宽度决定了在每个时间步骤中保留多少个最有可能的候选序列。较大的束宽度可以提高生成文本的质量,但也增加了计算成本。
54  "n": 1,  "n": 1,
57  "logit_bias": {  "logit_bias": {
58    "additionalProp1": 0,    "additionalProp1": 0,
59    "additionalProp2": 0,    "additionalProp2": 0,
60    "additionalProp3": 0    "additionalProp3": 0
61  },  },
62  "logprobs": false,  "logprobs": 0,默认为0,想了解模型预测情况,可以设置1以上得值,不要超过3,值太大容易导致速度过慢,会体现在返回结果中。
64  "user": "string",  "user": "string", 用户ID或其他标识符,可用于跟踪或限制API使用
67  "min_p": 0,  "min_p": 0,
68  "ignore_eos": false,  "ignore_eos": false,
70  "echo": false,  "echo": false,默认为false如果为true,返回结果将包含输入的提示文本
71  "length_penalty": 1,  "length_penalty": 1,
72  "early_stopping": false,  "early_stopping": false,
76  "skip_special_tokens": true,  "skip_special_tokens": true,
77  "spaces_between_special_tokens": true,  "spaces_between_special_tokens": true,
78  "include_stop_str_in_output": false,  "include_stop_str_in_output": false,
79  "guided_json": "string",  "guided_json": "string",
80  "guided_regex": "string",  "guided_regex": "string",
81  "guided_choice": [  "guided_choice": [
82    "string"    "string"
83  ],  ],
84  "guided_grammar": "string",  "guided_grammar": "string",
85  "guided_decoding_backend": "string",  "guided_decoding_backend": "string",
86  "guided_whitespace_pattern": "string"  "guided_whitespace_pattern": "string"
87  "response_format": {  "response_format": {默认为text.定义响应格式的结构。支持json_object、text两种格式。
以json_object格式返回,容易出现不满足效果情况。
88    "type": "text"    "type": "text"
89  },  },
90
91  "add_generation_prompt": true,  "truncate_prompt_tokens": 0,
92  "add_special_tokens": false,  "suffix": "string",不支持,不可设置该参数
93  "top_logprobs": 0,
94  "tools": [
95    {
96      "type": "function",
97      "function": {
98        "name": "string",
99        "description": "string",
100        "parameters": {}
101      }
102    }
103  ],
104  "tool_choice": "none",
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值