InternLM实战营第二期笔记·①「书生·浦语大模型全链路开源体系+InternLM2技术报告」

第一次课程视频链接:

【书生·浦语大模型全链路开源体系】 https://www.bilibili.com/video/BV1Vx421X72D/?share_source=copy_web&vd_source=89ba91e598b4eb8db73853d9defb5b82

书生·浦语大模型全链路开源体系

InternLM2的体系分为InternLM2-Base、InternLM2与InternLM2Chat,具体模型如下。推荐在InternLM2的基础上进行微调。

InternLM2回归语言建模的本质,采用新一代数据清洗过滤技术,包括多维度数据价值评估、高质量语料驱动的数据富集、有针对性的数据补齐,提高语言建模的能力。

InternLM2的主要亮点(实现性能全方面提升)

1.超长上下文:20万token上下文中实现“大海捞针”

2.综合性能全面提升:推理、数学、代码提升显著

3.优秀的对话和创作体验:指令精准,结构化创作丰富

4.工具调用能力整体升级:能够搭建复杂智能体

5.突出的数理能力与数据分析功能:不借助计算器的情况下,拥有强大的计算能力。

具体性能对比如下:

从模型到应用的流程如下:

目前书生浦语全链条开放体系已经面向社区做了开源。

数据方面

包括多模态数据集,来源丰富多样,进行了安全处理。

预训练

微调

主要分为增量续训和有监督微调;

开发的XTuner适配多种微调算法与硬件,最低只需要8G显存即可微调7B模型

构建了评测基准社区CompassHub

评测结果分析

目前可以看出,综合评分相加后,评测性能最优的大模型为GPT-4-Turbo,但也仅仅达到及格水平。整体的复杂推理能力存在较大差距。

部署

目前开发了LMDeploy,提供全流程的部署

与 vLLM相比,LMDeploy的推理性能具有明显优势。

智能体

支持多种智能体能力,灵活支持多种大语言模型,简单易拓展,支持丰富的kai工具。

开发了多模态智能体工具箱AgentLego,支持多个主流智能体系统,提供大量前沿算法功能。

技术报告笔记

InternEvo的训练框架

  1. 简介

    • InternEvo是一个高效、轻量级的预训练框架,能够在数千个GPU上扩展模型训练。
    • 实现了数据、张量、序列和管道并行,以及零冗余优化器(ZeRO)策略,减少内存占用。
    • 结合了FlashAttention技术和混合精度训练,提高硬件利用率。
  2. 性能指标

    • 在训练InternLM时,在不同GPU数量下,拥有强大的扩展性能,保持了良好的模型浮点数利用率(MFU)。
    • 对于长序列训练,支持高达256,000个token的序列长度。
  3. 并行化策略

    • InternEvo采用了创新的内存管理和通信策略,包括主动合并小内存块以防止内存不足错误,以优化训练性能。
    • 通过在参数、梯度和优化器状态上采用参数分片,以及在计算和通信过程中的重叠操作,提高了训练管道的效率。
  4. 容错机制

    • 引入了异步保存机制,定期将模型权重和优化器状态保存到分布式文件和对象存储中,以最小化训练进度丢失。
    • 系统设计具有灵活性和连续性,在并行化配置变化时能够无缝恢复模型训练。
  5. RLHF框架

    • 在交互式培训阶段,使用InternEvo和Ray开发了一个RLHF框架,用于多个LLM的协调训练。
    • 框架具有灵活性和可扩展性,能够有效地执行大规模训练,支持各种算法设计。

InternLM 2模型的结构

  1. 模型设计

    • InternLM 2遵循LLaMA的结构设计原则,并整合了其他著名LLM的优点,如Falcon、Qwen、百川和Mistral。
    • 对Wk、Wq和Wv矩阵进行了整合,加速了预训练阶段的训练。
    • 重新配置了矩阵布局,采用了交织方法对每个头的Wk、Wq和Wv进行处理,增强张量并行大小的调整。
    • 选择了分组查询注意力(GQA),可以在高速和低GPU内存中使用非常长的上下文进行推断。​​​​​​​​​​​​​​

 预训练数据

  1. 文本数据来源分类

    • 预训练数据集的文本数据来自不同来源,如网页、论文、专利和书籍。
    • 数据经过分类和语言标记,并存储为JSON Lines格式。
  2. 数据处理管道

    • 数据处理管道包括格式化、启发式规则过滤、重复数据删除、安全过滤和质量过滤。
    • 使用局部敏感哈希(LSH)方法对重复数据进行模糊删除,采用综合的安全策略过滤有害内容。
  3. 数据处理步骤

    • 对于网页数据,使用Trafilatura库进行HTML解析和主文本提取,然后进行语言检测和分类。
    • 设计一系列启发式过滤规则来清理低质量数据,如解析错误、格式错误和非自然语言文本。
    • 使用MinHash方法进行基于LSH的重复数据删除,同时采用综合的安全策略过滤有害内容。
  4. 质量过滤

    • 通过人工数据标注和BERT模型微调来过滤低质量内容,如广告和摘录文本。
    • 使用手动注释的数据微调BERT模型,获得广告分类器和流畅性分类器,进而过滤低质量数据。

