评估文档
创建 EvaluationSuite
并获得增强的文档体验
开始使用
创建 EvaluationSuite
在各种不同的任务上评估模型以了解其下游性能可能很有用。在几种类型的任务上评估模型可以揭示某些轴上的性能差距。例如,在训练语言模型时,通常在领域内语料库上测量困惑度很有用,但同时也要评估测试通用语言能力(如自然语言蕴含或问答)的任务,或旨在探测模型在公平性和偏见维度上的任务。
EvaluationSuite
提供了一种组合任意数量的(评估器、数据集、指标)元组作为 SubTask 的方法,以在多个评估任务的集合上评估模型。有关当前支持的任务列表,请参阅评估器文档。
新的 EvaluationSuite
由 SubTask
类列表组成,每个类定义一个评估任务。包含定义的 Python 文件可以上传到 Hugging Face Hub 上的 Space,以便与社区共享,或在本地保存/加载为 Python 脚本。
某些数据集在传递给 Evaluator
之前需要额外的预处理。您可以为每个 SubTask
设置一个 data_preprocessor
,它通过使用 datasets
库的 map
操作来应用。Evaluator
的关键字参数可以通过 args_for_task
属性传递。
要创建新的 EvaluationSuite
,请使用与 Space 名称匹配的 .py 文件创建一个新 Space,将以下模板添加到 Python 文件中,并填写新任务的属性。
新的 SubTask
的强制属性是 task_type
和 data
。
task_type
映射到评估器当前支持的任务。data
可以是实例化的 Hugging Face 数据集对象或数据集的名称。subset
和split
可用于定义应将数据集的哪个名称和拆分用于评估。args_for_task
应该是一个字典,其中包含要传递给评估器的 kwargs。
import evaluate
from evaluate.evaluation_suite import SubTask
class Suite(evaluate.EvaluationSuite):
def __init__(self, name):
super().__init__(name)
self.preprocessor = lambda x: {"text": x["text"].lower()}
self.suite = [
SubTask(
task_type="text-classification",
data="glue",
subset="sst2",
split="validation[:10]",
args_for_task={
"metric": "accuracy",
"input_column": "sentence",
"label_column": "label",
"label_mapping": {
"LABEL_0": 0.0,
"LABEL_1": 1.0
}
}
),
SubTask(
task_type="text-classification",
data="glue",
subset="rte",
split="validation[:10]",
args_for_task={
"metric": "accuracy",
"input_column": "sentence1",
"second_input_column": "sentence2",
"label_column": "label",
"label_mapping": {
"LABEL_0": 0,
"LABEL_1": 1
}
}
)
]
EvaluationSuite
可以通过名称从 Hugging Face Hub 加载,也可以通过提供路径在本地加载,并使用 run(model_or_pipeline)
方法运行。评估结果与其任务名称以及有关通过流水线获取预测所花费的时间的信息一起返回。这些可以很容易地用 pandas.DataFrame
显示
>>> from evaluate import EvaluationSuite
>>> suite = EvaluationSuite.load('mathemakitten/glue-evaluation-suite')
>>> results = suite.run("gpt2")
准确率 | 总耗时(秒) | 每秒样本数 | 延迟(秒) | 任务名称 |
---|---|---|---|---|
0.5 | 0.740811 | 13.4987 | 0.0740811 | glue/sst2 |
0.4 | 1.67552 | 5.9683 | 0.167552 | glue/rte |