学习笔记1----大模型全链路开源体系

 一、InternLM2 全链路开源体系基础介绍


随着国内央企通用人工智能的兴起,为打造大模型生态应用,各类比赛也比较火热,近期看到了上海人工智能实验室在做的书生浦语大模型,繁忙的工作之余有些业余时间跟小伙伴一起学习、打比赛,是学习笔记,也是作业。

1,开源历程

2024年1月17日,InternLM 2 已经开源,面向不同的使用需求,每个规格包含三个版本。
    
2,书生浦语2.0使用需求
      - 7B 适用轻量级的研究和应用。
      - 20B 可有效支持更加复杂的使用场景。

3,面向不同的使用需求,每个规格有三个版本: 
InternLM2-Base    --可塑性的模型基座。
InternLM2 
    --在Base的基础上,在多个能力方向进行了强化,大部分应用中考虑适用的优秀基座。
InternLM2-Chat
   --在Base基础上,经过SFT和RLHF面向对话交互进行了优化,具有很好的指令遵循,共情聊天和调用工具的能力。

4,主要亮点

 - 20万token上下文
 - InternLM2-Chat 在重点测评领域比肩ChatGPT。
 - 精准指令跟随,结构化创作,在AIpacaEval2 超越GPT-3.5 和 Gemini Pro
 - 工具调用能力整体升级,支持工具多轮调用,复杂智能体搭建。
 - 突出的数理能力和实用的数据分析功能:加入代码解释后,在GMS8k 和Math 达到和GPT-4相仿的水平。

5,工具调用能力

 - 借助代码解释器可以进一步提升模型能力
 - 实用数据分析能力,可以使用机器学习算法,做数据预测
 

二、技术报告解读

InternLM2 技术报告详细阐述了预训练过程中各类数据的准备,包括文本、代码 和长文本数据。InternLM2 可以有效地捕捉长期依赖性,预训练阶段从4k个token开始,扩展到32k个token,在200k个“大海捞针”测试中表现优异。InternLM2还通过监督微调(SFT)和一种基于人类反馈的新型条件在线强化学习方法(COOL RLHF)策略进行进一步校准,解决了人类偏好冲突和奖励策略滥用问题。

  

1.关键贡献

 - 开源了1.8B、7B和20B,在主观和客观评估中都表现出色,发布了不同阶段的模型,分析了SFT和RLHF训练后的变化。
 - 设计了带有200k上下文的窗口
 - 说明了为LLM模型准备数据的方法,包括预训练数据、特定领域增强数据、SFT监督微调和基于人类监督的强化学习数据。
 - 创新的RLHF训练技术,引入了条件在线RLHF(COOL RLHF)调整各种偏好,提高了InternLM2在各种主观对话评估中的表现。


2.训练框架InternEvo

模型在预训练、SFT 、 RLHF 中使用的训练框架为 InternEvo。

模型使用高效的轻量级预训练框架InternEvo进行模型训练,框架使我们能够在数千个GPU上扩展模型训练,通过数据、张量、序列和管道并行技术来实现,为了进一步提高GPU内存效率InternEvo集成了各种Zero Redundancy Optimizer策略,显著减少了训练所需的内存占用。为了提高硬件利用率,模型引入了FlashAttention技术和混合精度训练,使用BF16。 

当在数千个GPU上训练InternLM时,InternEvo展现出强大的扩展性能。使用8个GPU,全局批次大小为400万个令牌训练InternLM-7B时,InternEvo实现了64%的 模型计算量利用率(MFU),当扩展到1024个GPU时,尽管保持相同的全局批次大小, InternEvo仍能维持惊人的53% MFU,这种级别的扩展性能尤其具有挑战性,因为批次大小保持不变,而随着GPU数量的增加,计算与通信的比例会降低,相比之下,DeepSpeed在使用ZeRO-1和MiCS在1024个GPU上训练InternLM-7B时,只能达到大约36%的MFU。 InternEvo在序列长度方面也表现出强大的扩展性, 支持训练不同规模的LLM, 例如在256,000个令牌的序列长度下训练InternLM-7B, 可以达到接近88%的MFU。 相比之下,eepSpeed-Ulysses和Megatron-LM只能达到大约65%的MFU。对于更大规模的LLM, 如300亿或700亿参数的模型,训练性能的提升也同样明显。 

