Lighteval 文档

任务

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

任务

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 )

aggregation

< >

( )

返回一个字典,包含所有指标的指标名称及其聚合函数

construct_requests

< >

( formatted_doc: Doc context: str document_id_seed: str current_task_name: str ) dict[RequestType, List[Request]]

参数

  • formatted_doc (Doc) — 几乎直接来自数据集的格式化文档。
  • ctx (str) — 上下文,即少样本示例加上查询。
  • document_id_seed (str) — 任务中文档的索引,附加了用于少样本采样的种子。
  • current_task_name (str) — 当前任务的名称。

返回

dict[RequestType, List[Request]]

请求列表。

根据给定参数从任务中构建请求列表。

eval_docs

< >

( ) list[Doc]

返回

list[Doc]

评估文档。

返回评估文档。

fewshot_docs

< >

( ) list[Doc]

返回

list[Doc]

将用于少样本示例的文档。一个文档 = 一个少样本示例。

返回少样本示例。如果少样本示例不可用,则从少样本分割或评估分割中获取。

get_first_possible_fewshot_splits

< >

( available_splits: list[str] | tuple[str, ...] number_of_splits: int = 1 ) list[str]

参数

  • number_of_splits (int, 可选) — 要返回的分割数。默认为 1。

返回

list[str]

首批可用的少样本分割列表。

按顺序解析可能的少样本分割键:首先是训练键,然后是验证键,并将它们与可用键进行匹配。返回第一个可用的键。

load_datasets

< >

( tasks: list dataset_loading_processes: int = 1 )

参数

  • 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

参数

  • formatted_doc (Doc) — 格式化文档。

返回

字符串

少样本示例文档的类别

在某些情况下,选择少样本示例时,我们希望使用特定的文档类别,这些类别需要与目标分开指定。例如,一个正确答案是 json 的文档可能只想使用 json 中的一个键来定义少样本示例中的排序类别。否则,我们采用正确答案。

doc_to_target

< >

( formatted_doc: Doc ) str

参数

  • formatted_doc (Doc) — 格式化文档。

返回

字符串

文档的目标,即文档的正确答案。

返回给定文档的目标。

doc_to_text

< >

( doc: Doc return_instructions: bool = False ) str

参数

  • doc (Doc) — 文档类,包含查询和指令。

返回

字符串

不含指令的文档查询。

返回不含指令的文档查询。如果文档有指令,则从查询中移除它们。

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]

参数

  • task_definition (str) — 要扩展的任务定义。格式如下:
    • suite|task
    • suite|task_superset (例如 lighteval|mmlu,它将运行所有 mmlu 子任务)

返回

list[str]

任务名称列表 (suite|task)

get_task_dict

< >

( task_names: list ) Dict[str, LightevalTask]

参数

  • task_name_list (List[str]) — 任务名称列表 (suite|task)。

返回

Dict[str, LightevalTask]

一个包含任务的字典。

根据任务名称列表 (suite|task) 获取一个任务字典。

备注

  • task_name_list 中的每个任务都将使用相应的任务类进行实例化。

get_task_instance

< >

( task_name: str ) LightevalTask

参数

  • task_name (str) — 任务名称 (suite|task)。

返回

LightevalTask

任务类。

引发

ValueError

  • ValueError — 如果在任务注册表或自定义任务注册表中未找到该任务。

根据任务名称 (suite|task) 获取任务类。

print_all_tasks

< >

( )

打印任务注册表中的所有任务。

请求

class lighteval.tasks.requests.Request

< >

( task_name: str sample_index: int request_index: int context: str metric_categories: list )

参数

  • task_name (str) — 任务的名称。
  • sample_index (int) — 样本的索引。
  • request_index (int) — 请求的索引。
  • context (str) — 请求的上下文。
  • metric_categories (list[MetricCategory]) — 与此请求相关的所有指标类别

表示评估过程中特定任务、样本以及该样本内的请求。例如,在“boolq”任务中,样本为“太阳是热的吗?”,而针对该样本的请求是“太阳是热的吗?是”和“太阳是热的吗?否”。

class lighteval.tasks.requests.LoglikelihoodRequest

< >

( task_name: str sample_index: int request_index: int context: str metric_categories: list choice: str tokenized_context: list = None tokenized_continuation: list = None )

参数

  • choice (str) — 用于评估对数似然的选项。
  • request_type (RequestType) — 请求的类型 (LOGLIKELIHOOD)。

表示一个用于对数似然评估的请求。

class lighteval.tasks.requests.LoglikelihoodSingleTokenRequest

< >

( task_name: str sample_index: int request_index: int context: str metric_categories: list choices: list tokenized_context: list = None tokenized_continuation: list = None )

参数

  • choices (list[str]) — 词元选项列表。
  • request_type (RequestType) — 请求的类型。

表示一个用于计算单个词元对数似然的请求。速度更快,因为我们可以一次性获得所有对数似然值。

class lighteval.tasks.requests.LoglikelihoodRollingRequest

< >

( 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

< >

( 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 )

参数

  • stop_sequence (str) — 表示何时停止生成文本的词元序列。
  • generation_size (int) — 要生成的最大词元数。
  • generation_grammar (TextGenerationInputGrammarType) — 用于生成补全的语法。目前仅适用于 TGI 模型。
  • request_type (RequestType) — 请求的类型,设置为 RequestType.GREEDY_UNTIL。

表示一个使用 Greedy-Until 算法生成文本的请求。

class lighteval.tasks.requests.GreedyUntilMultiTurnRequest

< >

( task_name: str sample_index: int request_index: int context: str metric_categories: list stop_sequence: str generation_size: int use_logits: bool = False )

参数

  • stop_sequence (str) — 表示何时停止生成文本的词元序列。
  • generation_size (int) — 要生成的最大词元数。
  • request_type (RequestType) — 请求的类型,设置为 RequestType.GREEDY_UNTIL。

表示一个使用 Greedy-Until 算法生成文本的请求。

数据集

class lighteval.data.DynamicBatchDataset

< >

( requests: list num_dataset_splits: int )

get_original_order

< >

( new_arr: list ) list

参数

  • newarr (list) — 包含任何类型数据的数组,需要恢复到原始顺序。

返回

list

原始顺序的 new_arr。

获取数据的原始顺序。

splits_iterator

< >

( ) Subset

产生

Subset

根据分割限制生成数据集分割的迭代器。

class lighteval.data.LoglikelihoodDataset

< >

( requests: list num_dataset_splits: int )

class lighteval.data.LoglikelihoodSingleTokenDataset

< >

( requests: list num_dataset_splits: int )

class lighteval.data.GenerativeTaskDataset

< >

( requests: list num_dataset_splits: int )

init_split_limits

< >

( num_dataset_splits ) type

参数

  • num_dataset_splits (type) — description

返回

类型

description

根据生成参数初始化分割限制。分割用于在评估时估算剩余时间,在生成式评估中,用于将相似的样本分组。

对于生成式任务,self._sorting_criteria 输出

  • 一个布尔值(生成任务是否使用 logits)
  • 一个列表(停止序列)
  • 项目长度(实际的尺寸排序因子)。

在当前函数中,我们按生成参数(logits 和 eos)创建评估组,以便将具有相似属性的样本之后批处理在一起。然后,样本将在每个分割中按长度进一步组织。

class lighteval.data.GenerativeTaskDatasetNanotron

< >

( requests: list num_dataset_splits: int )

class lighteval.data.GenDistributedSampler

< >

( 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 时复制最后一个元素,以便在批处理中保留少量填充,因为我们的样本是按长度排序的。

< > 在 GitHub 上更新