配置參考

注意:此 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:模型處理的詞彙表大小,即詞彙表中的 token 數量。

  • bos_token_id:序列開始 token 的 ID。

  • eos_token_id:序列結束 token 的 ID。

  • pad_token:填充 token 的 ID。

  • context_length:模型可以處理的最大序列長度。

會話選項

這些是傳遞給 ONNX Runtime 的選項,ONNX Runtime 在每次 token 生成迭代時執行模型。

  • 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:使用束搜尋生成輸出序列時應用的束數量。如果 `num_beams=1`,則使用貪婪搜尋執行生成。如果 `num_beams > 1`,則使用束搜尋執行生成。

  • early_stopping:是否在每個批次中至少有 `num_beams` 個句子完成時停止束搜尋。預設為 false。

  • num_return_sequences:要生成的序列數量。按順序返回得分最高的序列。

  • top_k:只包含落在 K 個最有可能的 token 列表中的 token。範圍是 1 到詞彙表大小。

  • top_p:只包含機率總和為 P 或更高的最有可能的 token。預設為 1,包括所有 token。範圍是 0 到 1,不包括 0。

  • temperature:溫度值按比例調整每個 token 的分數,較低的溫度值會導致更尖銳的分佈。

  • repetition_penalty:如果設定為大於 1 的值,則降低先前生成 token 的分數。預設為 1

  • length_penalty:控制生成的輸出長度。小於 1 的值鼓勵生成更短的序列。大於 1 的值鼓勵生成更長的序列。預設為 1

  • diversity_penalty:不支援。

  • no_repeat_ngram_size:不支援。

  • past_present_share_buffer:如果設定為 true,則共享過去和當前緩衝區以提高效率。

搜尋組合

  1. 束搜尋

    • 束數量 > 1
    • do_sample = False
  2. 貪婪搜尋

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

    • do_sample = True