如图示:在使用InternEvo训练InternLM-7B模型时的模型浮点运算利用率 (Model FLOPs Utilization, MFU)。我们通过基准测试,使用4096个令牌的序列长度来评估不同GPU数量下的 训练性能,同时也在128个GPU上测试不同序列长度下的训练性能。 

3.InternEvo框架优势

1)减少通信开销

InternEvo通过实现一系列自适应分片技术(如Full-Replica、FullSharding和Partial-Sharding)来应对通信挑战,以实现强大的扩展性能 (Chen et al., 2024b)。 这些技术允许模型状态(参数、梯度和优化器状态)的各个部分独立选择合适的分片方法和设备网格配置,从而灵活地在GPU基础设施中分布模型状态。InternEvo还引入了一个优化框架,旨在识别最有效的分片因子,以在满足GPU内存限制的同时最小化通信费用。

2)通信-计算重叠

InternEvo进一步通过精心协调通信和计算,以优化整体系统性能。 在使用参数分片时,模型的所有参数分布在多个GPU上以节省GPU内存。在每个训练步 的每个微批次的前向和反向传播过程中,InternEvo会高效地预加载即将到来的层的完整参数集,同时计算当前层。生成的梯度在参数分片组内通过ReduceScatter进行同步,然后通过AllReduce跨参数分片组同步。这些通信过程巧妙地与反向计算重叠,最大化训练管道的效率。对于优化器状态分片,当GPU在分片组内通过Broadcast广播更新的参数时, InternEvo会与下一个训练步骤的前向计算进行战略重叠。这些创新的重叠方法有效地平衡了通信开销和计算执行时间,显著提高了整体系统性能。

3)长序列训练

长序列训练的主要挑战之一是计算速度和通信开销之间的权衡。InternEvo将GPU内存管理分解为四个并行维度(数据、 张量、 序列和管道)和三个分片维度(参数、梯度和优化器状态)(Chen et al., 2024a)。我们对每个维度的内存和通信成本进行了详尽分析,并使用执行模拟器来识别和实施最优的并行化策略。根据训练规 模、序列长度、模型大小和批量大小,可以自动搜索最优执行计划。通过这种执行计划, InternEvo能够处理长达100万个令牌的长序列训练。此外,InternEvo还实施了内存管理技术来减少GPU内存碎片,这是长序列训练场景中的常见问题。它使用内存池进行统一内存管理,并引入了一种碎片整理技术,以主动合并小内存块,防止内存不足错误。

4)容错性

解决了在GPU数据中心高效训练大模型面临的问题,包括:1)数据中心经常面临频繁的硬件故障;2)复杂的并行化策略;3)资源利用率不平衡等问题。

探索了资源利用率模式和任务失败的影响,引入了两个系统改善:1)一个容错的预训练系统,通过诊断大模型相关的故障并自动恢复来提高容错性;2)一个为评估任务设计的解耦调度系统,提供及时的模型性能反馈。

整合了异步保存机制,定期在预定义的时间间隔内将模型权重和优化器状态存档到分布式文件和对象存储中,整个训练过程,每个GPU首先在本地存储中保存模型的状态,之后异步上传到远程分布式存储系统。这个过程确保了系统自动检测到偶尔硬件或网络故障时,仅丢失少量的训练进度。为优化存储空间,将临时模型检查点从热点存储转移到成本效益高的冷存储。此外,我们的系统设计能够无缝地在并行化配置更改时恢复模型训练,为训练管道提供了灵活性和连续性。

4.模型预训练

介绍了预训练数据、预训练设置以及三个预训练阶段。

1) 预训练数据

大规模语言模型(LLM)的预训练深受数据的影响,数据加工主要面对的挑战包含敏感数据的处理、全面知识的覆盖以及效率与质量的平衡。模型使用的预训练数据包括:

  • 文本数据(来源:网页、论文、专利、书籍)
  • 代码数据(来源:github、公共数据集、编程相关的在线资源(比如:问答论坛、教程网站、API文档等))
  • 上下文数据

