创建和分享新的评估
安装
在您创建新的指标之前,请确保已安装所有必要的依赖项
pip install evaluate[template]
还要确保您的 Hugging Face 令牌已注册,以便您可以连接到 Hugging Face Hub
huggingface-cli login
创建
所有评估模块,无论是指标、比较还是测量,都位于 🤗 Hub 上的一个 空间 中(例如,参见 准确率)。原则上,您可以设置一个新的空间,并按照相同的结构添加一个新的模块。但是,我们添加了一个 CLI,使创建新的评估模块变得更加容易
evaluate-cli create "My Metric" --module_type "metric"
这将在 🤗 Hub 上创建一个新的空间,在本地克隆它,并使用模板填充它。有关如何填充模板的说明将在终端中显示,但此处也将更详细地进行说明。
有关空间的更多信息,请参阅 空间文档。
模块脚本
评估模块脚本(后缀为 *.py
的文件)是新模块的核心,其中包含用于计算评估的所有代码。
属性
首先,在 EvaluationModule._info()
中添加有关您的评估模块的一些信息。您应该指定的最重要的属性是
EvaluationModuleInfo.description
提供有关您的评估模块的简要描述。EvaluationModuleInfo.citation
包含评估模块的 BibTex 引用。EvaluationModuleInfo.inputs_description
描述预期的输入和输出。它还可以提供评估模块的示例用法。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()
时使用。
自述文件
当您使用 evalute-cli
设置评估模块时,自述文件结构和说明会自动创建。它应该包括度量的总体描述、有关其输入/输出格式的信息、示例以及有关其局限性或偏差和参考的信息。
需求
如果您的评估模块有其他依赖项(例如 sklearn
或 nltk
),则 requirements.txt
文件是放置它们的位置。该文件遵循 pip
格式,您可以在其中列出所有依赖项。
应用
app.py
是 Spaces 小部件所在的位置。通常,它看起来像下面这样,不需要任何更改
import evaluate
from evaluate.utils import launch_gradio_widget
module = evaluate.load("lvwerra/element_count")
launch_gradio_widget(module)
如果您想要自定义小部件,可以在此处添加您的 gradio 应用。
推送到中心
最后,当您完成所有上述更改后,就该将您的评估模块推送到中心了。为此,请导航到您的模块的文件夹,并将更改添加到中心进行 git add/commit/push
cd PATH_TO_MODULE
git add .
git commit -m "Add my new, shiny module."
git push
大功告成🎉!您的评估模块现在已在 🤗 Hub 上,可以供所有人使用!