Lighteval 文档
模型
并获得增强的文档体验
开始使用
模型
模型
LightevalModel
如果需要,进行清理操作,例如关闭端点。
greedy_until
< source >( requests: list override_bs: typing.Optional[int] = None ) → list[GenerativeResponse]
使用贪婪解码策略生成响应,直到满足某些结束条件。
使用贪婪解码策略生成响应,直到满足某些结束条件。
对上下文和延续进行分词,并计算这些分词序列的对数似然。
此函数用于计算困惑度指标的上下文的对数似然。
对上下文和延续进行分词,并计算这些分词序列的对数似然。
tok_encode_pair
< source >( context continuation pairwise: bool = 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
< source >( 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_pretrained
的pretrained_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
< source >( env_config: EnvConfig config: TransformersModelConfig )
greedy_until
< source >( requests: list override_bs: typing.Optional[int] = None ) → list[GenerativeResponse]
使用贪婪解码策略生成响应,直到满足某些结束条件。
计算与 model_parallel 相关的所有参数
loglikelihood
< source >( requests: list override_bs: typing.Optional[int] = None ) → list[Tuple[float, bool]]
对上下文和延续进行分词,并计算这些分词序列的对数似然。
loglikelihood_single_token
< source >( requests: list override_bs: typing.Optional[int] = None ) → list[Tuple[float, bool]]
对上下文和延续进行分词,并计算这些分词序列的对数似然。
pad_and_gather
< source >( output_tensor: Tensor drop_last_samples: bool = True num_samples: int = None ) → torch.Tensor
将 output_tensor
填充到最大长度,并在不同进程之间收集长度。
prepare_batch_logprob
< source >( 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
< source >( 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
< source >( env_config: EnvConfig config: TransformersModelConfig )
DeltaModel
class lighteval.models.transformers.delta_model.DeltaModelConfig
< source >( 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
< source >( env_config: EnvConfig config: TransformersModelConfig )
基于端点的模型
InferenceEndpointModel
class lighteval.models.endpoints.endpoint_model.InferenceEndpointModelConfig
< source >( 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
< source >( path: str ) → InferenceEndpointModelConfig
从 YAML 文件路径加载推理端点模型的配置。
class lighteval.models.endpoints.endpoint_model.ServerlessEndpointModelConfig
< source >( model_name: str add_special_tokens: bool = True generation_parameters: GenerationParameters = None )
class lighteval.models.endpoints.endpoint_model.InferenceEndpointModel
< source >( 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
< source >( inference_server_address: str inference_server_auth: str model_id: str generation_parameters: GenerationParameters = None )
Open AI 模型
class lighteval.models.endpoints.openai_model.OpenAIClient
< source >( config: OpenAIModelConfig env_config )
greedy_until
< source >( requests: list override_bs: typing.Optional[int] = None ) → list[GenerativeResponse]
使用贪婪解码策略生成响应,直到满足某些结束条件。
Nanotron 模型
NanotronLightevalModel
class lighteval.models.nanotron.nanotron_model.NanotronLightevalModel
< source >( 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 )
收集分布在不同 GPU 上(可能)大小不同的张量(首先交换长度,然后填充和收集)
greedy_until
< source >( requests: typing.List[lighteval.tasks.requests.GreedyUntilRequest] disable_tqdm: bool = False override_bs: int = -1 num_dataset_splits: int = 1 )
贪婪生成直到生成停止标记。
结束条件以几种可能的格式提交。默认情况下,在 lighteval 中,我们将它们作为元组传递(停止序列,最大项目数)。在 harness 中,它们有时作为字典 {"until": .., "max_length": ...} 或仅作为结束条件(列表或字符串)传递。在这里,我们将所有这些格式转换为包含结束条件列表的元组,以及允许的最大长度浮点数。
loglikelihood_single_token
< source >( requests: typing.List[typing.Tuple[str, dict]] override_bs = 0 ) → List[Tuple[float, bool]]
对上下文和延续进行分词,并计算这些分词序列的对数似然。
收集分布在不同 GPU 上(可能)大小不同的张量(首先交换长度,然后填充和收集)
prepare_batch
< source >( 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
< source >( 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
< source >( config: VLLMModelConfig env_config: EnvConfig )
greedy_until
< source >( requests: list override_bs: typing.Optional[int] = None ) → list[GenerateReturn]
使用贪婪解码策略生成响应,直到满足某些结束条件。