Lighteval 文档

指标

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

指标

指标

指标

class lighteval.metrics.Metric

< >

( metric_name: str higher_is_better: bool category: MetricCategory use_case: MetricUseCase sample_level_fn: <built-in function callable> corpus_level_fn: <built-in function callable> )

CorpusLevelMetric

class lighteval.metrics.utils.metric_utils.CorpusLevelMetric

< >

( metric_name: str higher_is_better: bool category: MetricCategory use_case: MetricUseCase sample_level_fn: <built-in function callable> corpus_level_fn: <built-in function callable> )

指标在整个语料库上计算,计算发生在聚合阶段

SampleLevelMetric

class lighteval.metrics.utils.metric_utils.SampleLevelMetric

< >

( metric_name: str higher_is_better: bool category: MetricCategory use_case: MetricUseCase sample_level_fn: <built-in function callable> corpus_level_fn: <built-in function callable> )

指标按样本计算,然后在整个语料库上聚合

MetricGrouping

class lighteval.metrics.utils.metric_utils.MetricGrouping

< >

( metric_name: list higher_is_better: dict category: MetricCategory use_case: MetricUseCase sample_level_fn: <built-in function callable> corpus_level_fn: dict )

有些指标一起计算更具优势。例如,如果所有指标的代价高昂的预处理是相同的,那么一次性计算更有意义。

CorpusLevelMetricGrouping

class lighteval.metrics.utils.metric_utils.CorpusLevelMetricGrouping

< >

( metric_name: list higher_is_better: dict category: MetricCategory use_case: MetricUseCase sample_level_fn: <built-in function callable> corpus_level_fn: dict )

MetricGrouping 在整个语料库上计算,计算发生在聚合阶段

SampleLevelMetricGrouping

class lighteval.metrics.utils.metric_utils.SampleLevelMetricGrouping

< >

( metric_name: list higher_is_better: dict category: MetricCategory use_case: MetricUseCase sample_level_fn: <built-in function callable> corpus_level_fn: dict )

MetricGrouping 按样本计算,然后在整个语料库上聚合

语料库指标

CorpusLevelF1Score

class lighteval.metrics.metrics_corpus.CorpusLevelF1Score

< >

( average: str num_classes: int = 2 )

compute

< >

( items: list )

通过使用 scikit learn 实现,计算整个语料库生成项的指标分数。

CorpusLevelPerplexityMetric

class lighteval.metrics.metrics_corpus.CorpusLevelPerplexityMetric

< >

( metric_type: str )

compute

< >

( items: list )

计算整个语料库生成项的指标分数。

语料库级别翻译指标

class lighteval.metrics.metrics_corpus.CorpusLevelTranslationMetric

< >

( metric_type: str lang: typing.Literal['zh', 'ja', 'ko', ''] = '' )

compute

< >

( items: list )

计算通过使用 sacrebleu 实现,在所有语料库生成的条目上的指标分数。

matthews_corrcoef

lighteval.metrics.metrics_corpus.matthews_corrcoef

< >

( items: list ) float

参数

  • items (list[dict]) — GenerativeCorpusMetricInput 列表

返回

float

分数

计算马修斯相关系数,使用 scikit learn (文档)。

示例指标

精确匹配

class lighteval.metrics.metrics_sample.ExactMatches

< >

( aggregation_function: typing.Callable[[list[float]], float] = <built-in function max> normalize_gold: typing.Optional[typing.Callable[[str], str]] = None normalize_pred: typing.Optional[typing.Callable[[str], str]] = None strip_strings: bool = False type_exact_match: str = 'full' )

compute

< >

( golds: list predictions: list **kwargs ) float

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — 预测字符串

返回

float

当前样本条目的聚合分数。

计算单个样本的一系列 gold 和 prediction 的指标。

compute_one_item

< >

( gold: str pred: str ) float

参数

  • gold (str) — 可能的参考之一
  • pred (str) — 可能的预测之一

返回

float

精确匹配分数。匹配时为 1,否则为 0。

仅比较两个字符串。

F1_score

class lighteval.metrics.metrics_sample.F1_score

< >

( aggregation_function: typing.Callable[[list[float]], float] = <built-in function max> normalize_gold: typing.Optional[typing.Callable[[str], str]] = None normalize_pred: typing.Optional[typing.Callable[[str], str]] = None strip_strings: bool = False )

compute

< >

( golds: list predictions: list **kwargs ) float

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — 预测字符串

返回

float

当前样本条目的聚合分数。

计算单个样本的一系列 gold 和 prediction 的指标。

