Lighteval 文件

模型

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

模型

模型

LightevalModel

class lighteval.models.abstract_model.LightevalModel

< >

( )

清理

< >

( )

如有需要,執行清理操作,例如關閉端點。

greedy_until

< >

( requests: list ) list[GenerativeResponse]

引數

  • requests (list[Request]) — 包含上下文和終止條件的請求列表。
  • disable_tqdm (bool, 可選) — 是否停用進度條。預設為 False。
  • override_bs (int, 可選) — 覆蓋生成的批處理大小。預設為 None。

返回

list[GenerativeResponse]

生成的響應列表。

使用貪婪解碼策略生成響應,直到滿足某些終止條件。

greedy_until_multi_turn

< >

( requests: list )

使用貪婪解碼策略生成響應,直到滿足某些終止條件。

loglikelihood

< >

( requests: list )

對上下文和續寫進行分詞,並計算這些分詞序列的對數似然。

loglikelihood_rolling

< >

( requests: list )

此函式用於計算上下文的對數似然,以用於困惑度指標。

loglikelihood_single_token

< >

( requests: list )

對上下文和續寫進行分詞,並計算這些分詞序列的對數似然。

tok_encode_pair

< >

( context continuation pairwise: bool = False ) Tuple[TokenSequence, TokenSequence]

引數

  • context (str) — 待編碼的上下文字串。
  • continuation (str) — 待編碼的續寫字串。
  • pairwise (bool) — 如果為 True,則分別對上下文和續寫進行編碼。如果為 False,則將它們一起編碼然後拆分。

返回

Tuple[TokenSequence, TokenSequence]

包含已編碼的上下文和續寫的元組。

透過處理中間的空格來編碼上下文和續寫對。

成對編碼(pairwise)的優勢是:1)它能更好地與 LLM 預測詞元的方式對齊;2)在 len(tok(context,cont)) != len(tok(context)) + len(tok(continuation)) 的情況下也能正常工作。例如,如果中文的上下文和續寫之間沒有使用空格,就可能出現這種情況。

Accelerate 和 Transformers 模型

TransformersModel

class lighteval.models.transformers.transformers_model.TransformersModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) model_name: str tokenizer: str | None = None subfolder: str | None = None revision: str = 'main' batch_size: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None generation_size: typing.Annotated[int, Gt(gt=0)] = 256 max_length: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None add_special_tokens: bool = True model_parallel: bool | None = None dtype: str | None = None device: typing.Union[int, str] = 'cuda' trust_remote_code: bool = False use_chat_template: bool = False compile: bool = False multichoice_continuations_start_space: bool | None = None pairwise_tokenization: bool = False )

引數

  • model_name (str) — HuggingFace Hub 模型 ID 名稱或要載入的預訓練模型的路徑。這實際上是 HuggingFace `transformers` API 中 `from_pretrained` 的 `pretrained_model_name_or_path` 引數。
  • accelerator (Accelerator) — 用於模型訓練的加速器。
  • tokenizer (Optional[str]) — 用於分詞的 HuggingFace Hub 分詞器 ID。
  • multichoice_continuations_start_space (Optional[bool]) — 在多項選擇生成中,是否在每個續寫的開頭新增空格。例如,上下文:“法國的首都是什麼?”以及選項:“巴黎”、“倫敦”。將被分詞為:“法國的首都是什麼? 巴黎”和“法國的首都是什麼? 倫敦”。True 表示新增空格,False 表示去除空格,None 表示不作任何操作。
  • pairwise_tokenization (bool) — 是將上下文和續寫分開分詞還是一起分詞。
  • subfolder (Optional[str]) — 模型倉庫中的子資料夾。
  • revision (str) — 模型的版本。
  • batch_size (int) — 用於模型訓練的批處理大小。
  • max_gen_toks (Optional[int]) — 要生成的最大詞元數量。
  • max_length (Optional[int]) — 生成輸出的最大長度。
  • add_special_tokens (bool, 可選, 預設為 True) — 是否向輸入序列新增特殊詞元。如果為 `None`,對於 seq2seq 模型(例如 T5),預設值將設定為 `True`,對於因果模型則為 `False`。
  • model_parallel (bool, 可選, 預設為 None) — True/False: 強制使用或不使用 `accelerate` 庫在多個裝置上載入大型模型。預設值:None,對應於比較程序數與 GPU 數量。如果程序數較少 => 使用模型並行,否則不使用。
  • dtype (Union[str, torch.dtype], 可選, 預設為 None) —): 如果指定,將模型權重轉換為 `dtype`。字串會轉換為 `torch.dtype` 物件(例如,`float16` -> `torch.float16`)。使用 `dtype="auto"` 從模型的權重中推斷型別。
  • device (Union[int, str]) — 用於模型訓練的裝置。
  • quantization_config (Optional[BitsAndBytesConfig]) — 模型的量化配置,手動提供以載入一個通常為浮點數的模型,並以量化精度載入。對於 4 位和 8 位精度是必需的。
  • trust_remote_code (bool) — 在模型載入期間是否信任遠端程式碼。
  • generation_parameters (GenerationParameters) — 將影響生成的引數範圍。
  • generation_config (GenerationConfig) — GenerationConfig 物件(僅在手動建立期間傳遞)

