InterLM2 技术报告解读&课程笔记

简介

首先打个广告,非常欢迎大家参与由上海人工智能实验室组织的书生·浦语实战营第二期,在实战营你可以学到什么呢?

🚀 在这次实战营后,你能收获:

  1. 下载Huggingface模型并在命令行、网页端运行!堪比本地的文心一言。

  2. 实现RAG,让大模型拥有知识库,试试把你的项目文档、pdf资料等给模型参考吧。

  3. 实现大模型参数高效微调,角色扮演、音乐生成、食谱编写……只有你想不到,没有你做不到!

  4. 实现量化部署模型,让3060能跑7B模型,让你的机器人能调用模型python接口获取回复。

  5. 智能体应用搭建,给予模型工具、计划、记忆……让其成为全能助手

  6. 跑通大模型评测,学习根据大模型排行榜单挑选适合业务的模型,并熟悉衡量模型好坏的维度指标。

  7. 熟悉常用微调数据格式,让平常收集“指令微调”数据与清洗不再困难!

快来和大佬们一起学习吧。感兴趣的给我们InternLM点个小✨

项目地址https://github.com/InternLM/InternLM

报名链接https://www.wjx.cn/vm/tUX8dEV.aspx?udsid=2146

同时我在本次实战营的所有笔记和代码都会放到github仓库中。

一、课程笔记

视频连接书生·浦语大模型全链路开源体系

1.InternLM2 简介

首先先对课程第一节课程做一下总结和讨论,在发布的InternLM2的模型中面向不同需求有三个模型版本,如图1,其中每个模型版都有不同的规格,包括1.8B、7B和20B。目前InternLM2模型已经开源可以去OpenXlab开源平台上去看一下,模型中心-OpenXLab

image-20240329160115771

InternLM2制作的初心就是为了回归语言建模的本质,也就是对自然语言的概率分布进行建模,即通过数学或机器学习的方法,对词语序列的概率相关性进行建模。这种建模利用已有的语句作为输入条件,预测下一个词或短语出现的概率。

image-20240329160903579

那么要想实现这个,对于数据质量的要求必然是非常高的,那么InternLM2能达到这种效果(如上图InternLM和InternLM的loss分布图)就是利用了新一代的数据清洗过滤技术,那么在这里面数据就包括了多维度数据价值评估、高质量预料驱动的数据富集和有针对性的数据补齐。从图中的三代数据训练的结果可以看出,经过新一代技术处理的数据性能相比于前两代提升是非常高的。

简单了解了InternLM2的能力,那么它在哪些方面的能力更强呢。

  • InternLM2在20万token上下文的“大海捞针”测试中非常好。

  • 同时20B的模型在推理、数学、代码上的表现比肩ChatGPT。

  • AlpacaEval数据集上,InternLM2-20B 的胜率达到 21.8,是评估模型中最高的。

image-20240329163330077

在agent工具调用方面,InternLM2的工具调用能力更加稳定和准确,在更复杂的任务中,它可以对每一步的任务调用相应的工具,这样任务完成的会更加有条理,效果自然会更好。

image-20240329163846376

在数学方面InternLM2依赖其优秀的内生能力,可以在不借助外部工具就能够进行部分复杂数学题的运算和求解。在代码方面InternLM2本身已经做的很好了,在有了代码解释器的加成性能提升是非常大的。

image-20240329163703037

同时由于InterLM2强大的数学和代码能力,你可以通过上传数据文件要求它给你的数据进行分析,通过InternLM2的代码能力,绘制出一些图像。想一下以后就不用自己写代码分析数据就很爽。当然还可以要求InternLM2使用机器学习算法预测我们数据的一些值。

2.InternLM2 开源体系

在InternLM的开源体系中,提供了一系列的工具组件,从数据到评测,最后还有Lagent和AgentLego的智能体用来实现大模型的应用,那下面就让我们看一下每一部分的亮点吧。

image-20240329170627546

2.1 数据

首先在数据层面的书生·万卷1.0,它包括了文本数据集、图文数据集、视频数据集三部分,总数据量超过2TB。它的内容覆盖了科技、文学、媒体、教育、法律等多个领域,旨在通过多元融合的方式提升模型的知识含量、逻辑推理和泛化能力

image-20240329171729411