compute_one_item

< >

( gold: str pred: str ) float

参数

  • gold (str) — 可能的参考之一
  • pred (str) — 可能的预测之一

返回

float

使用 nltk 计算的词袋模型上的 f1 分数。

仅比较两个字符串。

Log似然准确率

class lighteval.metrics.metrics_sample.LoglikelihoodAcc

< >

( logprob_normalization: lighteval.metrics.normalizations.LogProbCharNorm | lighteval.metrics.normalizations.LogProbTokenNorm | lighteval.metrics.normalizations.LogProbPMINorm | None = None )

compute

< >

( gold_ixs: list choices_logprob: list unconditioned_logprob: list[float] | None choices_tokens: list[list[int]] | None formatted_doc: Doc **kwargs ) int

参数

  • gold_ixs (list[int]) — 所有 gold 选项的索引
  • choices_logprob (list[float]) — 模型所有可能选项的对数概率之和,按选项排序。
  • unconditioned_logprob (list[float] | None) — 用于PMI归一化的无条件对数概率,按选项排序。
  • choices_tokens (list[list[int]] | None) — 用于token归一化的分词选项,按选项排序。
  • formatted_doc (Doc) — 样本的原始文档。用于获取原始选项的长度,以便进行可能的归一化。

返回

int

评估得分:如果最佳对数概率选项在gold中,则为1,否则为0。

计算对数似然准确率:在 choices_logprob 中具有最高对数概率的选项是否在 gold_ixs 中?

NormalizedMultiChoiceProbability

class lighteval.metrics.metrics_sample.NormalizedMultiChoiceProbability

< >

( log_prob_normalization: lighteval.metrics.normalizations.LogProbCharNorm | lighteval.metrics.normalizations.LogProbTokenNorm | lighteval.metrics.normalizations.LogProbPMINorm | None = None aggregation_function: typing.Callable[[numpy.ndarray], float] = <function max at 0x7f5a4be07570> )

compute

< >

( gold_ixs: list choices_logprob: list unconditioned_logprob: list[float] | None choices_tokens: list[list[int]] | None formatted_doc: Doc **kwargs ) float

参数

  • gold_ixs (list[int]) — 所有正确选项的索引
  • choices_logprob (list[float]) — 模型所有可能选项的对数概率之和,按选项排序。
  • unconditioned_logprob (list[float] | None) — 用于PMI归一化的无条件对数概率,按选项排序。
  • choices_tokens (list[list[int]] | None) — 用于token归一化的分词选项,按选项排序。
  • formatted_doc (Doc) — 样本的原始文档。用于获取原始选项的长度,以便进行可能的归一化。

返回

float

最佳对数概率选项为正确选项的概率。

计算对数似然概率:选择最佳选项的概率。

Probability

class lighteval.metrics.metrics_sample.Probability

< >

( normalization: lighteval.metrics.normalizations.LogProbTokenNorm | None = None aggregation_function: typing.Callable[[numpy.ndarray], float] = <function max at 0x7f5a4be07570> )

compute

< >

( logprobs: list target_tokens: list **kwargs ) float

参数

  • gold_ixs (list[int]) — 所有正确选项的索引
  • choices_logprob (list[float]) — 模型所有可能选项的对数概率之和,按选项排序。
  • unconditioned_logprob (list[float] | None) — 用于PMI归一化的无条件对数概率,按选项排序。
  • choices_tokens (list[list[int]] | None) — 用于token归一化的分词选项,按选项排序。
  • formatted_doc (Doc) — 样本的原始文档。用于获取原始选项的长度,以便进行可能的归一化。

返回

float

最佳对数概率选项为正确选项的概率。

计算对数似然概率:选择最佳选项的概率。

Recall

class lighteval.metrics.metrics_sample.Recall

< >

( at: int )

compute

< >

( choices_logprob: list gold_ixs: list **kwargs ) int

参数

  • gold_ixs (list[int]) — 所有正确选项的索引
  • choices_logprob (list[float]) — 模型所有可能选项的对数概率之和,按选项排序。

返回

int

得分:如果其中一个最高层级的预测选项正确,则为1,否则为0。

计算请求深度级别的召回率:查看 `n` 个最佳预测选项(具有最高的对数概率),并查看其中是否有一个实际的正确选项。

MRR

class lighteval.metrics.metrics_sample.MRR

< >

( length_normalization: bool = False )

compute

< >

( choices_logprob: list gold_ixs: list formatted_doc: Doc **kwargs ) float

