Lighteval 文档
任务
并获得增强的文档体验
开始使用
任务
LightevalTask
LightevalTaskConfig
class lighteval.tasks.lighteval_task.LightevalTaskConfig
< 源码 >( name: str prompt_function: typing.Callable[[dict, str], lighteval.tasks.requests.Doc | None] hf_repo: str hf_subset: str metric: list[lighteval.metrics.utils.metric_utils.Metric | lighteval.metrics.metrics.Metrics] | tuple[lighteval.metrics.utils.metric_utils.Metric | lighteval.metrics.metrics.Metrics, ...] hf_revision: typing.Optional[str] = None hf_filter: typing.Optional[typing.Callable[[dict], bool]] = None hf_avail_splits: typing.Union[list[str], tuple[str, ...], NoneType] = <factory> trust_dataset: bool = False evaluation_splits: list[str] | tuple[str, ...] = <factory> few_shots_split: typing.Optional[str] = None few_shots_select: typing.Optional[str] = None generation_size: typing.Optional[int] = None generation_grammar: typing.Optional[huggingface_hub.inference._generated.types.text_generation.TextGenerationInputGrammarType] = None stop_sequence: typing.Union[list[str], tuple[str, ...], NoneType] = None num_samples: typing.Optional[list[int]] = None suite: list[str] | tuple[str, ...] = <factory> original_num_docs: int = -1 effective_num_docs: int = -1 must_remove_duplicate_docs: bool = False version: int = 0 )
参数
- name (str) — 评估任务的简称。
- suite (list[str]) — 该任务所属的评估套件。
- prompt_function (Callable[[dict, str], Doc]) — 用于从评估数据集的每一行创建
Doc
样本的函数。 - hf_repo (str) — 包含评估信息的 Hub 数据集仓库路径。
- hf_subset (str) — 当前任务使用的子集,如果未选择,则为默认子集。
- hf_avail_splits (list[str]) — 评估数据集中所有可用的分割
- evaluation_splits (list[str]) — 本次评估实际使用的分割列表
- few_shots_split (str) — 用于采样少样本示例的分割名称
- few_shots_select (str) — 采样少样本示例的方法
- generation_size (int) — 生成内容允许的最大长度
- generation_grammar (TextGenerationInputGrammarType) — 用于根据语法生成补全的语法。目前仅适用于 TGI 和 Inference Endpoint 模型。
- metric (list[str]) — 当前任务的所有指标列表。
- stop_sequence (list[str]) — 中断生成式指标生成的停止序列。
- original_num_docs (int) — 任务中的文档数量
- effective_num_docs (int) — 特定评估中使用的文档数量
- truncated_num_docs (bool) — 是否使用了少于总文档数的文档
- trust_dataset (bool) — 执行时是否信任数据集
- version (int) — 任务的版本。默认为 0。如果底层数据集或提示发生变化,可以增加此版本号。
给定 `LightevalTask` 的存储配置。
LightevalTask
class lighteval.tasks.lighteval_task.LightevalTask
< 源码 >( name: str cfg: LightevalTaskConfig cache_dir: typing.Optional[str] = None )
返回一个字典,包含所有指标的指标名称及其聚合函数
construct_requests
< 源码 >( formatted_doc: Doc context: str document_id_seed: str current_task_name: str ) → dict[RequestType, List[Request]]
根据给定参数从任务中构建请求列表。
返回评估文档。
返回少样本示例。如果少样本示例不可用,则从少样本分割或评估分割中获取。
get_first_possible_fewshot_splits
< 源码 >( available_splits: list[str] | tuple[str, ...] number_of_splits: int = 1 ) → list[str]
按顺序解析可能的少样本分割键:首先是训练键,然后是验证键,并将它们与可用键进行匹配。返回第一个可用的键。
load_datasets
< 源码 >( tasks: list dataset_loading_processes: int = 1 )
从 HuggingFace Hub 为给定任务加载数据集。
PromptManager
class lighteval.tasks.prompt_manager.PromptManager
< 源码 >( task: LightevalTask lm: LightevalModel )
doc_to_fewshot_sorting_class
< 源码 >( formatted_doc: Doc ) → str
在某些情况下,选择少样本示例时,我们希望使用特定的文档类别,这些类别需要与目标分开指定。例如,一个正确答案是 json 的文档可能只想使用 json 中的一个键来定义少样本示例中的排序类别。否则,我们采用正确答案。
doc_to_target
< 源码 >( formatted_doc: Doc ) → str
返回给定文档的目标。
doc_to_text
< 源码 >( doc: Doc return_instructions: bool = False ) → str
返回不含指令的文档查询。如果文档有指令,则从查询中移除它们。
Registry
class lighteval.tasks.registry.Registry
< 源码 >( cache_dir: typing.Optional[str] = None custom_tasks: typing.Union[str, pathlib.Path, module, NoneType] = None )
Registry 类用于管理任务注册表和获取任务类。
expand_task_definition
< 源码 >( task_definition: str ) → list[str]
get_task_dict
< 源码 >( task_names: list ) → Dict[str, LightevalTask]
根据任务名称列表 (suite|task) 获取一个任务字典。
备注
- task_name_list 中的每个任务都将使用相应的任务类进行实例化。
get_task_instance
< source >( task_name: str ) → LightevalTask
根据任务名称 (suite|task) 获取任务类。
打印任务注册表中的所有任务。
请求
class lighteval.tasks.requests.Request
< source >( task_name: str sample_index: int request_index: int context: str metric_categories: list )
表示评估过程中特定任务、样本以及该样本内的请求。例如,在“boolq”任务中,样本为“太阳是热的吗?”,而针对该样本的请求是“太阳是热的吗?是”和“太阳是热的吗?否”。
class lighteval.tasks.requests.LoglikelihoodRequest
< source >( task_name: str sample_index: int request_index: int context: str metric_categories: list choice: str tokenized_context: list = None tokenized_continuation: list = None )
表示一个用于对数似然评估的请求。
class lighteval.tasks.requests.LoglikelihoodSingleTokenRequest
< source >( task_name: str sample_index: int request_index: int context: str metric_categories: list choices: list tokenized_context: list = None tokenized_continuation: list = None )
表示一个用于计算单个词元对数似然的请求。速度更快,因为我们可以一次性获得所有对数似然值。
class lighteval.tasks.requests.LoglikelihoodRollingRequest
< source >( task_name: str sample_index: int request_index: int context: str metric_categories: list tokenized_context: list = None tokenized_continuation: list = None )
表示一个用于滚动对数似然评估的请求。
继承自基础 Request 类。
class lighteval.tasks.requests.GreedyUntilRequest
< source >( task_name: str sample_index: int request_index: int context: str metric_categories: list stop_sequence: typing.Union[str, tuple[str], list[str]] generation_size: typing.Optional[int] generation_grammar: typing.Optional[huggingface_hub.inference._generated.types.text_generation.TextGenerationInputGrammarType] = None tokenized_context: list = None num_samples: int = None do_sample: bool = False use_logits: bool = False )
表示一个使用 Greedy-Until 算法生成文本的请求。
class lighteval.tasks.requests.GreedyUntilMultiTurnRequest
< source >( task_name: str sample_index: int request_index: int context: str metric_categories: list stop_sequence: str generation_size: int use_logits: bool = False )
表示一个使用 Greedy-Until 算法生成文本的请求。
数据集
get_original_order
< source >( new_arr: list ) → list
获取数据的原始顺序。
根据分割限制生成数据集分割的迭代器。
class lighteval.data.LoglikelihoodSingleTokenDataset
< source >( requests: list num_dataset_splits: int )
init_split_limits
< source >( num_dataset_splits ) → type
根据生成参数初始化分割限制。分割用于在评估时估算剩余时间,在生成式评估中,用于将相似的样本分组。
对于生成式任务,self._sorting_criteria 输出
- 一个布尔值(生成任务是否使用 logits)
- 一个列表(停止序列)
- 项目长度(实际的尺寸排序因子)。
在当前函数中,我们按生成参数(logits 和 eos)创建评估组,以便将具有相似属性的样本之后批处理在一起。然后,样本将在每个分割中按长度进一步组织。
class lighteval.data.GenerativeTaskDatasetNanotron
< source >( requests: list num_dataset_splits: int )
class lighteval.data.GenDistributedSampler
< source >( dataset: Dataset num_replicas: typing.Optional[int] = None rank: typing.Optional[int] = None shuffle: bool = True seed: int = 0 drop_last: bool = False )
一个分布式采样器,仅在 drop_last 为 False 时复制最后一个元素,以便在批处理中保留少量填充,因为我们的样本是按长度排序的。