书生·万卷CC书生·万卷1.0的一个特定版本,专注于英文网络文本数据集的收集和发布,可以支持更大规模的模型训练。

2.2 预训练

那么在预训练阶段InternLM开源了InternEvo,它是一个开源的轻量级训练框架,支持模型预训练,而无需广泛的依赖关系。通过单一代码库,它支持在具有数千个 GPU 的大规模集群上进行预训练,并在单个 GPU 上进行微调,同时实现显着的性能优化。InternEvo 在 1024 个 GPU 上训练期间实现了近 90% 的加速效率。

image-20240329172344153

同时InternEvo也支持HuggingFace的生态,你可以使用HuggingFace上的各类轻量化技术,它还支持多规格的大语言模型。

2.3 微调

在微调阶段,一般用两种场景分别是:

  • 增量训练:让基座模型学习到一些新知识,如某个垂类领域知识训练数据:文章、书籍、代码等

  • 监督微调:让模型学会理解各种指令进行对话,或者注入少量领域知识训练数据:高质量的对话、问答数据

image-20240329173641180

在InternLM体系中提供了Xtuner这种高效的微调框架,它支持大语言模型,几乎可以在所有GPU上进行微调。同时与 DeepSpeed 兼容,轻松利用各种 ZeRO 优化技术。

2.4 评测

我们都知道评测阶段是了解模型在不同维度上的表现的一个重要的过程,那么InternLM推出了最新的OpenCompass 2.0这样的套件,其中包括三个关键组件:CompassKit、CompassHub 和 CompassRank

oc20

  • CompassRank: 它是一个大模型评测的一个榜单,其中包含开源基准和专有基准。

  • CompassHub: 它提供了一个开创性的基准测试浏览器界面,旨在简化和加快研究人员和从业者对各种基准测试的探索和利用。

  • CompassKit :它是专为大型语言模型和大型视觉语言模型量身定制的强大评估工具包集合。它提供了一套广泛的工具来有效地评估和衡量这些复杂模型的性能。

目前OpenCompass是获得Meta官方推荐的唯一国产大模型评测体系,大家有兴趣的可以去OpenCompass官网看一下。

2.5 推理部署

在部署阶段,这是完成一个大模型比较关键的一部分。InternLM推出了LMDeploy,这样的一个多功能的工具包,它的主要作用是简化大模型的部署过程,优化推理性能。

image-20240329175601977

它提供了一系列核心功能,包括高效推理引擎TurboMind,支持持久批处理、阻塞KV缓存、动态拆分融合、张量并行和高性能CUDA内核等关键特性,以确保LLM推理的高吞吐和低延迟。

同时LMDeploy还支持模型量化、离线批处理、在线推理服务等功能,并且提供了RESTful API功能,允许使用Python客户端调用服务器的服务,支持批量请求和异步请求的高级特性。LMDeploy还支持直接读取Huggingface模型进行在线转换,以及支持tensor parallel分布式推理。

2.6 智能体

最后在完成了大模型的推理以后,如何实现它的应用呢,InterLM提供了两种agent框架,一个是轻量级的智能体框架Lagent还有多模态的智能体工具箱AgentLego

其中Lagent仅需20行代码即可创建智能代理,这并不意味这它的能力不好,Lagent支持多种类型的智能体能力,比如说比较流行的ReAct、ReWoo和AutoGPT,同时它还灵活的支持各种大语言模型,比如说GPT-3.5/4你可以通过API调用模型,也可以使用HuggingFace上面的模型进行推理实现。

image-20240329180835992

AgentLego是一个开源库,它提供了一系列多功能的工具API,支持多模态扩展,包括视觉感知、图像生成与编辑、语音处理以及视觉-语言推理等功能

AgentLego的主要特点包括为大模型提供丰富的工具集合,能够实现自定义工具并尝试各种智能体系统。其高度的灵活性和可扩展性,可以满足你的各种需求。

image-20240329180912942

到这里相信你已经了解了InternLM2的提升,以及InternLM的开源体系,你可以根据InternLM提供的开源工具,根据InternLM2模型构建自己的一个应用。

最后如果你想要创建一个自己的大语言模型项目,欢迎参加书生·浦语实战营,如果你想加入我的项目欢迎提交issue。

