SkyworkAI / Skywork

Skywork series models are pre-trained on 3.2TB of high-quality multilingual (mainly Chinese and English) and code data. We have open-sourced the model, training data, evaluation data, evaluation methods, etc. 天工系列模型在3.2TB高质量多语言和代码数据上进行预训练。我们开源了模型参数,训练数据,评估数据,评估方法。
Other
1.21k stars 111 forks source link

验证集评测结果复现与报告表不符 #32

Closed fengzi258 closed 10 months ago

fengzi258 commented 10 months ago

你好,我有一些问题,希望解答一下: 采用Qwen-14B运行给定的命令:bash bash_scripts/skywork_eval_loss.sh:

希望解答一下以上疑问,谢谢~

zhao1iang commented 10 months ago
  1. 验证集发布是全的,您直接计算的是loss,需要取指数变成Perplexiy后才是大家对比的指标。
  2. 为文本截断而不是按token截断的原因有两个:第一如果按照token数目截断,那么有一些模型就会取得不正当优势,我们知道文档前面的token会比后面token的loss会更高,如果按照分词长度进行截断,那么分词更多的模型(比如llama,把一个中文切成三个词),实际上获取的文档内容更短,那么loss会更高。第二本质上我们计算的是高质量文档生成的概率,从似然的角度理解,如果按照token截断了,那么不同模型计算的文档实际不一样,那这个指标实际上就退化成了变成了平均loss,没有任何可以直接对比的意义了。
  3. 4K只是最大长度,能超过4K长度的文章我们测试集里面应该几乎没有。
  4. 您说的滑动窗口应该是评价长文档模型的,我们的评测集长度比较短,没有加入。
zhao1iang commented 10 months ago

您直接算的是loss,您看我们的readme,我们算的是标准化的loss,这才是大家可比的指标,是需要乘以自己分词器的文档分词数量,转换成似然(likelihood)。大家统一除以天工分词器的分词token数(其实除以任何数都可以,不影响排名,我们都除以天分分词器直接和我们模型的效果比较了)。

zhao1iang commented 10 months ago

不同模型最大长度不一样这个问题,我们对比的是主流模型,主流模型应该都支持4K或者以上长度的上下文。

fengzi258 commented 10 months ago

感谢您的回复,那我理解一下:

  1. 代码中句子截断是4k/3,截断是为了保证对比模型输入句子的长度一致,那对于比较长的文本,如果我采用滑动窗口的话,把整个句子作为输入,也是可以的保证对比模型输入句子保持一致。
  2. 评估代码中算的是你们的标准化loss了吧:total_loss/total_tokens,但取指数之后还是跟报告中对不上呢,要不你在代码中加上ppl的计算结果。
zhao1iang commented 10 months ago
  1. 只要在计算过程中保证所有文档真实的长度是一样我觉得就可以。
  2. 标准化不是total_loss/total_tokens,而是total_loss * total_tokens / skywork_tokens。已经在上个Issue中回复您了。
fengzi258 commented 10 months ago

ok,感谢耐心解释。