Lighteval 文档
指标
并获得增强的文档体验
开始使用
指标
指标
指标
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 )
通过使用 scikit learn 实现,计算整个语料库生成项的指标分数。
CorpusLevelPerplexityMetric
计算整个语料库生成项的指标分数。
语料库级别翻译指标
class lighteval.metrics.metrics_corpus.CorpusLevelTranslationMetric
< source >( metric_type: str lang: typing.Literal['zh', 'ja', 'ko', ''] = '' )
计算通过使用 sacrebleu 实现,在所有语料库生成的条目上的指标分数。
matthews_corrcoef
lighteval.metrics.metrics_corpus.matthews_corrcoef
< source >( items: list ) → float
计算马修斯相关系数,使用 scikit learn (文档)。
示例指标
精确匹配
class lighteval.metrics.metrics_sample.ExactMatches
< source >( 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
< source >( golds: list predictions: list **kwargs ) → float
计算单个样本的一系列 gold 和 prediction 的指标。
compute_one_item
< source >( gold: str pred: str ) → float
仅比较两个字符串。
F1_score
class lighteval.metrics.metrics_sample.F1_score
< source >( 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
< source >( golds: list predictions: list **kwargs ) → float
计算单个样本的一系列 gold 和 prediction 的指标。
compute_one_item
< source >( gold: str pred: str ) → float
仅比较两个字符串。
Log似然准确率
class lighteval.metrics.metrics_sample.LoglikelihoodAcc
< source >( logprob_normalization: lighteval.metrics.normalizations.LogProbCharNorm | lighteval.metrics.normalizations.LogProbTokenNorm | lighteval.metrics.normalizations.LogProbPMINorm | None = None )
compute
< source >( 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
< source >( 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
< source >( 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
< source >( normalization: lighteval.metrics.normalizations.LogProbTokenNorm | None = None aggregation_function: typing.Callable[[numpy.ndarray], float] = <function max at 0x7f5a4be07570> )
compute
< source >( 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
compute
< source >( choices_logprob: list gold_ixs: list **kwargs ) → int
计算请求深度级别的召回率:查看 `n` 个最佳预测选项(具有最高的对数概率),并查看其中是否有一个实际的正确选项。
MRR
compute
< source >( choices_logprob: list gold_ixs: list formatted_doc: Doc **kwargs ) → float
平均倒数排名。衡量选项排名的质量(按正确性排序)。
ROUGE
class lighteval.metrics.metrics_sample.ROUGE
< source >( 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
< source >( golds: list predictions: list **kwargs ) → float or dict
计算单个样本的一系列 gold 和 prediction 的指标。
BertScore
class lighteval.metrics.metrics_sample.BertScore
< source >( normalize_gold: <built-in function callable> = None normalize_pred: <built-in function callable> = None )
compute
< source >( golds: list predictions: list **kwargs ) → dict
使用 bert scorer 计算 prediction、recall 和 f1 分数。
Extractiveness
class lighteval.metrics.metrics_sample.Extractiveness
< source >( 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
< source >( predictions: list formatted_doc: Doc **kwargs ) → dict[str, float]
计算预测的提取性。
此方法计算单个预测相对于输入文本的覆盖率、密度和压缩率分数。
Faithfulness
class lighteval.metrics.metrics_sample.Faithfulness
< source >( 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
< source >( predictions: list formatted_doc: Doc **kwargs ) → dict[str, float]
计算预测的忠实度。
SummaCZS (Summary Content Zero-Shot) 模型与可配置的粒度和模型变体一起使用。
BLEURT
compute
< source >( golds: list predictions: list **kwargs ) → float
使用存储的 BLEURT 评分器计算当前样本的分数。
BLEU
compute
< source >( golds: list predictions: list **kwargs ) → float
计算 golds 和每个 prediction 之间句子级别的 BLEU 值,然后取平均值。
StringDistance
class lighteval.metrics.metrics_sample.StringDistance
< source >( metric_types: list[str] | str strip_prediction: bool = True )
compute
< source >( golds: list predictions: list **kwargs ) → dict
计算 golds 和 prediction 上所有请求的指标。
计算两个字符串列表之间的编辑相似度。
编辑相似度也用于 Lee, Katherine 等人的论文 “Deduplicating training data makes language models better.” arXiv preprint arXiv:2107.06499 (2021) 中。
计算最长公共前缀的长度。
JudgeLLM
class lighteval.metrics.metrics_sample.JudgeLLM
< source >( 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
< source >( 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 )
使用 llm 作为评判者计算生成任务的分数。生成任务可以是最多 2 轮的多轮对话,在这种情况下,我们将返回第 1 轮和第 2 轮的分数。 还会返回 user_prompt 和 judgement,它们稍后会被聚合器忽略。
JudgeLLMMixEval
class lighteval.metrics.metrics_sample.JudgeLLMMixEval
< source >( 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 )
使用 llm 作为评判者计算生成任务的分数。生成任务可以是最多 2 轮的多轮对话,在这种情况下,我们将返回第 1 轮和第 2 轮的分数。 还会返回 user_prompt 和 judgement,它们稍后会被聚合器忽略。
MajAtK
class lighteval.metrics.metrics_sample.MajAtK
< source >( 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
< source >( golds: list predictions: list **kwargs ) → float
计算单个样本的 golds 和 predictions 列表的指标。它将规范化(如果需要)应用于模型预测和 gold,并采用所有可用答案中最频繁的答案,然后将其与 gold 进行比较。
LLM 作为裁判
JudgeLM
class lighteval.metrics.llm_as_judge.JudgeLM
< source >( 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
< source >( question: str answer: str options: list[str] | None = None gold: str | None = None )
使用 Transformers 或 OpenAI API 评估答案。