模型的基礎配置類。

方法:post_init(): 對配置執行後初始化檢查。_init_configs(model_name, env_config): 初始化模型配置。init_configs(env_config): 使用環境配置初始化模型配置。get_model_sha(): 檢索模型的 SHA。

class lighteval.models.transformers.transformers_model.TransformersModel

< >

( config: TransformersModelConfig )

greedy_until

< >

( requests: list ) list[GenerativeResponse]

引數

  • requests (list[Request]) — 包含上下文和終止條件的請求列表。
  • override_bs (int, 可選) — 覆蓋生成的批處理大小。預設為 None。

返回

list[GenerativeResponse]

生成的響應列表。

使用貪婪解碼策略生成響應,直到滿足某些終止條件。

init_model_parallel

< >

( model_parallel: bool | None = None )

計算所有與 model_parallel 相關的引數

loglikelihood

< >

( requests: list ) list[Tuple[float, bool]]

引數

  • requests (list[Tuple[str, dict]]) — *描述*

返回

list[Tuple[float, bool]]

描述

對上下文和續寫進行分詞,並計算這些分詞序列的對數似然。

loglikelihood_single_token

< >

( requests: list ) list[Tuple[float, bool]]

引數

  • requests (list[Tuple[str, dict]]) — *描述*

返回

list[Tuple[float, bool]]

描述

對上下文和續寫進行分詞,並計算這些分詞序列的對數似然。

pad_and_gather

< >

( output_tensor: Tensor drop_last_samples: bool = True num_samples: int = None ) torch.Tensor

引數

  • output_tensor (torch.Tensor) — 需要填充的輸出張量。
  • drop_last_samples (bool, optional) — 是否在收集過程中丟棄最後的樣本。
  • 當樣本數量不能被程序數整除時,最後的樣本將被丟棄。 — 預設為 True。

返回

torch.Tensor

填充後的輸出張量和收集到的長度張量。

output_tensor 填充到最大長度,並跨程序收集長度。

prepare_batch_logprob

< >

( batch: list padding_length: int max_context: typing.Optional[int] = None single_token: bool = False )

對一批輸入進行分詞,並返回長度、截斷和填充資訊。此步驟是手動完成的,因為我們將對數機率輸入與其續寫部分一起進行分詞,以處理分詞器可能在開頭新增的額外空格,請參見 tok_encode_pair。

AdapterModel

class lighteval.models.transformers.adapter_model.AdapterModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) model_name: str tokenizer: str | None = None subfolder: str | None = None revision: str = 'main' batch_size: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None generation_size: typing.Annotated[int, Gt(gt=0)] = 256 max_length: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None add_special_tokens: bool = True model_parallel: bool | None = None dtype: str | None = None device: typing.Union[int, str] = 'cuda' trust_remote_code: bool = False use_chat_template: bool = False compile: bool = False multichoice_continuations_start_space: bool | None = None pairwise_tokenization: bool = False base_model: str adapter_weights: bool )

class lighteval.models.transformers.adapter_model.AdapterModel

< >

( config: TransformersModelConfig )

DeltaModel

class lighteval.models.transformers.delta_model.DeltaModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) model_name: str tokenizer: str | None = None subfolder: str | None = None revision: str = 'main' batch_size: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None generation_size: typing.Annotated[int, Gt(gt=0)] = 256 max_length: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None add_special_tokens: bool = True model_parallel: bool | None = None dtype: str | None = None device: typing.Union[int, str] = 'cuda' trust_remote_code: bool = False use_chat_template: bool = False compile: bool = False multichoice_continuations_start_space: bool | None = None pairwise_tokenization: bool = False base_model: str delta_weights: bool )

class lighteval.models.transformers.delta_model.DeltaModel

< >

( config: TransformersModelConfig )

基於端點的模型

InferenceEndpointModel

class lighteval.models.endpoints.endpoint_model.InferenceEndpointModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) endpoint_name: str | None = None model_name: str | None = None reuse_existing: bool = False accelerator: str = 'gpu' dtype: str | None = None vendor: str = 'aws' region: str = 'us-east-1' instance_size: str | None = None instance_type: str | None = None framework: str = 'pytorch' endpoint_type: str = 'protected' add_special_tokens: bool = True revision: str = 'main' namespace: str | None = None image_url: str | None = None env_vars: dict | None = None )

class lighteval.models.endpoints.endpoint_model.ServerlessEndpointModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) model_name: str add_special_tokens: bool = True )

class lighteval.models.endpoints.endpoint_model.InferenceEndpointModel

