配置参考

注意:此 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 的选项,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_ptop_k 值。设置为 false 时,生成使用 beam search 或 greedy search。

  • num_beams: 使用 beam search 生成输出序列时应用的 beam 数量。如果 num_beams=1,则使用 greedy search 进行生成。如果 num_beans > 1,则使用 beam search 进行生成。

  • early_stopping: 是否在每批次至少有 num_beams 个句子完成时停止 beam search。默认为 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,则为提高效率,过去和当前缓冲区会共享。

搜索组合

  1. 束搜索

    • num beams > 1
    • do_sample = False
  2. 贪婪搜索

    • num_beams = 1
    • do_sample = False
  3. Top P / Top K

    • do_sample = True