参数

  • gold_ixs (list[int]) — 所有正确选项的索引
  • choices_logprob (list[float]) — 模型所有可能选择的对数概率之和,按选项排序。
  • formatted_doc (Doc) — 样本的原始文档。用于获取原始选项的长度,以便进行可能的归一化

返回

float

MRR 分数。

平均倒数排名。衡量选项排名的质量(按正确性排序)。

ROUGE

class lighteval.metrics.metrics_sample.ROUGE

< >

( methods: str | list[str] multiple_golds: bool = False bootstrap: bool = False normalize_gold: <built-in function callable> = None normalize_pred: <built-in function callable> = None aggregation_function: <built-in function callable> = None tokenizer: object = None )

compute

< >

( golds: list predictions: list **kwargs ) float or dict

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — 预测字符串

返回

float 或 dict

当前样本项的聚合分数。如果选择了多个 rouge 函数,则返回一个字典,其中映射名称和分数。

计算单个样本的一系列 gold 和 prediction 的指标。

BertScore

class lighteval.metrics.metrics_sample.BertScore

< >

( normalize_gold: <built-in function callable> = None normalize_pred: <built-in function callable> = None )

compute

< >

( golds: list predictions: list **kwargs ) dict

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — 预测字符串

返回

dict

当前样本项的分数。

使用 bert scorer 计算 prediction、recall 和 f1 分数。

Extractiveness

class lighteval.metrics.metrics_sample.Extractiveness

< >

( normalize_input: <built-in function callable> = <function remove_braces at 0x7f594cc2e710> normalize_pred: <built-in function callable> = <function remove_braces_and_strip at 0x7f594cc2e7a0> input_column: str = 'text' )

compute

< >

( predictions: list formatted_doc: Doc **kwargs ) dict[str, float]

参数

  • predictions (list[str]) — 预测字符串,长度为 1 的列表。
  • formatted_doc (Doc) — 格式化文档。

返回

dict[str, float]

提取性分数。

计算预测的提取性。

此方法计算单个预测相对于输入文本的覆盖率、密度和压缩率分数。

Faithfulness

class lighteval.metrics.metrics_sample.Faithfulness

< >

( normalize_input: <built-in function callable> = <function remove_braces at 0x7f594cc2e710> normalize_pred: <built-in function callable> = <function remove_braces_and_strip at 0x7f594cc2e7a0> input_column: str = 'text' )

compute

< >

( predictions: list formatted_doc: Doc **kwargs ) dict[str, float]

参数

  • predictions (list[str]) — 预测字符串,长度为 1 的列表。
  • formatted_doc (Doc) — 格式化文档。

返回

dict[str, float]

忠实度分数。

计算预测的忠实度。

SummaCZS (Summary Content Zero-Shot) 模型与可配置的粒度和模型变体一起使用。

BLEURT

class lighteval.metrics.metrics_sample.BLEURT

< >

( )

compute

< >

( golds: list predictions: list **kwargs ) float

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — 预测字符串

返回

float

对当前样本的项目进行评分。

使用存储的 BLEURT 评分器计算当前样本的分数。

BLEU

class lighteval.metrics.metrics_sample.BLEU

< >

( n_gram: int )

compute

< >

( golds: list predictions: list **kwargs ) float

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — 预测字符串

返回

float

对当前样本的项目进行评分。

计算 golds 和每个 prediction 之间句子级别的 BLEU 值,然后取平均值。

StringDistance

class lighteval.metrics.metrics_sample.StringDistance

< >

( metric_types: list[str] | str strip_prediction: bool = True )

compute

< >

( golds: list predictions: list **kwargs ) dict

参数

  • golds (list[str]) — 可能的 golds 列表。如果包含多个项目,则仅保留第一个。
  • predictions (list[str]) — 预测字符串。

返回

dict

计算的不同分数

计算 golds 和 prediction 上所有请求的指标。

edit_similarity

< >

( s1 s2 )

计算两个字符串列表之间的编辑相似度。

编辑相似度也用于 Lee, Katherine 等人的论文 “Deduplicating training data makes language models better.” arXiv preprint arXiv:2107.06499 (2021) 中。

longest_common_prefix_length

< >

( s1: ndarray s2: ndarray )

计算最长公共前缀的长度。

JudgeLLM

class lighteval.metrics.metrics_sample.JudgeLLM

< >

( judge_model_name: str template: typing.Callable process_judge_response: typing.Callable judge_backend: typing.Literal['litellm', 'openai', 'transformers', 'vllm', 'tgi'] short_judge_name: str | None = None response_format: BaseModel = None )

