Lighteval 文档

模型

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型

模型

LightevalModel

class lighteval.models.abstract_model.LightevalModel

< >

( )

清理

< >

( )

如果需要,进行清理操作,例如关闭端点。

greedy_until

< >

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

参数

  • requests (list[Request]) — 包含上下文和结束条件的请求列表。
  • disable_tqdm (bool, optional) — 是否禁用进度条。默认为 False。
  • override_bs (int, optional) — 覆盖生成时的批大小。默认为 None。

返回

list[GenerativeResponse]

生成的响应列表。

使用贪婪解码策略生成响应,直到满足某些结束条件。

greedy_until_multi_turn

< >

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

使用贪婪解码策略生成响应,直到满足某些结束条件。

loglikelihood

< >

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

对上下文和延续进行分词,并计算这些分词序列的对数似然。

loglikelihood_rolling

< >

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

此函数用于计算困惑度指标的上下文的对数似然。

loglikelihood_single_token

< >

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

对上下文和延续进行分词,并计算这些分词序列的对数似然。

tok_encode_pair

< >

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

参数

  • context (str) — 要编码的上下文字符串。
  • continuation (str) — 要编码的延续字符串。
  • pairwise (bool) — 如果为 True,则分别编码上下文和延续。如果为 False,则将它们一起编码,然后拆分。

返回

Tuple[TokenSequence, TokenSequence]

包含编码后的上下文和延续的元组。

通过处理中间的空格来编码上下文、延续对。

成对的优势在于:1) 它更好地与 LLM 预测 token 的方式对齐 2) 在 len(tok(context,cont)) != len(tok(context)) + len(tok(continuation)) 的情况下工作。例如,如果上下文/延续之间没有空格,中文可能会发生这种情况

Accelerate 和 Transformers 模型

TransformersModel

class lighteval.models.transformers.transformers_model.TransformersModelConfig

< >

( pretrained: str accelerator: Accelerator = None tokenizer: typing.Optional[str] = None multichoice_continuations_start_space: typing.Optional[bool] = None pairwise_tokenization: bool = False subfolder: typing.Optional[str] = None revision: str = 'main' batch_size: int = -1 max_gen_toks: typing.Optional[int] = 256 max_length: typing.Optional[int] = None add_special_tokens: bool = True model_parallel: typing.Optional[bool] = None dtype: typing.Union[str, torch.dtype, NoneType] = None device: typing.Union[int, str] = 'cuda' quantization_config: typing.Optional[transformers.utils.quantization_config.BitsAndBytesConfig] = None trust_remote_code: bool = False use_chat_template: bool = False compile: bool = False generation_parameters: GenerationParameters = None generation_config: GenerationConfig = None )

参数

  • pretrained (str) — HuggingFace Hub 模型 ID 名称或要加载的预训练模型的路径。这实际上是 HuggingFace transformers API 中 from_pretrainedpretrained_model_name_or_path 参数。
  • accelerator (Accelerator) — 用于模型训练的加速器。
  • tokenizer (Optional[str]) — 将用于分词的 HuggingFace Hub tokenizer 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]) — 要生成的最大 token 数。
  • max_length (Optional[int]) — 生成输出的最大长度。
  • add_special_tokens (bool, optional, defaults to True) — 是否向输入序列添加特殊 token。 如果为 None,则 seq2seq 模型(例如 T5)的默认值将设置为 True,因果模型将设置为 False
  • model_parallel (bool, optional, defaults to False) — True/False:强制使用或不使用 accelerate 库在多个设备上加载大型模型。 默认值:None,对应于比较进程数和 GPU 数。 如果前者较小 => 模型并行,否则不并行。
  • dtype (Union[str, torch.dtype], optional, defaults to 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

< >

( env_config: EnvConfig config: TransformersModelConfig )

greedy_until

< >

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

参数

  • requests (list[Request]) — 包含上下文和结束条件的请求列表。
  • override_bs (int, optional) — 覆盖生成批次大小。 默认为 None。

返回

list[GenerativeResponse]

生成的响应列表。

使用贪婪解码策略生成响应,直到满足某些结束条件。

init_model_parallel

< >

( model_parallel: bool | None = None )

计算与 model_parallel 相关的所有参数

loglikelihood

< >

( requests: list override_bs: typing.Optional[int] = None ) list[Tuple[float, bool]]

参数

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

返回

list[Tuple[float, bool]]

描述

对上下文和延续进行分词,并计算这些分词序列的对数似然。

loglikelihood_single_token

< >

( requests: list override_bs: typing.Optional[int] = None ) 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) — 是否在收集期间删除最后一个样本。
  • Last 当样本数量无法被进程数整除时,最后的样本将被丢弃。— 默认为 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

