2023年6月,InternLM的第一代大模型正式发布。仅一个月后,该模型以及其全套工具链被开源。随后,在8月份,多模态语料库chat7B和lagent也被开源。而在接下来的9月份,InternLM20B的开源发布进一步加强了全线工具链的更新。最终,2024年1月17日,InternLM2也正式开源。
InternLM2提供了两种不同参数量级的模型,分别是7B(Billion)和20B。前者更轻量级,适用于一般性应用,而后者则能够支持更复杂的场景。
每个参数规格都包含三种不同的模型版本:
- InternLM2-Base:基座模型,提供了基本的功能和性能。
- InternLM2:在基座模型的基础上进行了多方面的增强。
- InternLM2-Chat:在基座模型的基础上,通过SFT(Supervised Fine-Tuning,监督微调)和RLHF(基于人类反馈的强化学习)进行了人类对齐,专门针对对话交互场景进行了优化。
模型预训练方面的信息如下:
-
数据集:
- 书生·万卷1.0:包含2TB的多模态数据。
- 书生·万卷CC:包含400GB的多源数据,质量高且覆盖长时间跨度。
-
预训练框架:采用Intern-Train框架,支持从8卡到千卡的加速。开箱即用:只需修改配置文件,即可开始预训练。
-
模型微调框架:使用Xtuner框架。
-
增量续训:支持增量学习,能够在保持模型旧知识的条件下注入新知识。
-
有监督微调:通过少量的领域知识进行微调,使模型更好地适应特定领域场景。
-
智能体构建:采用Lagent框架,支持多种能力,包括react、reward和autogpt,并适配多种模型。简单易扩展:内置多模态工具箱AgentLego,便于扩展。
-
模型评测:采用OpenCompass,在适配了100多个评测集的基础上进行循环评测,包括数据污染检查、模型推理接入、长文本能力评测和中英文双语主观评测。
-
模型部署:使用LMDeploy进行部署。
-
模型轻量化:支持4bit权重,以减小模型的大小。
-
推理引擎:支持pytorch、turbomind以及并行优化。
-
部署服务:采用openai-server和gradio。
模型预训练框架
InternEvo
- 高效训练框架:InternEvo是一个专为InternLM2设计的高效训练框架,它支持大规模并行训练,包括数据、张量、序列和管道并行,以及Zero Redundancy Optimizer(ZeRO)技术,以优化内存使用和计算效率。
- GPU资源高效利用:InternEvo通过减少通信规模和使用适应性分片技术,有效地降低了GPU间的通信成本,实现了在保持高吞吐量的同时,随着GPU数量增加,模型FLOPs利用率(MFU)保持稳定。
- 适应性硬件管理:框架能够根据训练规模调整硬件资源,支持256,000 tokens的长序列训练,并通过内存管理技术如统一内存管理和内存池来减少碎片,确保在处理长文本时的内存效率。
- 故障容忍性:针对GPU数据中心的挑战,InternEvo设计了故障容忍系统,包括实时备份和恢复机制,确保在硬件故障时能快速恢复训练,减少数据丢失。
- 交互式训练:在RLHF阶段,InternEvo支持多模型的交互式训练,通过与Ray的集成,构建了一个灵活且可扩展的框架,支持不同模型执行引擎和算法设计,确保了训练过程的高效性。
- Model Structure:
InternLM2
基于Transformer架构,但采用了LLaMA的设计改进,如使用RMSNorm
和SwiGLU
,以提高训练效率和性能。模型结构的标准化和兼容性设计使其与LLaMA等其他知名模型系列兼容,同时保持了高效性。
训练
资料中介绍了InternLM2
的预训练过程,包括数据处理、模型结构和训练设置。
- 预训练数据
- 文本数据:网页、论文、专利和书籍,经过标准化、过滤、格式化和安全检查,确保数据质量。
- 代码数据:收集自GitHub等平台,通过统一格式化和质量筛选,确保编程语言相关数据的高质量。
- 长文本数据:针对长文本数据,进行长度筛选、统计分析和复杂性过滤,以提高数据质量并减少冗余。
分词(Tokenization):选择GPT-4的tokenization方法,结合中文和编程语言的特性,构建了容量为100,256的词汇表。
超参数设置:包括模型的层数、维度、头数等,以及学习率、优化器类型和衰减策略。见下图
预训练的不同阶段
- 4k 文本训练:主要阶段,使用不超过4096字节的文本进行训练。
- 长文本训练:扩展到32,000字节的上下文,采用GQA技术和长序列处理技术。
- 特定能力提升训练:针对特定能力的增强训练,使用精心筛选的高质量数据集。
对齐
InternLM2模型如何与人类观念靠近,使模型具备对世界知识有内在理解,对事物的偏好把握对齐人类
有监督微调(SFT,Supervised Fine-Tuning): 使用1000万高质量的指令数据进行微调,以确保其能够理解和执行各种任务,如对话、NLP任务和数学问题。
COOL RLHF
Conditional OnLine RLHF
- 条件奖励模型(Conditional Reward Model):引入了条件系统提示,允许模型根据特定条件动态调整对不同偏好(如帮助性和无害性)的关注,解决了偏好冲突问题
- 在线人类反馈强化学习(Online RLHF):使用最近邻策略优化(PPO,Proximal Policy Optimization)使模型与条件奖励模型得到人类偏好对齐,其通过快速路径(快速修复奖励模型)和慢速路径(长期奖励模型优化)两者的结合,提高了模型的稳定性和可靠性。
PPO训练细节
- 长文本微调: 在SFT和RLHF阶段继续使用长文本数据,确保模型在处理长序列任务时的性能。
- 工具增强:
- 通用工具调用:引入了“environment”角色,支持通用工具调用,如代码解释器和外部插件,以增强模型处理工具相关任务的能力。
- 代码解释器:将Python代码解释器作为工具,与特定的指令格式结合,用于解决数学问题,如RICO(Reasoning Interleaved with Coding)策略,通过迭代式学习提高模型的数学问题解决能力。