JudgeLLMMTBench

class lighteval.metrics.metrics_sample.JudgeLLMMTBench

< >

( judge_model_name: str template: typing.Callable process_judge_response: typing.Callable judge_backend: typing.Literal['litellm', 'openai', 'transformers', 'vllm', 'tgi'] short_judge_name: str | None = None response_format: BaseModel = None )

compute

< >

( predictions: list formatted_doc: Doc **kwargs )

使用 llm 作为评判者计算生成任务的分数。生成任务可以是最多 2 轮的多轮对话,在这种情况下,我们将返回第 1 轮和第 2 轮的分数。 还会返回 user_prompt 和 judgement,它们稍后会被聚合器忽略。

JudgeLLMMixEval

class lighteval.metrics.metrics_sample.JudgeLLMMixEval

< >

( judge_model_name: str template: typing.Callable process_judge_response: typing.Callable judge_backend: typing.Literal['litellm', 'openai', 'transformers', 'vllm', 'tgi'] short_judge_name: str | None = None response_format: BaseModel = None )

compute

< >

( sample_ids: list responses: list formatted_docs: list **kwargs )

使用 llm 作为评判者计算生成任务的分数。生成任务可以是最多 2 轮的多轮对话,在这种情况下,我们将返回第 1 轮和第 2 轮的分数。 还会返回 user_prompt 和 judgement,它们稍后会被聚合器忽略。

MajAtK

class lighteval.metrics.metrics_sample.MajAtK

< >

( k: int normalize_gold: <built-in function callable> = None normalize_pred: <built-in function callable> = None strip_strings: bool = False type_exact_match: str = 'full' )

compute

< >

( golds: list predictions: list **kwargs ) float

参数

  • golds (list[str]) — 参考目标
  • predictions (list[str]) — k 个预测字符串

返回

float

当前样本条目的聚合分数。

计算单个样本的 golds 和 predictions 列表的指标。它将规范化(如果需要)应用于模型预测和 gold,并采用所有可用答案中最频繁的答案,然后将其与 gold 进行比较。

LLM 作为裁判

JudgeLM

class lighteval.metrics.llm_as_judge.JudgeLM

< >

( model: str templates: typing.Callable process_judge_response: typing.Callable judge_backend: typing.Literal['litellm', 'openai', 'transformers', 'tgi', 'vllm'] url: str | None = None api_key: str | None = None response_format: BaseModel = None )

参数

  • model (str) — 模型的名称。
  • templates (Callable) — 一个函数,用于考虑问题、选项、答案和标准答案,并返回裁判提示。
  • process_judge_response (Callable) — 用于处理裁判响应的函数。
  • judge_backend (Literal[“openai”, “transformers”, “tgi”, “vllm”]) — 裁判的后端。
  • url (str | None) — OpenAI API 的 URL。
  • api_key (str | None) — OpenAI API 的 API 密钥(OpenAI 或 HF 密钥)。
  • model (str) — 模型的名称。
  • template (Callable) — 一个函数,用于考虑问题、选项、答案和标准答案,并返回裁判提示。
  • API_MAX_RETRY (int) — API 的最大重试次数。
  • API_RETRY_SLEEP (int) — 重试之间休眠的时间。
  • client (OpenAI | None) — OpenAI 客户端。
  • pipe (LLM | AutoModel | None) — Transformers 或 vllm 管道。
  • process_judge_response (Callable) — 用于处理裁判响应的函数。
  • url (str | None) — OpenAI API 的 URL。
  • api_key (str | None) — OpenAI API 的 API 密钥(OpenAI 或 HF 密钥)。
  • backend (Literal[“openai”, “transformers”, “tgi”, “vllm”]) — 裁判的后端

一个类,表示使用 OpenAI 或 Transformers 库评估答案的裁判。

方法:evaluate_answer:使用 OpenAI API 或 Transformers 库评估答案。 lazy_load_client:延迟加载 OpenAI 客户端或 Transformers 管道。 call_api:调用 API 以获取裁判的响应。 call_transformers:调用 Transformers 管道以获取裁判的响应。 call_vllm:调用 VLLM 管道以获取裁判的响应。

evaluate_answer

< >

( question: str answer: str options: list[str] | None = None gold: str | None = None )

参数

  • questions (list[str]) — 向被评估模型提出的问题列表
  • answers (list[str]) — 被评估模型给出的答案列表
  • references (list[str]) — 参考答案列表

使用 Transformers 或 OpenAI API 评估答案。

< > 在 GitHub 上更新