< >

( pretrained: str accelerator: Accelerator = None tokenizer: typing.Optional[str] = None multichoice_continuations_start_space: typing.Optional[bool] = None pairwise_tokenization: bool = False subfolder: typing.Optional[str] = None revision: str = 'main' batch_size: int = -1 max_gen_toks: typing.Optional[int] = 256 max_length: typing.Optional[int] = None add_special_tokens: bool = True model_parallel: typing.Optional[bool] = None dtype: typing.Union[str, torch.dtype, NoneType] = None device: typing.Union[int, str] = 'cuda' quantization_config: typing.Optional[transformers.utils.quantization_config.BitsAndBytesConfig] = None trust_remote_code: bool = False use_chat_template: bool = False compile: bool = False generation_parameters: GenerationParameters = None generation_config: GenerationConfig = None base_model: str = None )

class lighteval.models.transformers.adapter_model.AdapterModel

< >

( env_config: EnvConfig config: TransformersModelConfig )

DeltaModel

class lighteval.models.transformers.delta_model.DeltaModelConfig

< >

( pretrained: str accelerator: Accelerator = None tokenizer: typing.Optional[str] = None multichoice_continuations_start_space: typing.Optional[bool] = None pairwise_tokenization: bool = False subfolder: typing.Optional[str] = None revision: str = 'main' batch_size: int = -1 max_gen_toks: typing.Optional[int] = 256 max_length: typing.Optional[int] = None add_special_tokens: bool = True model_parallel: typing.Optional[bool] = None dtype: typing.Union[str, torch.dtype, NoneType] = None device: typing.Union[int, str] = 'cuda' quantization_config: typing.Optional[transformers.utils.quantization_config.BitsAndBytesConfig] = None trust_remote_code: bool = False use_chat_template: bool = False compile: bool = False generation_parameters: GenerationParameters = None generation_config: GenerationConfig = None base_model: str = None )

class lighteval.models.transformers.delta_model.DeltaModel

< >

( env_config: EnvConfig config: TransformersModelConfig )

基于端点的模型

InferenceEndpointModel

class lighteval.models.endpoints.endpoint_model.InferenceEndpointModelConfig

< >

( endpoint_name: str = None model_name: str = None reuse_existing: bool = False accelerator: str = 'gpu' model_dtype: str = None vendor: str = 'aws' region: str = 'us-east-1' instance_size: str = None instance_type: str = None framework: str = 'pytorch' endpoint_type: str = 'protected' add_special_tokens: bool = True revision: str = 'main' namespace: str = None image_url: str = None env_vars: dict = None generation_parameters: GenerationParameters = None )

from_path

< >

( path: str ) InferenceEndpointModelConfig

参数

  • path (str) — 模型配置 YAML 文件的路径。

返回

InferenceEndpointModelConfig

推理端点模型的配置。

从 YAML 文件路径加载推理端点模型的配置。

class lighteval.models.endpoints.endpoint_model.ServerlessEndpointModelConfig

< >

( model_name: str add_special_tokens: bool = True generation_parameters: GenerationParameters = None )

class lighteval.models.endpoints.endpoint_model.InferenceEndpointModel

< >

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

