站点图标 AIHunt | 几百个AI工具导航,国内外AI工具导航大全

自动评估基准 | 技巧与提示

内容目录

技巧与提示

这是 自动评估基准 系列文章的第四篇,敬请关注系列文章:

  • 基础概念
  • 设计你的自动评估任务
  • 一些评估测试集
  • 技巧与提示

数据污染管理

通常我们会假设在互联网上公开可用的数据集是存在数据污染问题的。

缓解措施有:

不过也不用太担心,数据集被污染并不意味着训练过程就没有意义和信号收益。

可能遇到的实际问题

微调模型、系统提示和聊天模板

要避免指令微调模型的表现过于糟糕,需要做到:

另外,你无需假设不同的分词器实际表现会相同,特别是在处理聊天模板的时候。更具体的说明可以查看 这条推文 中附带的图片。

分词

  1. 多选问答 (MCQA) 评估与分词

一般来说,在 MCQA 评估中将上下文与选项放在一起做分词会更好,因为这样生成的 tokens 序列对于模型来说会自然一些。

不过,有些分词器 (如 Llama one) 不满足以下条件:enc(context + choice) = enc(context) + enc(choice) (并且有可能增加或删除空格)。因此把上下文和选项放在一起处理的话,上下文的分词结果会 “渗透” 到选项的分词结果中,进而导致选项的对数概率结果被混淆而不可信。

如果你的模型也有这个问题,你可以尝试分别对上下文和选项计算分词结果,然后去除额外添加的特殊字符,最后将两个结果拼接到一起。

  1. 文本评估与句子的起始终止 token

起始 token:有些模型 (如 Gemma) 在推理时会对 句子起始位置的 token 极为敏感。要想知道你的模型是否存在这个问题,你可以多做几次实验,在每次评估中手动添加不同的起始 token 来检查一下。

终止 token:有时候模型会出现无法终止生成的问题,也就是模型未能生成终止 token (比如 \n),这是因为模型不会单独预测终止 token,而只能包含在更高级的 token (如 \n\n,在代码模型中也可能是单个 token) 中生成。此时可能需要添加一个特定的检查来 “回溯” 生成的文本来确保在正确的位置截断句子,以确保计算的度量指标无误。

  1. 多语言评估与分词

在进行多语言评估时,需要根据评估任务和度量指标来确定文本分词方法。由于某些语言不使用空格作为单词间的分隔符 (例如韩语、泰语、日语和中文等),所以需要特定语言的分词器才能合理的切分,否则就会影响一些度量指标分数,如 BLEU、F1 分数等。

  1. 代码评估与终止 token

代码模型通常会在训练时将 \n\t 单独作为一个 token。这意味着在生成文本时会将 \n\t 一步生成。如果某个任务将 \n 定义为终止 token (表示生成停止),但模型生成单个 token 却是 \n\t,那生成过程就会无限持续。为了让模型能够停止生成,需要更新文本的终止 token,或者定义一种机制来回溯最新 token 的字符表征,以便停止 (并截断) 生成。

MCQA 评估的简单加速

如果你的 MCQA 评估任务只需要模型预测一个 token,那么预测速度就可以大大加快。

你可以单次运行 上下文 推理得到全词汇表 (其中就包括了所有的选项) 的概率分布,进而按对数概率获取你感兴趣的 token,这样就避免了对每个选项的多次推理 (上下文 + 选项 1, 上下文 + 选项 2, 等等),从而实现加速。

(我们在 lighteval 中就是这么做的)。

如果生成式评估中的结果不及预期怎么办?

首先要经常检查模型的生成结果。排查可能原因时,需要关注以下常见问题:


英文原文: https://github.com/huggingface/evaluation-guidebook/blob/main/translations/zh/contents/automated-benchmarks/tips-and-tricks.md

原文作者: clefourrier

译者: SuSung-boy

审校: adeenayakup

赞赏

微信赞赏支付宝赞赏

退出移动版