Evaluate 文档
创建评估套件 (EvaluationSuite)
并获得增强的文档体验
开始使用
创建评估套件 (EvaluationSuite)
对模型在各种不同任务上进行评估,以了解其下游性能,这是很有用的。在多种类型的任务上评估模型,可以揭示在某些维度上的性能差距。例如,在训练语言模型时,测量其在特定领域语料库上的困惑度通常很有用,但同时在测试通用语言能力的任务(如自然语言蕴含或问答)上进行评估,或在旨在探测模型公平性和偏见维度的任务上进行评估也同样重要。
EvaluationSuite
提供了一种将任意数量的(评估器、数据集、指标)元组组合为子任务 (SubTask) 的方法,从而可以在多个评估任务的集合上评估模型。有关当前支持的任务列表,请参阅评估器文档。
一个新的 EvaluationSuite
由一系列 SubTask
类组成,每个类定义一个评估任务。包含该定义的 Python 文件可以上传到 Hugging Face Hub 上的一个 Space 中,以便与社区共享,或者作为 Python 脚本在本地保存/加载。
有些数据集在传递给 Evaluator
之前需要额外的预处理。你可以为每个 SubTask
设置一个 data_preprocessor
,该预处理器会通过 `datasets` 库的 map
操作来应用。Evaluator
的关键字参数可以通过 args_for_task
属性向下传递。
要创建一个新的 EvaluationSuite
,请创建一个新的 Space,其中包含一个与 Space 名称匹配的 .py 文件,将下面的模板添加到该 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")
准确率 | total_time_in_seconds | samples_per_second | latency_in_seconds | task_name |
---|---|---|---|---|
0.5 | 0.740811 | 13.4987 | 0.0740811 | glue/sst2 |
0.4 | 1.67552 | 5.9683 | 0.167552 | glue/rte |