项目地址:Tomb-Robber-Chat

二、InternLM2 技术报告解读

这里报告解读主要总结一下InternLM2在预训练部分、对齐部分以及他相比于其他开源模型有哪些优势。

目前中文的InterLM2的技术报告第一版已经出来了,欢迎大家继续润色。

中文报告https://aicarrier.feishu.cn/wiki/Xarqw88ZkimmDXkdTwBcuxEfnHe

1. 基础设施

InterLM2相比与其他的开源大语言模型,如 LLaMA、Qwen、Mistral 和 Deepseek,在性能方面取得了显着进步。InternLM2 在包含文本、代码和长上下文数据的大型数据集上进行训练。数据使用多种技术进行处理,包括基于规则的过滤、重复数据删除、安全过滤和质量过滤。在模型训练层面使用了InterLM工具体系中的InternEvo框架,这个框架在数据、张量、序列和管道并行性方面都做了优化,以及如何使用各种Zero Redundancy Optimizer(ZeRO)策略来减少内存占用。在技术报告中也展示了InternEvo与DeepSpeed相比下它的性能有多么出色。

Zero Redundancy Optimizer(ZeRO)是一种内存优化技术,旨在通过减少内存冗余来提高数据并行性,从而加速大型模型的训练过程。这种方法允许在使用单个GPU的小型计算机上训练更大的模型,显著提高了训练速度,同时增加了可以有效训练的模型大小[1]

2. 预训练部分

