InternLM2技术报告细节分享


        
          
https://arxiv.org/abs/2403.17297  
https://github.com/InternLM/InternLM  

      
一、infra - InternEvo
  1. 多维度并行性 :InternEvo通过结合数据并行、张量并行、序列并行和流水线并行,实现了在数千个GPU上进行模型训练的扩展能力。利用Zero策略,减少训练过程中所需的内存占用。InternEvo整合了FlashAttention技术,提高硬件利用率。:

picture.image

  1. 强大的扩展性能 :在保持恒定的全局批次大小的情况下,InternEvo在扩展到更多GPU时仍能保持较高的模型FLOPs利用率(MFU), 扩展GPU数量 / 提高序列长度,Flops利用率。

picture.image

  1. 优化了通信开销,提高训练效率,在执行前向和后向传播时,有效地重叠了通信和计算过程,最大化了训练流水线的效率。
  2. 容错性 :解决了GPU数据中心中常见的硬件故障、复杂的并行化策略和不平衡的资源利用等问题。
  3. 为了提高RLHF效率,在InternEvo和基础上,开发了一个RLHF框架
二、model structure

整体上基于LLama2的结构。InternLM2的矩阵布局设计考虑到了张量并行(tensor parallelism)的需求,通过交错排列每个头的Wk、Wq和Wv矩阵,使得模型能够更灵活地适应不同的分布式计算环境。不同的矩阵排列,在tp下呈现出不同的复杂度,如下图:

picture.image考虑到长上下文推理,使用GQA

三、pretrain data

中文和英文网页数据占86.46%。。虽然其他来源的数据量相对较小,如书籍和技术文献(简称techlit),但平均文档长度更长,内容质量相对更高,详细数据如下表:

picture.image

数据流水线:

  1. 数据格式化:爬的网页提取正文和检测语言
  2. 规则处理:随机爬的网页很多脏数据,针对标点符号的异常断行、异常字符出现频率、标点符号分布情况等设计了一系列启发式过滤规则
  3. 重复数据过滤:使用minhash (5-gram) ,0.7阈值
  4. 安全过滤:采用“域名屏蔽”、“词屏蔽”、“色情分类”和“毒性分类”相结合的综合安全策略对数据进行过滤
  5. 毒性分类模型过滤 (基于kaggle相关数据集训练的bert)
  6. 质量过滤:互联网来源的数据包含大量低质量的内容,人工按照一些维度标注,然后训练模型二次过滤

代码数据

从GitHub直接爬取,公共数据集,以及与编码和编程相关的在线资源,如问答论坛,教程网站和API文档,具体如下图:picture.image

基于分类器,对数据进行高中低,质量区分;高质量的数据将具有更高的采样权重,并可以在预训练阶段进行多次训练迭代。中等质量的数据具有正常的采样权重,通常只训练一次。低质量的数据被排除在外,尽管低质量的比例相对较小,但删除它们对优化模型性能和确保训练稳定性至关重要

picture.image

picture.image

数据处理

  • 格式清洗,转成markdown,但是部分转不了,就不管了
  • 重复数据过滤,与文本类似
  • 质量过滤
  • 代码库依赖排序

长上下文数据

它包括三个阶段:

  1. 长度选择,基于规则的过滤器,选择超过32K字节的数据样本;
  2. 统计过滤器,利用统计特征识别和删除异常数据,目的是过滤掉无意义的数据,而不是选择高质量的数据,32k上下文下,样本是有清晰的特征分布
  3. 困惑度过滤器,利用困惑度的差异来评估文本段之间的连贯性,过滤掉具有分散上下文的样本。(估计两个文本段P(S2|S1)之间的条件概率,其中S1在S2之前。当S1和S2强相关时,条件概率应该高于单独估计S2的概率,这也意味着困惑度差为负。相反,如果概率向相反的方向改变,意味着S1是一个分散注意力的上下文,则应该从预训练语料库中删除它。理想情况下,添加更多上下文不应该对后续文本的可预测性产生负面影响)

(用于长上下文训练的所有数据都是标准预训练语料库的一个子集,这意味着在预训练期间将至少学习两次长上下文数据)

四、预训练参数设置

包括词典,超参数,训练配置等等。

五、对齐

SFT

使用了一个包含1000万个指令数据实例的数据集,这些数据实例经过了筛选,以确保它们是有用和无害的。该数据集包含了各种各样的主题,包括一般对话、NLP任务、数学问题、代码生成和函数调用等。比例如下图:

picture.image

7B和20B模型都使用AdamW优化器进行一个epoch的训练,初始学习率为4e-5。

RLHF

实践中rlhf存在的问题

  1. 偏好冲突,有的时候我们希望模型提供有用的信息(有用的),同时不产生有害或不适当的内容(无害的)。然而,这两种偏好在实践中往往无法同时满足,因为在某些情况下,提供有用的信息可能涉及敏感或高风险内容。
  2. 计算成本,现有的RLHF系统可能常依赖于多个偏好模型进行评分
  3. reward hacking,模型可能学会通过捷径“欺骗”奖励系统以获得更高的奖励,而不是真正学习预期的行为