< >

( config: typing.Union[lighteval.models.endpoints.endpoint_model.InferenceEndpointModelConfig, lighteval.models.endpoints.endpoint_model.ServerlessEndpointModelConfig] )

InferenceEndpointModels 既可以與免費的推理客戶端一起使用,也可以與推理端點一起使用,後者將在評估期間使用 text-generation-inference 部署您的模型。

TGI ModelClient

class lighteval.models.endpoints.tgi_model.TGIModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) inference_server_address: str | None inference_server_auth: str | None model_name: str | None )

class lighteval.models.endpoints.tgi_model.ModelClient

< >

( config: TGIModelConfig )

自定義模型

class lighteval.models.custom.custom_model.CustomModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) model_name: str model_definition_file_path: str )

引數

  • model (str) — 模型的識別符號。這可用於在結果和日誌中跟蹤評估了哪個模型。
  • model_definition_file_path (str) — 指向包含自定義模型實現的 Python 檔案的路徑。該檔案必須定義一個繼承自 LightevalModel 的類。該類應實現 LightevalModel 介面所需的所有方法。

用於在 Lighteval 中載入自定義模型實現的配置類。

此配置允許使用者透過指定一個包含繼承自 LightevalModel 的自定義模型類的 Python 檔案來定義和載入自己的模型實現。

自定義模型檔案應僅包含一個繼承自 LightevalModel 的類。載入模型時將自動檢測並例項化該類。

用法示例

# Define config
config = CustomModelConfig(
    model="my-custom-model",
    model_definition_file_path="path/to/my_model.py"
)

# Example custom model file (my_model.py):
from lighteval.models.abstract_model import LightevalModel

class MyCustomModel(LightevalModel):
    def __init__(self, config, env_config):
        super().__init__(config, env_config)
        # Custom initialization...

    def greedy_until(self, *args, **kwargs):
        # Custom generation logic...
        pass

自定義模型的示例可以在 examples/custom_models/google_translate_model.py 中找到。

備註

  • 自定義模型類必須繼承自 LightevalModel 並實現所有必需的方法
  • 檔案中只應定義一個繼承自 LightevalModel 的類
  • 模型檔案在執行時動態載入,因此請確保所有依賴項都可用
  • 載入自定義模型檔案時要小心,因為它們可以執行任意程式碼

Open AI 模型

class lighteval.models.endpoints.openai_model.OpenAIClient

< >

( config: OpenAIModelConfig env_config )

greedy_until

< >

( requests: list override_bs: typing.Optional[int] = None ) list[GenerativeResponse]

引數

  • requests (list[Request]) — 包含上下文和結束條件的請求列表。
  • override_bs (int, optional) — 覆蓋生成的批次大小。預設為 None。

返回

list[GenerativeResponse]

生成的響應列表。

使用貪婪解碼策略生成響應,直到滿足某些終止條件。

VLLM 模型

VLLMModel

class lighteval.models.vllm.vllm_model.VLLMModelConfig

< >

( generation_parameters: GenerationParameters = GenerationParameters(early_stopping=None, repetition_penalty=None, frequency_penalty=None, length_penalty=None, presence_penalty=None, max_new_tokens=None, min_new_tokens=None, seed=None, stop_tokens=None, temperature=None, top_k=None, min_p=None, top_p=None, truncate_prompt=None, response_format=None) model_name: str revision: str = 'main' dtype: str = 'bfloat16' tensor_parallel_size: typing.Annotated[int, Gt(gt=0)] = 1 data_parallel_size: typing.Annotated[int, Gt(gt=0)] = 1 pipeline_parallel_size: typing.Annotated[int, Gt(gt=0)] = 1 gpu_memory_utilization: typing.Annotated[float, Ge(ge=0)] = 0.9 max_model_length: typing.Optional[typing.Annotated[int, Gt(gt=0)]] = None swap_space: typing.Annotated[int, Gt(gt=0)] = 4 seed: typing.Annotated[int, Ge(ge=0)] = 1234 trust_remote_code: bool = False use_chat_template: bool = False add_special_tokens: bool = True multichoice_continuations_start_space: bool = True pairwise_tokenization: bool = False max_num_seqs: typing.Annotated[int, Gt(gt=0)] = 128 max_num_batched_tokens: typing.Annotated[int, Gt(gt=0)] = 2048 subfolder: str | None = None )

class lighteval.models.vllm.vllm_model.VLLMModel

< >

( config: VLLMModelConfig )

greedy_until

< >

( requests: list override_bs: typing.Optional[int] = None ) list[GenerateReturn]

引數

  • requests (list[Request]) — 包含上下文和結束條件的請求列表。
  • override_bs (int, optional) — 覆蓋生成的批次大小。預設為 None。

返回

list[GenerateReturn]

生成的響應列表。

使用貪婪解碼策略生成響應,直到滿足某些終止條件。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.