数据的处理过程,此处不再详细复述,可以自己查看技术解读报告原文。

2) 预训练设置

  • 分词:使用GPT-4的tokenization方法
  • 预训练超参数(InternLM2模型超参数如下表)

3) 预训练阶段

  • 4k上下文训练(约90%的训练步骤中,长度达4096个tokens数据训练,长度超过4096,强制截断)
  • 长上下文训练(扩展上下文窗口,比如:使用检索增强生成和智能代理。InternLM2训练过程从4k上下文语料库开始,过渡到32k上下文语料库。尽管使用了32k长度的语料库,仍有50%的数据长度短于4096个tokens,长上下文训练阶段占整个预训练过程的大约9% 。)
  • 特定能力增强训练(使用了如下特定能力增强训练的数据集(高质量检索数据和各种类型的开源数据,混合在一起,收集24亿个tokens ),使用更小的学习率和 batch size。通过强化训练,InternLM2 模型在编码、推理、问题解答和考试方面的性能有了大幅提高。)

5.对齐(Alignment)

预训练阶段为大型语言模型(LLMs)赋予了解决各种任务所需的基础能力和知识。我们在对齐(Alignment)阶段对LLMs模型进一步微调,充分激发其能力。通常包含两个阶段:监督微调(SFT)和基于人类反馈的强化学习(RLHF)。

1)监督微调(SFT,Supervised Fine-Tuning)

在SFT阶段,使用包含1000万个指令数据实例的数据集,数据主题包含一般对话、NLP任务、数学问题、代码生成和函数调用等,数据主题分布如下图所示。

7B和20B模型都使用AdamW优化器进行了训练(one epoch 训练),初始学习率设为4e-5。

数据主题分布:The distribution of SFT data instances.

2)基于人类反馈的条件在线强化学习(C-RLFH,COOL Reinforcement Learning from Human Feedback)

为了使用RLFH训练存在的偏好冲突和奖励滥用的问题,InternLM2提出使用条件在线强化学习(C-RLFH)。首先,引入了条件奖励机制调和不同的偏好,允许奖励模型根据特定条件动态地分配其注意力到各种偏好上,从而最优地整合多个偏好;其次,采用多轮在线RLHF策略,以使LLM 能够快速适应新的人类反馈,减少奖励滥用的发生。

  • 条件奖励模型

条件奖励模型使用不同的系统提示来无缝融合来自不同领域的数据。奖励模型是基于预训练的SFT模型,该模型已经学会了遵循各种人类指令,因此我们也让奖励模型遵循不同的系统提示,以适应不同场景的多样化偏好。在条件奖励模型中,系统提示不仅仅是其输入的一个组成部分,也是指导奖励分数与不同场景中特定偏好对齐的关键工具。这种整合使得奖励模型在没有牺牲准确性的情况下,能够统一管理矛盾和复杂的人类偏好。

数据组成:条件奖励模型的数据集,涉及对话、文章写作、诗歌、总结、编程、数学和格式化输出等各种领域,有高达240万二进制偏好对。这个全面的数据集确保了模型的广泛适应性,增强了其在更广泛、更复杂场景下进行强化学习的能力。因此,通过使用条件系统提示方法,奖励模型可以响应复杂的人类需求,在PPO阶段提供对奖励分数的更精细控制。

损失函数:为了减少简单样本和困难样本之间不平衡的影响,受到损失函数的启发,在损失函数中添加了一个难度衰减系数。使得困难样本的损失值更大,简单样本的损失值更小,以防止过拟合量简单样本。

训练细节:将奖励模型的大小与PPO中使用的演员模型大小对齐。使用SFT模型权重初始化奖励模型,将输出层修改为一个随机初始化的一维线性映射层。我们批构建策略主要关注将偏好数据的总体长度固定为每个批次的16384个token,而不是限制偏好对的数量,以避免由于数据填充导致的训练低效。最大上下文长度设置为8192。在每个序列的末尾添加一个特殊token,并使用其输出值作为奖励分数。我们采用AdamW作为优化器。学习率遵循余弦退火策略,从1e-5逐渐降低到5e-6,权重衰减设置为0.01。为了防止过拟合,模型仅训练一个epoch。

