Lighteval 文档
任务
并获得增强的文档体验
开始使用
任务
LightevalTask
LightevalTaskConfig
class lighteval.tasks.lighteval_task.LightevalTaskConfig
< source >( 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 和推理端点模型。
- 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
< source >( name: str cfg: LightevalTaskConfig cache_dir: typing.Optional[str] = None )
为所有指标返回包含指标名称及其聚合函数的字典。
construct_requests
< source >( formatted_doc: Doc context: str document_id_seed: str current_task_name: str ) → dict[RequestType, List[Request]]
根据给定的参数,从任务中构建请求列表。
返回评估文档。
返回少样本文档。如果少样本文档不可用,则从少样本拆分或评估拆分中获取。
get_first_possible_fewshot_splits
< source >( available_splits: list[str] | tuple[str, ...] number_of_splits: int = 1 ) → list[str]
按顺序解析可能的少样本拆分键:train,然后是验证键,并将它们与可用的键匹配。返回第一个可用的。
load_datasets
< source >( tasks: list dataset_loading_processes: int = 1 )
从 HuggingFace Hub 为给定任务加载数据集。
PromptManager
class lighteval.tasks.prompt_manager.PromptManager
< source >( task: LightevalTask lm: LightevalModel )
doc_to_fewshot_sorting_class
< source >( formatted_doc: Doc ) → str
在某些情况下,当选择少样本示例时,我们希望使用特定的文档类别,这些类别需要与目标分开指定。例如,黄金标准为 json 格式的文档可能只想使用 json 的其中一个键来定义少样本示例中的排序类别。否则,我们将采用黄金标准。
doc_to_target
< source >( formatted_doc: Doc ) → str
返回给定文档的目标。
doc_to_text
< source >( doc: Doc return_instructions: bool = False ) → str
返回不包含指令的文档查询。如果文档包含指令,则从查询中移除它们
注册表
class lighteval.tasks.registry.Registry
< source >( cache_dir: typing.Optional[str] = None custom_tasks: typing.Union[str, pathlib.Path, module, NoneType] = None )
Registry 类用于管理任务注册表并获取任务类。
expand_task_definition
< source >( task_definition: str ) → list[str]
get_task_dict
< source >( 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
获取数据的原始顺序。
get_split_start_end
< source >( split_id: int ) → tuple
获取数据集 split 的起始和结束索引。
迭代器,产生每个数据集 split 的起始和结束索引。还会更新每个 split 的起始批次大小(尝试在每次移动到新的 split 时将批次大小加倍)。
class lighteval.data.LoglikelihoodSingleTokenDataset
< source >( requests: list num_dataset_splits: int )
init_split_limits
< source >( num_dataset_splits ) → type
根据生成参数初始化 split 限制。Split 用于在评估时估计剩余时间,并且在生成式评估的情况下,将相似的样本分组在一起。
对于生成式任务,self._sorting_criteria 输出
- 一个布尔值(指示生成任务是否使用 logits)
- 一个列表(停止序列)
- 项目长度(实际大小排序因子)。
在当前函数中,我们通过生成参数(logits 和 eos)创建评估组,以便将具有相似属性的样本稍后批处理在一起。然后,样本将在每个 split 中按长度进一步组织。
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 时,分布式采样器仅复制最后一个元素,以便我们在批次中保留少量填充,因为我们的样本按长度排序。