深入分享 Yi-9B 的研发过程(原因&技巧&见解)

火山方舟向量数据库智能语音交互

        
          
https://huggingface.co/blog/lorinma/yi-9b-divedeep  

      

Yi-9B建立在Yi-6B模型的基础上,采用了模型深度扩展和多阶段增量训练相结合的方法。这种方法使得Yi-9B模型在code和math方面取得了明显的改进,同时保持了出色的双语能力。

What is Yi-9B

Yi-9B是Yi-6B的延伸版本,在编码和数学性能上得到了增强,同时保持了强大的双语能力。Yi-9B的特点包括:

  • 参数大小:Yi-9B具有约88亿个参数。
  • 上下文长度:支持4096个标记的上下文长度。
  • 训练数据:Yi-9B 进一步在 0.8T token上进行了训练,这是对 Yi-6B 使用的 3.1T token的补充,数据截止日期为 2023 年 6 月。
Why 9B?

Yi-6B和Yi-34B使用了3.1T 个英文和中文语料库进行预训练。与类似规模的模型相比,Yi-6B和Yi-34B在评估中表现更好,但在编码和数学能力方面还有改进的空间。

为了增强这些能力,受到将模型性能与数据量和模型大小联系起来的规模定律的启发,我们的团队探索了以下两种方法。

方法1:增加数据量

我们团队首先尝试了对Yi-6B进行增量训练。然而,在编码和数学技能方面的改进并没有达到预期,这导致我们采用了第二种方法。

方法2:增加模型大小,然后再增加数据量

  • 增加模型大小

在进一步训练Yi-6B之前,我们将模型扩展到9B参数,然后使用额外的数据进行多阶段增量训练。

  • 增加数据量 (多阶段)

阶段1使用了0.4T 标记(包括通用语料库和代码),与Yi-6B相同的数据比例。

阶段2使用了另外0.4T 标记(包括通用语料库、代码和数学),其中代码和数学数据的比例增加了。

  • 优化微调方法

与通常使用的学习率衰减不同,我们的团队基于 "An Empirical Model of Large-Batch Training"和"Don't Decay the Learning Rate, Increase the Batch Size" 的研究,对学习率设定了一个固定值。我们将学习率设定为3e-5,并逐渐增加batch size大小,从4M token开始。每当模型损失停止减少时,我们增加批量大小,使模型能够更彻底地学习并更好地收敛。

Expansion Method

为什么扩展模型?

在进行模型扩展之前,我们的团队分析了模型结构和训练过程中的趋势。

模型结构

在测试和分析Yi-6B/34B和Llama2-70B时,我们计算了通过不同层的token嵌入的余弦相似度,以观察模型提取令牌上下文特征的能力。

以下图显示了文本"Write a quiz about bits"中每个令牌的每个层的输入/输出余弦数值 。我们观察到:

  • Yi-34B和Llama2-70B有很多的层余弦数值接近1,也就是说,这些层对于特征提取的令牌上下文特征没有太大帮助,并且没有完全训练。
  • 然而,Yi-6B显示出输入和输出余弦数值在所有层之间有较大差异,表明每一层都已经完全训练。picture.image

picture.image

训练趋势

我们引入了一个指标来量化累积整体模型输入/输出的余弦距离,观察Yi-6B/34B在训练过程中性能的变化

picture.image在这个公式中,

  • N代表标记的数量。
  • L代表层数。
  • layer(input/output)cosine = 所有标记的余弦值的平均值,除了第一个标记。
  • model(input/output)cosine = 在排除第一个和最后两层的情况下,层的平均余弦值。

从下面的图表可以看出,Yi-6B 在英语、中文和编码能力的层余弦值下降趋势逐渐趋于平缓,表明该模型已经得到了充分的训练,并且预测如果提供额外的标记,模型仍然会产生一定的收益。(勘误:下面图表中标记的 x 轴单位为 'B',而不是 'TB')

picture.image

picture.image

与此相反,Yi-34B 仍显示出明显的下降的趋势,表明在使用更多标记进行训练后,模型收敛得更好。picture.image

picture.image因此,我们预测继续训练Yi-6B可能不会达到预期,选择扩大模型规模至9B后再继续训练。

Why Choose Depth Expansion?

当增加模型大小时,我们的团队尝试扩展深度和宽度。我们发现:

  • 在扩展宽度后,模型的性能显著下降。
  • 在对原始模型进行深度加强(通过选择适当的层)后,新层的输入/输出余弦越接近1.0,即放大模型的性能可以保持原始模型的性能。性能损失很小。
How to Perform Depth Expansion?

与Solar的方法相比,Mistral 7B的中间16层(8-24)的复制,我们的方法从Yi-6B复制后面的16层(12-28),创建一个48层的Yi-9B。这些层的余弦值更接近1.0,表明性能损失更小。picture.image

结果

就综合能力而言,Yi-9B在相似规模的开源模型中表现最佳,胜过了DeepSeek-Coder、DeepSeek-Math、Mistral-7B、SOLAR-10.7B和Gemma-7B。picture.image

在编码能力(Mean-Code)方面,Yi-9B的表现仅次于DeepSeek-Coder-7B,胜过了Yi-34B、SOLAR-10.7B、Mistral-7B和Gemma-7B。picture.image就常识和推理能力而言,Yi-9B的性能与Mistral-7B、SOLAR-10.7B和Gemma-7B相当。

picture.image

与此同时,Yi-9B保持着出色的双语能力。下表中的Mean (All)是除CMMLU外所有评估的平均值。Mean (En-Text),我们对四个英文评估(ARC-c、HellaSwag、Winogrande和MMLU)进行了平均。

picture.image评测采用了贪婪解码生成方法来进行内部评估。一些结果可能与原始工作中报告的结果略有不同。

参数数量:模型名称由总参数数量(Embedding Parameters * 2 + Non-Embedding Parameters)确定,其中非嵌入参数是确定模型性能的有效参数。Yi-9B使用完整的参数数量并将其四舍五入(0.26*2 + 8.31 = 8.83 B)。

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
在火山引擎云搜索服务上构建混合搜索的设计与实现
本次演讲将重点介绍字节跳动在混合搜索领域的探索,并探讨如何在多模态数据场景下进行海量数据搜索。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论