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 和推理端点模型。
  • 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]]

参数

  • 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]

第一个可用的少样本拆分列表。

按顺序解析可能的少样本拆分键:train,然后是验证键,并将它们与可用的键匹配。返回第一个可用的。

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) — 格式化文档。

返回

str

少样本文档的类别

在某些情况下,当选择少样本示例时,我们希望使用特定的文档类别,这些类别需要与目标分开指定。例如,黄金标准为 json 格式的文档可能只想使用 json 的其中一个键来定义少样本示例中的排序类别。否则,我们将采用黄金标准。

doc_to_target

< >

( formatted_doc: Doc ) str

参数

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

返回

str

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

返回给定文档的目标。

doc_to_text

< >

( doc: Doc return_instructions: bool = False ) str

参数

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

返回

str

不包含指令的文档查询。

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

注册表

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

任务类。

Raises

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) — 指示何时停止生成文本的 token 序列。
  • generation_size (int) — 要生成的最大 token 数。
  • 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) — 指示何时停止生成文本的 token 序列。
  • generation_size (int) — 要生成的最大 token 数。
  • 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。

获取数据的原始顺序。

get_split_start_end

< >

( split_id: int ) tuple

参数

  • split_id (int) — split 的 ID。

返回

tuple

包含 split 的起始和结束索引的元组。

获取数据集 split 的起始和结束索引。

splits_start_end_iterator

< >

( ) tuple

Yields

tuple

迭代器,产生每个数据集 split 的起始和结束索引。还会更新每个 split 的起始批次大小(尝试在每次移动到新的 split 时将批次大小加倍)。

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

返回

type

description

根据生成参数初始化 split 限制。Split 用于在评估时估计剩余时间,并且在生成式评估的情况下,将相似的样本分组在一起。

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

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

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

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 上更新