在数据方面InternLM2的数据准备用到的关键技术有:

  • 数据过滤和重复数据删除:利用混合、多级过滤过程,包括基于规则和模型的评分器来删除低质量和重复数据,确保高质量的预训练语料库。(要想实现InterLM2做到回归语言建模的本质高质量的数据是必不可少的

  • 数据标记化:采用 GPT-4 标记化方法来有效压缩各种文本内容,包括英语、编程语言标记和精心挑选的中文标记。

  • 预训练阶段:分三个不同阶段进行预训练,逐步增加上下文窗口大小,从 4k token 开始,逐渐过渡到 32k token,增强模型处理更长上下文的能力。

  • 长上下文数据准备:应用统计和困惑过滤器来选择高质量的长文本数据,确保文本片段之间的连贯性并促进模型对扩展上下文的理解。

在预训练的设置部分,使用了和GPT-4一样的tokenization方法,超参数部分使用AdamW用来优化模型,并使用余弦学习率衰减,使学习率衰减至其最大值的10%。

预训练阶段InterLM2是如何做的,它的关键技术有哪些:

  • 扩展上下文长度: InterLM2 的上下文长度通过分组查询注意 (GQA) 和位置编码外推法扩展到 32,000 个令牌。这使得它能够捕获长期依赖关系,并且在“大海捞针”任务中表现的非常好。

  • 增强其知识库:在预训练和微调期间,InterLM2 的知识库通过特定领域的数据集得到增强。

  • 利用依赖性排序: InterLM2 采用依赖性排序来建立连接代码文件的逻辑顺序。这样,它就可以学习跨文件的依赖关系。

  • 使用“环境”角色: InterLM2利用“环境”角色进行工具学习,并采用统一的聊天格式来处理各种插件扩展和AI环境。

分组查询注意力(Grouped-query attention, GQA)是一种在大型语言模型(LLM)中应用的技术,旨在通过一种称为插值的方法,在多查询注意力(MQA)和多头注意力(MHA)之间找到平衡。GQA的关键特性包括其能够解决MQA的一些缺点,如质量下降和训练不稳定的问题。这种方法不仅提高了推理速度,还保持了与MHA相似的质量水平。

3. 对齐部分

在对齐部分InternLM2 引入了基于人类反馈的条件在线强化学习 (COOL RLHF),以解决 RLHF 期间的偏好冲突。 COOL RLHF 采用条件奖励模型,根据特定条件将注意力动态分配到各种偏好,从而在奖励模型中最佳地整合多种偏好。此外,COOL RLHF采用多轮Online RLHF策略,使LLM能够及时适应新的人类反馈,减少奖励滥用的产生。

下图是(a)LLaMA2 采用了不同的奖励模型来解决偏好冲突的问题。 (b)InterLM2提出的条件奖励模型,利用条件系统提示来协调不同领域中的偏好数据,从而在一个单一的奖励模型中有效地处理各种偏好。

image-20240331173317285

由于奖励模型是基于预训练的SFT模型,并且模型已经学会了遵循各种人类指令,因此让奖励模型遵循不同的系统提示,以适应不同场景的多样化偏好。在条件奖励模型中,system prompt不仅仅是其输入的一个组成部分;它们也是指导奖励分数与不同场景中特定偏好对齐的关键工具。

正如上面所说,对于来自不同领域的查询,InterLM2在计算奖励分数之前,为每个采样响应添加适当的条件系统提示,如下图所示。这种做法确保了模型的响应与不同领域的要求保持上下文一致。

image-20240331173506292

在获得条件奖励模型之后,使用近端策略优化(Proximal Policy Optimization, PPO)方法将大语言模型与由奖励模型表示的人类偏好对齐。并且为了应对PPO阶段中的奖励滥用的挑战,引入了一种在线(Online Reinforcement Learning with Human, Online RLHF)方法,分为两个不同的路径:

  • 快速路径(Fast Path)用于立即、有针对性的改进。

  • 慢速路径(Fast Path)用于长期、全面地改进奖励模型。

快速路径和慢速路径相互补充,为减轻奖励滥用并提升经人类反馈训练的LLMs的性能和可靠性提供了一个适应性框架。

PPO是基于策略梯度的方法,旨在解决传统策略梯度方法在训练过程中步长选择敏感和容易导致训练不稳定的问题。它通过引入一个“近端”目标函数来限制新旧策略之间的差异,从而使得算法更加稳定和高效。

PPO算法的核心思想是在每个更新步骤中,确保当前的策略参数不会偏离旧策略参数太远。这通过限制策略更新的幅度来实现,具体方法是在目标函数中添加一个项,用于惩罚偏离旧策略过多的更新。这种方法不仅提高了算法的稳定性,还使得PPO在多种强化学习应用中表现优异。

对于长文本微调部分InterLM2使用了两种数据:

  1. 从书籍中获取的长上下文数据

  2. 从GitHub仓库中获得并通过特定范式连接的长上下文数据

关于数据处理流程请参考下图:

image-20240331174030893

4.评测部分

下面总结一下InterLM2在数据集测试方面的表现以及不足:

InternLM2 在多个主观对齐基准上表现优于或达到接近 SOTA 的结果,证明了其输出与人类偏好之间的高度一致性。

  • 主观评估任务: InternLM2 在各种主观评估基准上始终取得 SOTA 或接近 SOTA 的结果,表现出与人类偏好的高度一致性。

  • AlpacaEval数据集上,InternLM2-20B 的胜率达到 21.8,是评估模型中最高的。

  • MTBench数据集上,InternLM2 在 7B 和 20B 版本中均取得领先分数。

  • AlignBench数据集上,InternLM2 在 7B 和 20B 版本中均取得了 SOTA 分数,优于 GPT-3.5。

  • CompassArena: InternLM2在7B和20B版本中均获得最高胜率,中文创造力和语言能力表现出色。

  • IFEval:尽管执行指令任务存在挑战,但 InternLM2 在 7B 和 13-20B 阶段分别排名第二和第三。

InternLM2 显示不同参数大小的长上下文性能没有显着差异。该模型系列在 L-Eval 和 LongBench 等长上下文基准测试上取得了强劲的性能,其中 InternLM2-Chat-20B-SFT 在 L-Eval 上取得了最佳性能,而 InternLM2-Chat-7B-SFT 在 4 个输出上优于其他模型LongBench 上的 6 个子任务类别。

image-20240331172949480

InternLM2的不做表现在:

  1. 数学和推理能力:正如 AlignBench 数据集中的详细分数所示,InternLM2 在数学和推理能力方面还有改进的空间。

  2. 条件奖励模型:如果没有条件系统提示,RLHF 训练中使用的奖励模型的有效性就会降低,这凸显了精心设计此类提示的重要性。

image-20240331173206040

从上面的可以看出InternLM2在涉及语言理解和知识应用的任务中展现出了卓越的竞争力,这都得益于其严谨和高质量的训练语料。

以上是我对InternLM2技术报告的一个总结和解读,欢迎大家评论交流讨论。