3)长文本微调

为了在微调和RLHF之后保留LLM的长上下文的能力,在SFT和RLHF中继续使用长上下文预训练数据。我们使用了两种数据:一种是从书籍中获取的长上下文数据,另一种是从GitHub获得并通过特定范式连接的长上下文数据,具体如下:

为了增强InternLM2的数据分析能力,我们选择了在DS-1000(Lai et al., 2023)中使用的代码仓库作为核心仓库,包括Pandas、Numpy、Tensorflow、Scipy、Scikit-learn、PyTorch和Matplotlib。然后我们在GitHub上搜索了引用这些核心仓库并拥有超过10,000个星标的开源仓库,并对这些仓库进行了与预训练相同的过滤和数据清洗过程。 对于每个仓库,我们首先使用深度优先方法对获得的原始数据进行排序,同时生成所需的提示,简要描述文件内容,如图11所示。随后,我们将处理后的数据按顺序连接,直到达到32k的长度。实验结果表明,长上下文代码数据不仅提高了LLM的长上下文能力,也提高了代码能力。

4)工具增强的LLMs

一般工具调用:使用经过修改的ChatML格式,引入“环境”角色实现通用工具的调用。这种修改在聊天场景中保持了相同的格式,但在使用代理时为模型提供了更清晰的信号。之后,我们定义了两个特定关键词支持AI代理的多样化目的,即代码解释器(<|interpreter|>)和外部插件(<|plugin|>)。这使我们可以采用统一的流式格式,处理各种类型的插件扩展 和 AI 环境,同时保持与普通聊天的兼容性,为了激发InternLM2的代理能力,我们将代理语料库对齐到聊天领域,并按照语言模型的基本能力将其解耦,进行细粒度的训练。

代码解释器 我们通过将Python代码解释器视为使用工具学习中描述的相同模式的特殊工具,增强了InternLM2-Chat解决数学问题的能力。我们采用了编码与推理交织(RICO)策略,并以迭代的困难案例(hard example)挖掘的方式构建数据,如InternLM-Math (Ying et al., 2024)所述。

6.评测结果

6.1 在下游任务中的表现

1)在综合考试任务上的表现

2)在阅读理解和知识问答任务上的表现

3)在推理能力和数学能力方面的表现

4)在编程任务上的表现

5)增强训练(Enhancement Training)前后的模型表现

6)在长文本建模能力上的表现

InternLM2的所有变体在这两个基准测试上都展现出了强大的长文本建模能力。InternLM2-Chat-20B-SFT在L-Eval上取得了最佳表现,大幅领先于其他对手。在LongBench上,InternLM2-Chat-7B-SFT在6个子任务类别中的4个上领先于其他≤7B模型。它获得了48.1的总体分数,仅比ChatGLM3-6B的48.4分稍低。同时,对于InternLM2来说,不同的参数量并未导致长文本表现的显著差异,这一点我们后续将进一步研究。

7)工具使用能力

使用外部工具和API可以显著增加大型语言模型(LLM)解决复杂现实问题的能力,为分析InternLM2在工具利用方面的能力,我们在几个基准数据集上进行了实验,测评结果如下:

利用外部代码解释器并遵循ReAct协议来评测LLM解决编程和数学问题的能力。结果如图所示,通过使用代码解释器,模型的表现得到了显著提升,特别是在MATH数据集上的提升尤为明显。

最近推出的MathBench数据集上,使用代码解释器在大多数情况下可以提高InternLM2的性能,而性能的轻微下降可能归因于对这些解释器的错误使用。此外,在知识领域,InternLM2-20B-Chat有显著改进,而在应用领域,InternLM2-7B-Chat有显著改进。这些差异可能源于多种因素,包括它们各自训练数据集的构成差异。

InternLM2模型在各种基准测试中始终表现出优于或相当于现有模型的性能。具体而言,在比较相同规模的模型时,InternLM2-Chat-7B在T-Eval和CIBench上表现最佳。同时,InternLM2-Chat-20B在T-Eval上取得了有竞争力的结果,并且在CIBench上获得了最高分。此外,InternLM2系列模型在中文方面取得了令人印象深刻的结果,展示了InternLM2系列模型在多种语言上的熟练程度。