InferenceEndpointModels 既可以与免费的推理客户端一起使用,也可以与推理端点一起使用,后者将使用 text-generation-inference 在评估期间部署您的模型。

TGI ModelClient

class lighteval.models.endpoints.tgi_model.TGIModelConfig

< >

( inference_server_address: str inference_server_auth: str model_id: str generation_parameters: GenerationParameters = None )

from_path

from_path

( path: str ) TGIModelConfig

参数

  • path (str) — 模型配置 YAML 文件的路径。

返回

TGIModelConfig

TGI 端点模型的配置。

从 YAML 文件路径加载 TGI 端点模型的配置。

class lighteval.models.endpoints.tgi_model.ModelClient

< >

( config: TGIModelConfig )

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]

生成的响应列表。

使用贪婪解码策略生成响应,直到满足某些结束条件。

Nanotron 模型

NanotronLightevalModel

class lighteval.models.nanotron.nanotron_model.NanotronLightevalModel

< >

( checkpoint_path: str nanotron_config: FullNanotronConfig parallel_context: ParallelContext max_gen_toks: typing.Optional[int] = 256 max_length: typing.Optional[int] = None add_special_tokens: typing.Optional[bool] = True dtype: typing.Union[str, torch.dtype, NoneType] = None trust_remote_code: bool = False debug_one_layer_model: bool = False model_class: typing.Optional[typing.Type] = None env_config: EnvConfig = None )

收集

< >

( output_tensor: Tensor process_group: dist.ProcessGroup = None )

收集分布在不同 GPU 上(可能)大小不同的张量(首先交换长度,然后填充和收集)

greedy_until

< >

( requests: typing.List[lighteval.tasks.requests.GreedyUntilRequest] disable_tqdm: bool = False override_bs: int = -1 num_dataset_splits: int = 1 )

贪婪生成直到生成停止标记。

homogeneize_ending_conditions

< >

( ending_condition: tuple | dict | list | str )

结束条件以几种可能的格式提交。默认情况下,在 lighteval 中,我们将它们作为元组传递(停止序列,最大项目数)。在 harness 中,它们有时作为字典 {"until": .., "max_length": ...} 或仅作为结束条件(列表或字符串)传递。在这里,我们将所有这些格式转换为包含结束条件列表的元组,以及允许的最大长度浮点数。

loglikelihood_single_token

< >

( requests: typing.List[typing.Tuple[str, dict]] override_bs = 0 ) List[Tuple[float, bool]]

参数

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

返回

List[Tuple[float, bool]]

描述

对上下文和延续进行分词,并计算这些分词序列的对数似然。

pad_and_gather

< >

( output_tensor: Tensor )

收集分布在不同 GPU 上(可能)大小不同的张量(首先交换长度,然后填充和收集)

prepare_batch

< >

( batch: typing.List[str] padding_length: int max_context: typing.Optional[int] = None full_attention_masks: bool = False pad_on_left: bool = False )

对一批输入进行分词,并返回长度、截断和填充

我们截断以仅保留最多 max_context 个标记,我们填充到 padding_length 个标记

VLLM 模型

VLLMModel

class lighteval.models.vllm.vllm_model.VLLMModelConfig

< >

( pretrained: str gpu_memory_utilization: float = 0.9 revision: str = 'main' dtype: str | None = None tensor_parallel_size: int = 1 pipeline_parallel_size: int = 1 data_parallel_size: int = 1 max_model_length: int | None = None swap_space: int = 4 seed: int = 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 generation_parameters: GenerationParameters = None subfolder: typing.Optional[str] = None )

class lighteval.models.vllm.vllm_model.VLLMModel

< >

( config: VLLMModelConfig env_config: EnvConfig )

greedy_until

< >

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

参数

  • requests (list[Request]) — 包含上下文和结束条件的请求列表。
  • override_bs (int, optional) — 覆盖生成时的批次大小。默认为 None。

返回

list[GenerateReturn]

生成的响应列表。

使用贪婪解码策略生成响应,直到满足某些结束条件。

< > 在 GitHub 上更新