假设你读了一篇最近的新模型技术报告,然后心血来潮想要在本机复现他们的结果,却发现根本没法复现,这是为什么? 让我们来探讨一下原因。
代码库不同
要想复现论文或报告的评估得分并精确到小数点,首先要确保使用的代码库一致。
一般情况下,你可以选择使用作者提供的默认评估代码,或者参考标准代码库实现,如 EleutherAI 的 lm_eval 或 HuggingFace 的 lighteval 等。但如果作者没有说明评估代码的来源,那很遗憾,基本上不太可能精确复现了。
如果你想知道为什么代码实现不一样会导致结果差异,可以参考这篇我们与 Hugging Face 评估团队共同撰写的 博客 (⭐)。博客中介绍了对 3 种常见 MMLU 评估代码 (lm_eval、helm、以及原作者实现) 的研究测试,重点解释了实现差异以及对模型得分的影响。https://hf.co/blog/open-llm-leaderboard-mmlu
注:正因如此,Hugging Face 团队决定推出 Open LLM Leaderboard ,以便统一规范,使得在排行榜上的模型得分之间的对比更加公正。https://hf.co/spaces/open-llm-leaderboard/open_llm_leaderboard
导致结果微妙差异的其他因素
即便使用的代码库相同,也会因为实现上的小细节不同而导致结果差异,可能因素有:
-
随机种子不同
-
一般来说,推理阶段受随机种子影响的程度要比训练阶段小得多。不过种子对 CUDA 运算 (可以参考 PyTorch 的 reproducibility 页面) 会产生一些影响从而改变预测结果,尤其是基于非贪心算法生成的时候。另外如果使用 few-shot 的方式推理,随机种子还可能影响 prompt、前
-
大模型评估可复现性排障指南

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