6.2 偏好对齐表现

尽管 LLM 的客观能力可以通过预训练和有监督微调提升,它们的回答风格可能不会与人类偏好对齐,这就需要人类反馈强化学习来进一步提升对齐能力。因此,评估对齐对于判断 LLM 是否可以真正满足人类的需求非常重要。 本节中,我们在几个普遍使用的主观对齐数据集上测试了 InternLM2 的表现,同时对比了 SFT 模型和 RLHF 模型。

InternLM2 在多个测试集的对齐任务上全面达到了 SOTA 或者接近 SOTA 的表现,表明了 InternLM2 系列模型的主观输出与人类偏好的高度一致性。

上述,模型在对齐测试集上的表现对比。模型根据其参数量和类型进行分类,并用粗体在每类中标出了最优的模型,以及用下划线标出了其参数组中的最优模型

1)英文主观评测

AlpacaEval AlpacaEval (Li et al., 2023b) 是一个有着805个问题的单轮问答数据集。它的主要目的是评估模型回复对于人类的帮助性,通过对抗性评价反映其与人类意图的一致性。AlpacaEval(v2) 建立了一个基线模型,并使用 GPT4-Turbo 作为评价模型来对比基线模型的答案与那些要被评测的模型的答案。它选择出那个与人类偏好对齐地更好的模型的答案并计算胜率。不同于直接收集评价模型的回复,AlpacaEval(v2) 使用了逻辑概率来从统计学角度分析评价模型的偏好。这些偏好信息随后被用作计算加权胜率中的权重因子。正如表17所示,InternLM2-20B 达到了21.8的胜率,在所有比较模型中达到了最高的 SOTA 结果,表明了其卓越的对齐表现。此外,表中数据还说明 RLHF 模型在胜率上高于 SFT 模型,这也强调了对齐策略的有效性。

MTBench MTBench (Zheng et al., 2023a) 是一个包含80个问题的两轮对话数据集,其涵盖了8个维度,分别是:推理、角色扮演、数学、代码、写作、人文、科学技术以及信息抽取。每个维度包含10个问题,均为两轮的提问。第一轮中,测试的是模型对于基本问题的回答能力;第二轮中,它必须遵从额外的。特殊的指令以优化其之前的回答。分数由评价模型打出,范围为1-10分。正如我们在表17中看到的那样,InternLM2 在7B和20B的版本上都达到了领先的分数,分别为7.7和7.9,说明了其值得信赖的多轮对话能力。

2)中文主观评测

CompassArena CompassArena 有着520到中文题目,涵盖了知识、语言、数学、推理和创造五个方面。与 AlpacaEval 相似,它通过 GPT4-Turbo 进行判断并计算胜率,并通过交换模型次序的双盲测试以消除位置偏差。如表17所示,InternLM2 在7B和20B模型中达到了最高胜率,分别为28.7和31.4。注意到 InternLM2 的7B和20B模型之间的表现差距是较小的。但是当与 SFT 模型进行比较时,InternLM2 的 RLHF 模型表现出了非常可观的表现提升。这说明 RLHF 策略进一步提升了 InternLM2 与人类偏好的对齐,而不是仅仅增加模型大小。此外,图 16 中按类别分列的结果显示,InternLM2 系列具有极强的中文创造力和语言能力,其胜率可与 GPT4-Turbo 相当。

CompassArena CompassArena 有着520到中文题目,涵盖了知识、语言、数学、推理和创造五个方面。与 AlpacaEval 相似,它通过 GPT4-Turbo 进行判断并计算胜率,并通过交换模型次序的双盲测试以消除位置偏差。如表17所示,InternLM2 在7B和20B模型中达到了最高胜率,分别为28.7和31.4。注意到 InternLM2 的7B和20B模型之间的表现差距是较小的。但是当与 SFT 模型进行比较时,InternLM2 的 RLHF 模型表现出了非常可观的表现提升。这说明 RLHF 策略进一步提升了 InternLM2 与人类偏好的对齐,而不是仅仅增加模型大小。此外,图 16 中按类别分列的结果显示,InternLM2 系列具有极强的中文创造力和语言能力,其胜率可与 GPT4-Turbo 相当。