代码数据处理 

  1. 数据源分布

    • 数据收集来源包括GitHub抓取、公共数据集以及编程相关的在线资源,如Q&A论坛、教程网站和API文档。所有数据转换为统一的markdown格式。
  2. 质量过滤

    • 采用混合的、多阶段的过滤过程,包括基于规则和基于模型的评分。
    • 使用基于规则的启发式方法和基于模型的评分器来评估数据质量,以确定高、中、低质量的数据,并通过迭代注释过程改进模型的准确性。
  3. 存储库连接

    • 对于代码存储库,重新组合代码文件并执行依赖性排序,以建立连接文件的序列。
    • 使用正则表达式检测跨编程语言的“导入”关系,并通过拓扑排序确定文件连接顺序,以建立代码块的长markdown文件。

长文本处理

InternLM 2从4K上下文语料库开始训练,然后过渡到32K上下文语料库,约占总步骤的9%。为了适应长序列,调整了位置编码的基数。

收集了高质量的检索数据和各种类型的开源数据,总共240亿个token,采用较小的学习率和批量大小,以适应这些数据。

对齐

  1. 监督微调(SFT)和来自人类反馈的强化学习(RLHF)

    • SFT阶段通过高质量指令数据对模型进行微调,覆盖各种任务。
    • RLHF结合人类反馈,使用条件奖励模型和多轮在线RLHF策略,以减少偏好冲突和奖励黑客问题。
  2. 条件在线RLHF(COOL RLHF)

    • 引入了条件奖励模型,动态地协调不同的人类偏好,以应对偏好冲突。
    • 使用多轮在线RLHF策略,快速适应新的人类反馈,减少奖励黑客的发生。
  3. 有条件奖励模型

    结合了不同类型偏好的系统提示,有效地在单一奖励模型中对各种偏好进行建模。
  4. 损失函数的修改

    使用焦点排序损失函数,添加了难度衰减系数,以减少数据集中容易和困难样本之间的不平衡影响。

具体分析微调部分

在监督微调(SFT)阶段,模型使用了一个包含1000万个指令数据实例的数据集。数据集涵盖了各种主题,包括一般对话、自然语言处理任务、数学问题、代码生成和函数调用等。

为了在微调过程中方便各种任务的通用表示,数据样本被转换为ChatML(Cha)格式。在微调过程中,使用了AdamW优化器进行了一个epoch的训练,初始学习率为4e-5。

有条件奖励模型

长上下文微调​​​​​​​

在微调和强化学习阶段使用了来自书籍和GitHub存储库的长上下文预训练数据,以保持LLM的长上下文能力。选择了核心代码存储库,并在GitHub上搜索引用这些核心存储库的其他存储库,以获取更多长上下文代码数据。​​​​​​​采用深度优先方法进行排序,并生成简要描述文件内容的必要提示。

工具增强型LLM

  1. ​​​​​​​统一流媒体格式: 使用统一的流聊天格式,可以处理各种插件扩展和AI环境,同时与一般聊天兼容。

  2. 代理能力引入: 通过与聊天域对齐的代理语料库,将InternLM 2的代理能力与语言模型的基本能力进行分离,完全引出其代理能力。这一工作类似于Agent-FLAN。

  3. 代码解释器增强: 增强了InternLM 2-Chat的能力,能够通过代码解释器解决数学问题。将Python代码解释器视为一种特殊工具,采用推理与编码交织(RICO)策略,通过迭代的硬示例挖掘方式构建数据,例如InternLM-Math。

总结:

1.InternEvo是一个高度优化和工程化的大规模语言模型训练框架,能高效地利用大规模算力和数据资源进行模型训练,所训练出的InternLM2融合了多个优秀模型的特点,具有强大的泛化能力和长上下文推理能力。

2.InternEvo支持数据、张量、序列和管道并行,采用ZeRO优化器降低内存占用。结合FlashAttention和混合精度训练提高硬件利用率。在大规模GPU训练时表现出良好的扩展性和高算力利用率。

3.InternLM2的模型结构借鉴了多个LLM的优点,整合了注意力矩阵、调整矩阵布局、采用了GQA等,提升了推理效率。

4.SFT阶段使用大规模指令数据进行微调,RLHF阶段引入条件奖励模型和多轮策略解决偏好冲突和黑客问题。

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值