提出并使用了条件奖励模型的方案,与传统方法不同,条件奖励模型将不同类型的偏好的system prompt,合并在一个单一奖励模型中有效地建模各种偏好picture.image

由于奖励模型是从SFT模型初始化的,该模型已经学会了遵循不同的人类指令,因此还让奖励模型遵循不同的系统提示,以适应不同场景的不同偏好。数据集,包括对话、文章写作、诗歌、摘要、编码、数学和格式化输出等各个领域,有多达240万对二值化偏好。

损失函数:由2部分组成

  1. 为了降低数据集中易、难样本不平衡的影响,在排名损失中添加了一个难度衰减系数,类似于focal loss,使困难样本的损失值更大,容易样本的损失值更小,防止对大量容易样本的过拟合

picture.image当p > 0.5 时,难度系数才生效,否则为1;

  1. 为确保奖励模型在不同训练中的输出分数的稳定性和一致性,对奖励分数引入对数障碍惩罚,将分数分布限制在-5到5的范围内

picture.image最终损失为:

picture.image

online rlhf

分为两种不同的路径:快速路径用于立即的、有针对性的改进,缓慢路径用于长期的、全面的改进奖励模型。快路径和慢路径是互补的,为减轻reward hacking 行为和增强人工反馈训练的llm的性能和可靠性提供了一个自适应框架。

  • fast path:在PPO训练过程中,模型倾向于朝着高奖励区域移动,这通常会暴露出更多的reward hacking场景,这些场景可以很容易地被检测到。在每轮RLHF之后,通过比较当前轮次中早期和晚期PPO模型生成的回复,构建偏好对来突出这些模式。将20到100个这样的偏好对纳入训练过程足以防止奖励模型出现相应的问题。这个过程允许快速修复奖励模型以应对新出现的hacking行为,从而增强奖励模型的可靠性和对期望结果的遵循。
  • slow path: 缓慢路径旨在通过覆盖最新和有能力的模型的LLMs响应,全面提高奖励模型的上限,特别是在高奖励区域的奖励模型的可靠性和鲁棒性;模型在训练的不同阶段(包括SFT模型、早期的PPO模型和后期的PPO模型)产生的回复被用来形成成对的比较。然后,这些对被呈现给专业的人类标注团队,以标记他们的偏好。这样的过程提供了更细致和彻底的改进奖励模型,但需要大量的人工注释时间

在online rlhf的实现过程中,进行了三轮的优化。在这些周期中,在快速路径中收集了数千个偏好补丁和在线偏好数据,以更新奖励模型,并使用以前模型响应的所有现有的人类偏好数据。每一轮在线RLHF都提供了有价值的见解,使我们能够动态调整和完善奖励模型,从而提高通过人工反馈训练的语言模型的整体性能和可靠性。

picture.image

长上下文微调

为了保持微调后llm的长上下文能力,我们继续使用SFT和RLHF中的长上下文预训练数据,利用了两种类型的数据:一种是来自书籍的长上下文数据,而另一种是来自GitHub存储库(超过10000 star 的repo)的长上下文数据。实验结果表明,长上下文编码数据不仅提高了LLMs的长上下文能力,而且提高了 其编码能力。

工具增强LLM

没有细说,增加了environment的角色,<|interpreter|> <|plugin|> 之类的特殊token,来区分工具和上下文

与专注于解决奖励黑客问题的Fast Path不同,Slow Path旨在通过长期、全面的细化来提高奖励模型的上限,尤其是在高奖励区域的可靠性和鲁棒性方面。这个过程通过涵盖来自最新一代和最有能力模型的响应,使用这些响应形成成对比较。然后,这些成对比较被呈现给专业人类标注员进行偏好标注。这样的过程提供了对奖励模型更细致和全面的改进,但需要大量的人类标注时间。为了提高在线RLHF的效率,在实验启动时,只使用之前所有模型累积的人类偏好。通过持续根据人类反馈更新模型,Slow Path确保奖励模型与人类偏好的复杂性和微妙性同步发展。

六、效果

简单贴一个

DatasetBaichuan2-7B-ChatMistral-7B-Instruct-v0.2Qwen-7B-ChatInternLM2-Chat-7BChatGLM3-6BBaichuan2-13B-ChatMixtral-8x7B-Instruct-v0.1Qwen-14B-ChatInternLM2-Chat-20B
MMLU50.159.257.163.758.056.670.366.766.5
CMMLU53.442.057.963.057.854.850.668.165.1
AGIEval35.334.539.747.244.240.041.746.550.3
C-Eval53.942.459.860.859.156.354.071.563.0
TrivialQA37.635.046.150.838.140.357.754.553.9
NaturalQuestions12.88.118.624.114.012.722.522.925.9
C378.566.984.491.579.384.482.191.593.5
CMRC8.15.614.663.843.227.85.313.050.4
WinoGrande49.950.854.265.861.750.960.955.774.8
BBH35.946.545.561.256.042.557.355.868.3
GSM-8K32.448.344.170.753.856.071.757.779.6
Math5.78.612.023.020.44.322.527.631.9
HumanEval17.735.436.059.852.419.537.840.967.1
MBPP37.725.733.951.455.640.940.930.065.8
0
0
0
0
评论
未登录
暂无评论