视频笔记
来源:书生·浦语大模型全链路开源体系 — — BiliBili
摘要:参加了书生·浦语大模型实战营第二期初夏场,记录一下第一节课的视频作业和文档作业。
主讲人:陈恺 | 上海人工智能实验室 青年科学家
1. 引言
- 介绍:上海人工智能实验室推出的“书生·浦语大模型全链路开源体系”。
- 主讲人:陈恺,青年科学家。
2.大模型发展路径
-
专用模型:
- 2006年:深度置信网络突破。
- 2012年:ImageNet竞赛。
- 2016年:AlphaGo围棋比赛。
- 2021年:AlphaFold蛋白质结构预测。
-
通用大模型:ChatGPT, GPT-4, PaLM, DeepMind Flamingo等。
3. 书生·浦语 2.0 (InternLM2) 体系
- 7B:轻量级模型。
- 20B:高性能综合模型。
- InternLM2-Base:高质量、通用语言能力。
- InternLM2-Chat:优化对话交互。
4. 数据处理与建模技术
- 数据清洗技术:多维度数据价值评估,高质量语料驱动,数据补齐。
5. 应用流程
- 模型选择:业务场景复杂性评估。
- 算力评估:部分参数微调。
- 构建智能体:环境交互。
- 模型部署:评测与部署。
6. 开源开放体系
- 数据:书生·万卷,2TB数据。
- 预训练:InternLM-Train,3600 tokens/sec/gpu。
- 微调:XTuner,全参数微调。
- 部署:LMDeploy,每秒生成2000+ tokens。
- 评测:OpenCompass,100套评测集。
- 应用:Lagent AgentLego,支持多种智能体。
7. 高质量语料数据
-
书生·万卷 1.0:
- 文本数据:5亿文档,1TB。
- 图像-文本数据集:2200万个文件,140GB。
-
书生·万卷 CC:
- 数据收集:2013-2023年互联网公开内容。
- 数据特点:高质量语料驱动,安全加固处理。
8. 预训练
- 高可扩展:8卡至千卡训练,效率92%。
- 性能优化:Hybrid Zero技术,性能提升50%。
- 兼容主流:接入HuggingFace生态。
- 开箱即用:支持多种规格语言模型。
9. LMDeploy 部署
LMDeploy 提供大模型在GPU上部署的全流程解决方案,包括模型轻量化、推理和服务。
- 接口:支持Python, gRPC, RESTful。
- 轻量化:4bit权重, 8bit k/v。
- 推理引擎:turbomind, pytorch, triton inference server。
- 服务:openai-server, gradio。
- 高效推理:
- 持续批处理技巧
- 深度优化的低比特计算kernels
- 模型并行
- 高效的k/v缓存管理机制
- 工具链:
- 量化、推理、服务全流程
- 无缝对接OpenCompass评测推理精度
- 多维度推理速度评测工具
10. 轻量级智能体框架 Lagent
Lagent 提供支持多种类型智能体的能力,灵活支持多种大语言模型。
-
支持的智能体类型:
- ReAct:选择工具,执行工具,结束条件。
- ReWoo:计划拆分,计划执行,DAG。
- AutoGPT:人工干预,选择工具,执行工具。
-
支持的语言模型:
- GPT-3.5/4
- InternLM
- Hugging Face Transformers
- Llama
-
工具和能力拓展:
- AI工具:文生图、文生语音、图片描述等。
- Rapid API:搜索、计算器、代码解释器、财经API、体育资讯API等。
11. 多模态智能体工具箱 AgentLego
AgentLego 提供了多模态相关领域的前沿算法功能,支持多个主流智能体系统。
-
工具集合:
- 提供大量视觉、多模态相关功能。
- 支持 LangChain, Transformers Agent, Lagent 等。
-
多模态工具调用接口:支持多种输入输出格式的工具函数。
-
工具部署:一键式远程工具部署,轻松使用和调试大模型智能体。
InternLM2技术报告笔记
论文地址:https://arxiv.org/pdf/2403.17297.pdf
社区翻译版:https://zhuanlan.zhihu.com/p/690535595
本笔记对社区翻译版进行阅读,并对部分重要内容整理相关笔记
Abstract
大型语言模型(LLMs)如ChatGPT和GPT-4的发展引发了关于通用人工智能(AGI)来临的讨论。然而,将这样的进步应用到开源模型中一直颇具挑战。本文介绍InternLM2,一个开源的大语言模型,它在6个维度和30个基准的全面评估中超越了其前身,特别是在长序列建模和开放性主观评估方面,通过创新的预训练和优化技术实现了这一突破。InternLM2详细阐述了预训练过程中各类数据的准备,包括文本、代码和长文本数据。InternLM2有效地捕捉长期依赖性,预训练阶段从4k个token开始,然后扩展到32k个token,其在200k个“大海捞针”测试中的表现优异。InternLM2还通过监督微调(SFT)和一种基于人类反馈的新型条件在线强化学习方法(COOL RLHF)策略进行进一步校准,以解决人类偏好冲突和奖励策略滥用问题。我们通过发布不同训练阶段和模型大小的InternLM2,为社区提供了模型演进的洞察。
1.Introduction
大语言模型的发展包括预训练、监督微调(SFT)和基于人类反馈的强化学习(RLHF)等主要阶段 (Ouyang et al., 2022)。预训练主要基于利用大量的自然文本语料库,积累数万亿的token。这个阶段的目标是为大语言模型配备广泛的知识库和基本技能。==预训练阶段的数据质量被认为是最重要的因素。==然而,过去关于大语言模型的技术报告 (Touvron et al., 2023a;b; Bai etal., 2023a; Bi et al., 2024)很少关注预训练数据的处理。InternLM2详细描述了如何为预训练准备文本、代码和长文本数据。
数据决定智能
我们的贡献有两个方面,不仅体现在模型在各种基准测试中的卓越性能,还体现在我们在不同发展阶段全面开发模型的方法。关键点包括
- 开源InternLM2模型展现卓越性能: 我们已经开源了不同规模的模型包括1.8B、7B和20B,它们在主观和客观评估中都表现出色。此外,我们还发布了不同阶段的模型,以促进社区分析SFT和RLHF训练后的变化。
- 设计带有200k上下文窗口: InternLM2在长序列任务中表现出色,在带有200k上下文的“大海捞针”实验中,几乎完美地识别出所有的“针”。此外,我们提供了所有阶段包括预训练、SFT和RLHF的长文本语言模型的经验。
- 综合数据准备指导: 我们详细阐述了为大语言模型(LLM)准备数据的方法,包括预训练数据、特定领域增强数据、监督微调(SFT)和基于人类监督的强化学习(RLHF)数据。这些细节将有助于社区更好地训练LLM。
- 创新的RLHF训练技术: 我们引入了条件在线RLHF(COOL RLHF)来调整各种偏好,显著提高了InternLM2在各种主观对话评估中的表现。我们还对RLHF的主观和客观结果进行了初步分析和比较,为社区提供对RLHF的深入理解。
2.基础设施
InternEvo
在这一部分中,介绍了在预训练、SFT 和 RLHF 中使用的训练框架 InternEvo。
我们使用高效的轻量级预训练框架InternEvo进行模型训练。这个框架使得我们能够在数千个GPU上扩展模型训练。
使用的硬件-显存优化技术有:
- 数据、张量、序列和管道并行技术
- 各种Zero Redundancy Optimizer (Rajbhandari et al., 2020) 策略
- 为了提高硬件利用 率,我们还引入了FlashAttention技术(Dao, 2023)和混合精度训练,使用BF16
为了减少通信开销,使用的技术有:
- 自适应分片技术(如Full-Replica、FullSharding和Partial-Sharding)
- 一个优化框架,旨在识别最有效的分片因子,以在满足GPU内存限制的同时最小化通信费用。
长序列训练的主要挑战之一是计算速度和通信开销之间的权衡,为此:
- 将GPU内存管理分解为四个并行维度(数据、 张量、 序列和管道)和三个分片维度(参数、梯度和优化器状态)(Chen et al., 2024a),对每个维度的内存和通信成本进行了详尽分析,并使用执行模拟器来识别和实施最优的并行化策略。
最后,InternEvo还解决了在GPU数据中心高效训练大模型的挑战(容错性)。
模型结构
主流LLMs均会使用Transformer(Vaswani et al. (2017)),但其中的结构改进会有所不同,InternLM2使用的改进有:
- 将LayerNorm(Ba et al. (2016))替换为RMSNorm(Zhang & Sennrich (2019))
- 采用SwiGLU(Shazeer (2020))作为激活函数
- 高效推理的提升(lla (2023))和运算符优化(Dao (2023))
- 遵循LLaMA的结构设计原则
- 为了提高效率,我们将𝑊𝑘、𝑊𝑞和𝑊𝑣 矩阵合并,这在预训练阶段带来了超过5%的训练加速
- 重新配置了矩阵布局以更好地支持多样化的张量并行(tp)变换
- 采用了分组查询注意力(GQA)(Ainslie et al. (2023)),以实现高速度和低GPU内存下的长序列推理
3.预训练
3.1 预训练数据
InternLM2对预训练非常重视,数据决定智能。
文本数据
数据来源分布
Source | Docs (M rows) | Bytes (GB) | Bytes-percent |
---|---|---|---|
en-books | 0.50 | 220.14 | 1.63% |
en-techlit | 59.27 | 576.48 | 4.27% |
en-webpages | 3614.07 | 9129.39 | 67.51% |
zh-books | 0.71 | 366.82 | 2.71% |
zh-techlit | 89.59 | 668.19 | 4.94% |
zh-webpages | 928.94 | 2562.86 | 18.95% |
表1:来自不同来源的预训练数据汇总
数据处理流程
数据格式化
基于规则的处理
去重
安全过滤
质量过滤
代码数据
High | Moderate | Low | |||
---|---|---|---|---|---|
Bytes (GB) | Percentage | Bytes (GB) | Percentage | Bytes (GB) | Percentage |
105.6 | 16.8% | 440.1 | 69.9% | 83.85 | 13.3% |
表2:基于可学习分类器的代码数据质量统计,其中高质量数据将被多次训练,中等质量数据将被训练一次,低质量数据将被丢弃。那些数据量比较少的编程语言的数据将被保留,不会在统计中考虑
格式清理
数据去重
质量过滤
依赖排序
长上下文
数据过滤流水线
统计过滤器
困惑度过滤器
阈值选择
3.2 预训练设置
略过
3.3 预训练阶段
预训练过程包括三个不同的阶段。在第一阶段,我们使用了长度不超过4k的预训练语料库。在第二阶段,我们包括了长度不超过32k的50%的预训练语料库。在第三阶段,我们使用了特定能力的增强数据。在每一阶段,我们都混合了英文、中文和代码数据。
4k上下文
长上下文(32K)
特定能力增强训练
收集了一个丰富的数据集,其中包含精心策划的高质量检索数据和来自Huggingface数据集平台的各种类型的开源数据。
经过特定能力增强训练阶段之后,InternLM2模型在编程、推理、问题回答和考试等方面表现出显著的性能提升,详细的评估结果将在接下来的评估部分中展示。为了助力社区的研究工作,我们发布了增强训练前后的 checkpoints,分别命名为InternLM2-{size}-Base和InternLM2-{size}。
Category | Tokens(B) | Ratio(%) |
---|---|---|
Retrieved Stem Data | 15.97 | 65 |
Retrieved Special Domain Data | 2.17 | 8 |
Selected High Quality Data | 6.26 | 26 |
Total | 24.40 | 100 |
表4:特定能力增强训练的详细数据
4.对齐
预训练阶段为大型语言模型(LLMs)赋予了解决各种任务所需的基础能力和知识。我们进一步微调LLMs,以充分激发其能力,并指导LLMs作为有益和无害的AI助手。这一阶段,也常被称为“对齐”(Alignment),通常包含两个阶段:监督微调(SFT)和基于人类反馈的强化学习(RLHF)。
InternLM2提出了带人类反馈的条件在线强化学习(COnditionalOnLine Reinforcement Learning with Human Feedback,COOL RLHF),它应用了一种新颖的条件奖励模型,可以调和不同的人类偏好(例如,多步推理准确性、有益性、无害性),并进行三轮在线RLHF以减少奖励黑客攻击(见4.2 基于人类反馈的条件在线强化学习COOL RLHF)。
4.1 监督微调 (SFT)
在监督微调阶段,使用了一个包含1000万个指令数据实例的数据集。这些数据涵盖了多种主题,包括一般对话、NLP任务、数学问题、代码生成等。
4.2 基于人类反馈的条件在线强化学习 (COOL RLHF)
4.2.1 条件奖励模型
条件奖励模型通过引入系统提示来处理不同领域中的偏好冲突。这个模型能够在一个单一的奖励模型中有效地管理各种偏好,利用240万个二进制偏好对进行训练。为了减少简单样本和困难样本之间的不平衡,我们引入了聚焦排名损失(Focal Ranking Loss),并将奖励分数限制在-5到5的范围内。
4.2.2 Online RLHF
我们采用了快速路径和慢速路径两种方法来应对奖励滥用问题。快速路径用于快速识别和纠正奖励滥用行为,而慢速路径通过包含最新模型的响应来全面改进奖励模型。在训练过程中,我们进行了三轮细化训练,每一轮都提供了宝贵的洞察力。
4.2.3 PPO 训练细节
较为常用的PPO算法
在强化学习对齐阶段,我们采用了近端策略优化(PPO)算法。模型初始化使用SFT模型的权重,评论家模型从奖励模型初始化,并经历50次的预训练阶段。为了保持模型的基础能力,我们加入了预训练损失。超参数设置为KL散度系数0.01,演员模型学习率1e-6,评论家模型学习率5e-6。
4.3 长文本微调
我们使用了长上下文预训练数据来保持LLM的长上下文能力。数据来源于书籍和GitHub仓库。我们在GitHub上搜索了引用核心仓库并拥有超过10,000星标的开源仓库,并进行了数据清洗和过滤。
4.4 工具增强的LLMs
通过引入“环境”角色,我们实现了通用工具的调用,并定义了两个特定关键词来支持AI代理的多样化目的。这些修改增强了InternLM2的代理能力和解决数学问题的能力。
5.评测分析
5.1 概述
本节全面评测和分析了语言模型在多个领域和任务中的表现,主要分为两类:(a)下游任务和(b)对齐性。我们讨论了潜在的数据污染问题及其对模型性能和可靠性的影响。除非另有说明,所有评测都使用OpenCompass进行。
5.2 在下游任务上的表现
5.2.1 综合考试
对一系列与考试相关的大型数据集进行了基准测试,包括MMLU、CMMLU、C-Eval、AGIEval和GAOKAO-Bench。我们报告了不同模型在这些数据集上的表现。InternLM2在多个基准模型中表现出色,特别是在AGIEval和GAOKAO任务中。
5.2.2 语言和知识
评测模型在语言理解和知识应用上的能力,包括数据集:TriviaQA、NaturalQuestions、C3、RACE和FLORES。InternLM2在这些任务中展现了卓越的竞争力。
5.2.3 推理和数学
我们验证了模型在推理和数学任务上的表现,使用的数据集包括WinoGrande、HellaSwag、BBH、GSM8K-Test、MATH和TheoremQA。
5.2.4 编程
评测模型在编程任务中的表现,使用数据集包括HumanEval、MBPP和HumanEval-X。InternLM2在代码生成任务中表现出色,尤其在多语言编程任务中。
5.2.5 增强训练前后的模型表现
通过增强训练,InternLM2模型在多个维度上的表现均有显著提升。
预训练——预训练阶段——特定能力增强训练
5.2.6 长文本建模
我们评测了模型在长文本建模中的能力,使用基准包括L-Eval和LongBench。InternLM2在长文本基准测试上表现出色,尤其是在L-Eval和LongBench的多个子任务中。
5.2.7 工具使用
评测模型在使用外部工具和API方面的能力,使用数据集包括GSM8K、MATH、MathBench、T-Eval和CIBench。InternLM2在这些任务中表现优异,特别是在使用代码解释器和ReAct协议方面。
5.3 偏好对齐表现
5.3.1 英文主观评测
评测模型在英文主观任务中的表现,使用数据集包括AlpacaEval和MTBench。InternLM2在这些任务中表现出色,胜率和评分均达到了领先水平。
5.3.2 中文主观评测
评测模型在中文主观任务中的表现,使用数据集包括CompassArena和AlignBench。InternLM2在多个测试集上达到了SOTA或接近SOTA的表现。
5.3.3 指令跟随评测
评测模型的指令跟随能力,使用数据集包括IFEval。尽管挑战性较大,InternLM2在相似大小模型中表现领先。
5.3.4 条件奖励模型的消融实验
通过比较使用和不使用有条件系统提示词的奖励模型的表现,发现使用系统提示词可以显著提高模型在多个领域的准确率。
5.4 关于数据污染的讨论
评估了基准模型在GSM8K数据集上的数据污染情况,重点关注LM损失和过拟合程度。异常值表明了潜在的数据泄露问题。
6. 结论
本报告介绍了InternLM2大型语言模型,它在主观和客观评测中表现出色。InternLM2基于超过2T的高质量预训练数据进行训练,涵盖了1.8B、7B和20B参数的模型规模,适用于多种场景。为了更好地支持长文本处理,InternLM2采用了GQA来降低推理成本,并额外训练在多达32000个上下文中。除了开源模型本身,我们还提供了训练过程中的多个阶段检查点,以便利后续研究者的研究。
除了开源模型,我们还详细阐述了InternLM2的训练过程,包括训练框架、预训练文本数据、预训练代码数据、预训练长文本数据和对齐数据。此外,针对强化学习后训练(RLHF)过程中遇到的偏好冲突,我们提出了条件在线RLHF方法,以协调不同的偏好。这些信息对于理解如何准备预训练数据以及如何更有效地训练大型模型具有参考价值。