配置参考
注意:此 API 处于预览状态,可能会发生更改。
如果模型是使用模型构建器生成的,则会自动生成一个名为 genai_config.json 的配置文件。如果您提供自己的模型,则可以复制下面的示例并根据您的场景进行修改。
phi-2 的示例文件
{
"model": {
"bos_token_id": 50256,
"context_length": 2048,
"decoder": {
"session_options": {
"log_id": "onnxruntime-genai",
"provider_options": [
{
"cuda": {}
}
]
},
"filename": "model.onnx",
"head_size": 80,
"hidden_size": 2560,
"inputs": {
"input_ids": "input_ids",
"attention_mask": "attention_mask",
"position_ids": "position_ids",
"past_key_names": "past_key_values.%d.key",
"past_value_names": "past_key_values.%d.value"
},
"outputs": {
"logits": "logits",
"present_key_names": "present.%d.key",
"present_value_names": "present.%d.value"
},
"num_attention_heads": 32,
"num_hidden_layers": 32,
"num_key_value_heads": 32
},
"eos_token_id": 50256,
"pad_token_id": 50256,
"type": "phi",
"vocab_size": 51200
},
"search": {
"diversity_penalty": 0.0,
"do_sample": false,
"early_stopping": true,
"length_penalty": 1.0,
"max_length": 20,
"min_length": 0,
"no_repeat_ngram_size": 0,
"num_beams": 1,
"num_return_sequences": 1,
"past_present_share_buffer": true,
"repetition_penalty": 1.0,
"temperature": 1.0,
"top_k": 50,
"top_p": 1.0
}
}
配置
模型部分
通用模型配置
-
type: 模型的类型。可以是 phi、llama 或 gpt。
-
vocab_size: 模型处理的词汇表大小,即词汇表中的标记数。
-
bos_token_id: 序列开始标记的 ID。
-
eos_token_id: 序列结束标记的 ID。
-
pad_token: 填充标记的 ID。
-
context_length: 模型可以处理的最大序列长度。
会话选项
这些是传递给 ONNX Runtime 的选项,它在每个标记生成迭代中运行模型。
-
provider_options: 运行模型的执行目标的优先级列表。如果在 CPU 上运行,则此选项不存在。可以在提供程序项内指定执行提供程序特定配置的列表。
支持的提供程序选项
cuda
dml
-
log_id: 记录时输出的前缀。
然后,对于管道中的每个模型,都有一个部分,以模型命名。
解码器模型配置
-
filename: 模型文件的名称。
-
inputs: 每个输入的名称。模型输入序列可以包含一个通配符,表示序列中的索引。
-
outputs: 每个输出的名称。
-
num_attention_heads: 模型中注意力头的数量。
-
head_size: 注意力头的大小。
-
hidden_size: 隐藏层的大小。
-
num_key_value_heads: 键值头的数量。
生成搜索部分
-
max_length: 模型将生成的最大长度。
-
min_length: 模型将生成的最小长度。
-
do_sample: 启用 Top P / Top K 生成。当设置为 true 时,生成使用配置的
top_p
和top_k
值。当设置为 false 时,生成使用束搜索或贪婪搜索。 -
num_beams: 使用束搜索生成输出序列时要应用的束数量。如果 num_beams=1,则使用贪婪搜索执行生成。如果 num_beans > 1,则使用束搜索执行生成。
-
early_stopping: 是否在每个批次至少完成 num_beams 个句子时停止束搜索。默认为 false。
-
num_return_sequences: 要生成的序列数。按顺序返回得分最高的序列。
-
top_k: 仅包括属于
K
个最有可能的标记列表中的标记。范围是 1 到词汇表大小。 -
top_p: 仅包括概率总和达到
P
或更高的最有可能的标记。默认为1
,其中包括所有标记。范围是 0 到 1,不包括 0。 -
temperature: 温度值会缩放每个标记的分数,因此较低的温度值会导致更清晰的分布。
-
repetition_penalty: 如果设置为大于
1
的值,则会降低先前生成的标记的分数。默认为1
。 -
length_penalty: 控制生成的输出的长度。小于
1
的值鼓励生成产生较短的序列。大于1
的值鼓励生成较长的序列。默认为1
。 -
diversity_penalty: 不支持。
-
no_repeat_ngram_size: 不支持。
-
past_present_share_buffer: 如果设置为 true,则过去和现在的缓冲区为了效率而共享。
搜索组合
-
束搜索
- num beams > 1
- do_sample = False
-
贪婪搜索
- num_beams = 1
- do_sample = False
-
Top P / Top K
- do_sample = True