数据集文档

关于指标

Hugging Face's logo
加入 Hugging Face 社区

并获取增强型文档体验

以开始使用

关于指标

指标在 🤗 数据集中已弃用。要了解有关如何使用指标的更多信息,请查看库 🤗 Evaluate!除了指标外,您还可以找到更多用于评估模型和数据集的工具。

🤗 数据集提供了对各种 NLP 指标的访问权限。您可以通过单个命令加载与 GLUE 或 SQuAD 等基准数据集关联的指标以及 BLEURT 或 BERTScore 等复杂指标:load_metric()。加载指标后,可以轻松计算和评估模型的性能。

ELI5: load_metric

加载数据集和加载指标有很多相似之处。这是一个刻意设计的决定,因为我们希望创建一个简单统一的体验。当你调用 load_metric() 时,指标加载脚本将从 GitHub 下载并导入(如果之前尚未下载)。它包含有关指标的信息,例如引用、主页和描述。

指标加载脚本将实例化并返回一个 Metric 对象。它存储预测和参考,这是计算指标值所需的。 Metric 对象以 Apache Arrow 表的形式存储。因此,预测和参考直接存储在磁盘上并使用内存映射。这使得 🤗 Datasets 可以延迟计算指标,并使在分布式环境中更容易收集所有预测。

分布式评估

在分布式环境中计算指标可能很棘手。指标评估在不同的数据集子集上,在不同的 Python 进程或节点上执行。通常,当指标分数是累加的 (f(AuB) = f(A) + f(B)) 时,你可以使用分布式归约操作来收集数据集每个子集的分数。但是,当指标是非累加的 (f(AuB) ≠ f(A) + f(B)) 时,就没有那么简单了。例如,你不能将每个数据子集的 F1 分数之和作为你的最终指标

克服此问题的一种常见方法是回退到单进程评估。指标在单个 GPU 上进行评估,这会变得效率低下。

🤗 Datasets 通过仅在第一个节点上计算最终指标来解决此问题。预测和参考分别为每个节点计算并提供给指标。这些临时存储在 Apache Arrow 表中,避免了占用 GPU 或 CPU 内存。当你准备 Metric.compute() 最终指标时,第一个节点可以访问存储在所有其他节点上的预测和参考。一旦它收集了所有预测和参考, Metric.compute() 将执行最终指标评估。

此解决方案允许 🤗 Datasets 执行分布式预测,这对于分布式环境中的评估速度非常重要。同时,你也可以使用复杂非累加指标,而不会浪费宝贵的 GPU 或 CPU 内存。

< > 在 GitHub 上更新