InternLM 简介
InternLM 由上海人工智能实验室开发的高质量开源语言大模型,并且配备全套的工具链。
模型版本
1.InternLM
2.InternLM-Math 双语数学推理模型
3.InternLM-XComposervision&language 多模态大模型
开发工具
- InternEvo: 预训练&微调
- XTuner: 微调
- LMDeploy: 模型压缩与部署
- Lagent: 打造智能体
- AgentLego: 多种API接口工具,可供智能体扩展
- OpenCompass: 模型评估
- OpenAOE: 用来搭建多个模型进行对比的UI界面
数据
书生·浦语大模型的数据集名为"书生·万卷",发布日期 2023 年 8 月 14 日。它是一个包含1.6万亿token的多语种高质量数据集,涵盖多种模态和任务。包含文本数据(50 亿个文档,数据量超 1TB),图像-文本数据集(超 2200 万个文件,数据量超 140GB),视频数据(超 1000 个文件,数据量超 900GB)。这个数据集为模型的训练提供了丰富的语言信息和知识基础。
预训练
书生·浦语大模型使用了InternLM-Train进行预训练。InternLM-Train是一个基于Transformer架构的预训练模型,它具有1040亿参数,通过在书生·万卷数据集上进行训练,使模型具备了强大的语言理解和生成能力。它支持从 8 卡到千卡训练,千卡训练效率达 92%;无缝接入 HuggingFace 等技术生态,支持各类轻量化技术。
微调:
上海人工智能实验室开发了XTuner微调框架,有以下特点:
- 任务类型支持:适用于多种任务,包括增量预训练、指令微调等。
- 微调成本:支持低成本微调方式,如全量参数、LoRA、QLoRA,适用于各种场景。
- 模型支持:适配多种大语言模型,如InternLM、Llama等,兼容开源生态,支持HuggingFace、ModelScope等。
- 优化加速:自动优化计算加速,使用户无需处理复杂优化。 硬件支持:兼容NVIDIA 20系以上显卡,8GB显存可微调7B模型。
- 数据格式:支持Alpaca、MOSS、OpenAI等多种数据格式。
技术文本学习:
模型架构
遵循LLaMA所设计的transformer-based架构。在InternLM2主要提升点在于支持长文本处理和提高训练效率,具体包括以下几个关键点:
Group Query Attention (GQA):为了降低长序列推理时的内存占用,InternLM2采用了GQA技术,这允许模型在处理长文本时保持较低的内存消耗。
模型大小:InternLM2提供了不同规模的模型,包括1.8B、7B和20B参数版本,以适应不同的应用场景和资源限制。
训练策略:模型在预训练阶段使用了多种数据类型,包括文本、代码和长文本数据,以确保模型能够学习到广泛的知识和技能。
预训练和微调:InternLM2通过 监督微调(Supervised Fine-Tuning, SFT) 和 人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF) 来进一步优化模型,使其更好地符合人类指令和价值观。
对齐策略:为了解决RLHF过程中可能出现的偏好冲突问题,InternLM2引入了 条件在线RLHF(COOL RLHF) ,该策略采用条件奖励模型来协调不同的人类偏好,并执行多轮在线RLHF以减少奖励黑客行为。
长文本建模:InternLM2特别关注长文本的建模能力,通过在预训练和微调阶段使用长文本数据来保持模型的长文本处理能力。
工具增强:模型还被设计为能够利用外部工具和API,以增强其解决复杂问题的能力。
监督微调(Supervised Fine-Tuning,简称SFT)
7B和20B版本的InternLM2模型使用AdamW优化器进行训练,初始学习率设置为4e-5。训练过程中,模型通过执行多样化的任务来学习如何更好地遵循人类的指令。为了适应长文本的处理,InternLM2在SFT阶段继续使用长文本预训练数据。此外,还引入了长文本能力保持策略,确保模型在微调后仍能处理长文本。
在SFT阶段,InternLM2使用了一个奖励模型来评估模型输出的质量。这个奖励模型是基于之前训练好的模型权重进行初始化的,然后通过修改输出层来适应SFT任务的需求。
InternLM2的长文本建模能力
- Group Query Attention (GQA):InternLM2采用GQA技术来处理长序列数据,这有助于减少在推理长文本时的内存占用。GQA允许模型在处理长文本时保持较低的内存消耗,同时有效地捕捉长距离依赖关系。
- 长序列训练:在预训练阶段,InternLM2首先使用长度不超过4k的文本数据进行训练,然后逐步过渡到32k长度的文本数据。这种逐步增加上下文长度的方法使得模型能够适应更长的文本序列。
- 位置编码扩展:为了适应长文本,InternLM2对位置编码(Positional Encoding)进行了扩展,例如,通过增加Rotary Positional Encoding(RoPE)的基数,从而更有效地处理长文本中的定位信息。
- 长文本保持策略:在==监督微调(SFT)和人类反馈强化学习(RLHF)==阶段,InternLM2继续使用长文本预训练数据,以保持其长文本处理能力。
高效的训练框架:
InternLM2使用了高效的训练框架InternEvo,该框架通过数据并行、张量并行、序列并行和流水线并行等技术,支持在数千个GPU上扩展模型训练,从而有效地处理长文本数据
人类反馈强化学习(RLHF)
简单来说,是引入专家标注并构建奖惩模型,用强化学习的方式来进行微调学习。
Group Query Attention (GQA)
GQA 的motivation如下:
- 质量与速度的平衡:GQA 通过分组查询头,而不是使用单个键值对头,旨在保持与 MHA 类似的质量,同时接近 MQA 的推理速度。
- 内存带宽的优化:在生成较长序列时,加载键(keys)和值(values)导致的内存带宽开销尤为重要。GQA 通过减少键值对的数量来降低这种开销,同时保持了模型的容量。
- 成本效益的训练:GQA 提供了一种成本效益的方法,通过使用原始预训练计算的一小部分来对现有的多头注意力模型进行检查点升级(uptrain),从而获得快速多查询以及高质量的多头注意力检查点。
- 模型大小的适应性:GQA 允许随着模型大小的增加保持相同的带宽和容量减少比例,这对于大型模型尤其有利,因为大型模型通常在内存带宽方面受到较少的限制。
- 灵活性和扩展性:GQA 通过调整组的数量提供了灵活性,可以根据不同的模型大小和应用需求进行调整,以找到最佳的性能和速度的平衡点。将多个查询作为一个组
- 查询组之间的交互:这种方式能够更好地捕捉到不同轮次之间信息流动和上下文关联,特别适用于多轮对话理解等场景。