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

© . This site is unofficial and not affiliated with Hugging Face, Inc.