图16:InternLM2 系列模型在 CompassArena 上的详细结果

AlignBench AlignBench (Liu et al., 2023a) 是一个有着683个问答对的中文主观数据集,其问题可以分为包括基础语言能力、进阶中文理解,任务导向性角色扮演等8个方面,涵盖物理、历史、音乐、法律等多个场景。这个数据集使用一个名为 CritiqueLLM (Ke et al., 2023) 的内部评价模型进行评测。CritiqueLLM 会为每个问题从各个维度给出一个1-10的分数,并给出一个最终分数。我们在表17展示了由 CritiqueLLM 提供的最终分数,在表18中展示了不同类别的详细分数。如表17所示,InternLM2 在7B和20B模型上均达到了 SOTA,分数分别为6.1和6.8,超过了 GPT-3.5 的5.7分。此外,InternLM2 的 7B和20B模型都在 RLHF 后相比于 SFT 模型展现出了客观的能力提升,强调了我们的 RLHF 策略在提升模型与人类偏好对齐方面的有效性。详细分数的分析表明,其在数学和推理能力方面还有待改进;不过,InternLM2 在问题解答和角色扮演任务方面表现出色,具有非常强的主观能力。

表18:InternLM2 系列在 AlignBench 上的详细分数。K:知识;U:理解;L:语言;M:数学;W:写作;RP:角色扮演,RE:推理。

3)指令跟随评测

IFEval IFEval (Zhou et al., 2023) 被设计用来测试模型模型的指令跟随能力,其需要模型的回复遵从特定格式,比如大小写限制以及关键词限制等。IFEval 涵盖25种不同的指令,跟随指令构造了541个问题,并通过基于规则的评估方法来评估模型对于每个问题的正确性。使用多种统计策略,IFEval 提供四种准确率分数:提示级严格、提示级宽松、实例级严格、实例级宽松。我们在表17中展示了这四个分数的的平均结果。尽管如 LLaMA2 和 Mistral 这样的英文模型在 IFEval 上表现超过了中文模型,InternLM2 在 7B 中排行第二(48.5),在13-20B排行第三(48.7)。这说明,尽管指令跟随任务具有挑战性,InternLM2 仍能在相似大小的模型中保持领先地位。

4)条件奖励模型的消融实验

为了验证有条件系统提示词的影响,我们比较了使用和不使用有条件系统提示词的奖励模型在不同领域的混合数据的表现。如表19所示,在多个公开数据集上,不使用系统提示词会导致准确率的明显下降,包括帮助性和无害性问答 (Bai et al., 2022),内容总结 (Stiennon et al., 2020),数学问题 (Lightman et al., 2023) 以及 Reddit 回复 (Ethayarajh et al., 2022) 等场景。相反,使用系统提示词则可以在这些领域显著提高准确率。

表19:UltraRM-13B (Cui et al., 2023)、QwenRM (Bai et al., 2023) 和我们的 7B 奖励模型在有条件系统提示词和无条件系统提示词情况下的性能比较。表中结果显示了使用条件提示时精确度的显著提高。

7.总结

InternLM2在主观和客观评测中都表现出色,在基于超过2T的高质量预训练数据进行训练,涵盖了1.8B、7B和20B参数的模型规模,适用于多种场景。为了更好地支持长文本处理,InternLM2采用了GQA来降低推理成本,并额外训练在多达32000个上下文中。除了开源模型本身,我们还提供了训练过程中的多个阶段检查点,以便利于后续研究者的研究。

除开源模型,我们还详细阐述了InternLM2的训练过程,包括训练框架、预训练文本数据、预训练代码数据、预训练长文本数据和对齐数据。此外,针对强化学习后训练(RLHF)过程中遇到的偏好冲突,报告还提出了条件在线RLHF方法,以协调不同的偏好。这些信息对于理解如何准备预训练数据以及如何更有效地训练大型模型具有参考价值。

8.其他补充

  • 技术报告原文:https://arxiv.org/pdf/2403.17297.pdf

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值