评估文档

创建和分享新的评估

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

创建和分享新的评估

设置

在创建新的指标之前,请确保您已安装所有必要的依赖项

pip install evaluate[template]

另请确保您的 Hugging Face 令牌已注册,以便您可以连接到 Hugging Face Hub

huggingface-cli login

创建

所有评估模块,无论是指标、比较还是度量,都位于 🤗 Hub 的 Space 中(例如,请参阅 Accuracy)。 原则上,您可以设置一个新的 Space 并添加一个遵循相同结构的新模块。 但是,我们添加了一个 CLI,可以更轻松地创建新的评估模块

evaluate-cli create "My Metric" --module_type "metric"

这将在 🤗 Hub 上创建一个新的 Space,在本地克隆它,并使用模板填充它。 关于如何填写模板的说明将显示在终端中,但此处也更详细地解释了。

有关 Spaces 的更多信息,请参阅 Spaces 文档

模块脚本

评估模块脚本(后缀为 *.py 的文件)是新模块的核心,包含用于计算评估的所有代码。

属性

首先在 EvaluationModule._info() 中添加有关您的评估模块的一些信息。 您应该指定的最重要的属性是

  1. EvaluationModuleInfo.description 提供了有关您的评估模块的简要说明。

  2. EvaluationModuleInfo.citation 包含评估模块的 BibTex 引用。

  3. EvaluationModuleInfo.inputs_description 描述了预期的输入和输出。 它还可以提供评估模块的用法示例。

  4. EvaluationModuleInfo.features 定义了预测和参考的名称和类型。 这必须是单个 datasets.Features 对象,或者如果允许多种输入类型,则可以是 datasets.Features 对象的列表。

然后,我们可以继续准备实际计算之前的所有内容。

下载

一些评估模块需要一些外部数据,例如需要资源的 NLTK 或需要检查点的 BLEURT 指标。 您可以在 EvaluationModule._download_and_prepare() 中实现这些下载,它通过 dlmanager 下载和缓存资源。 关于 BLEURT 如何下载和加载检查点的简化示例

def _download_and_prepare(self, dl_manager):
    model_path = dl_manager.download_and_extract(CHECKPOINT_URLS[self.config_name])
    self.scorer = score.BleurtScorer(os.path.join(model_path, self.config_name))

或者,如果您需要下载 NLTK "punkt" 资源

def _download_and_prepare(self, dl_manager):
    import nltk
    nltk.download("punkt")

接下来,我们需要定义评估模块的计算方式。

计算

计算在 EvaluationModule._compute() 方法中执行。 它采用与 EvaluationModuleInfo.features 相同的参数,然后应将结果作为字典返回。 这是一个完全匹配指标的示例

def _compute(self, references, predictions):
    em = sum([r==p for r, p in zip(references, predictions)])/len(references)
    return {"exact_match": em}

当您稍后调用 .compute() 时,将使用此方法。

Readme

当您使用 evalute-cli 设置评估模块时,会自动创建 Readme 结构和说明。 它应包括指标的一般描述、有关其输入/输出格式的信息、示例以及有关其局限性或偏差以及参考的信息。

Requirements

如果您的评估模块有其他依赖项(例如 sklearnnltk),则 requirements.txt 文件是放置它们的地方。 该文件遵循 pip 格式,您可以在其中列出所有依赖项。

App

app.py 是 Spaces 小部件所在的位置。 通常,它看起来像下面这样,不需要任何更改

import evaluate
from evaluate.utils import launch_gradio_widget


module = evaluate.load("lvwerra/element_count")
launch_gradio_widget(module)

如果您想要自定义小部件,可以在此处添加您的 gradio 应用程序。

推送到 Hub

最后,当您完成以上所有更改后,就可以将您的评估模块推送到 hub。 为此,请导航到模块的文件夹,然后 git add/commit/push 将更改推送到 hub

cd PATH_TO_MODULE
git add .
git commit -m "Add my new, shiny module."
git push

Tada 🎉! 您的评估模块现在已在 🤗 Hub 上,可以供所有人使用了!