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 時複製最後一個元素,以便在批處理中保留少量填充,因為我們的樣本是按長度排序的。