赞
踩
随着国内央企通用人工智能的兴起,为打造大模型生态应用,各类比赛也比较火热,近期看到了上海人工智能实验室在做的书生浦语大模型,繁忙的工作之余有些业余时间跟小伙伴一起学习、打比赛,是学习笔记,也是作业。
1,开源历程
2024年1月17日,InternLM 2 已经开源,面向不同的使用需求,每个规格包含三个版本。
2,书生浦语2.0使用需求
- 7B 适用轻量级的研究和应用。
- 20B 可有效支持更加复杂的使用场景。
3,面向不同的使用需求,每个规格有三个版本:
InternLM2-Base --可塑性的模型基座。
InternLM2
--在Base的基础上,在多个能力方向进行了强化,大部分应用中考虑适用的优秀基座。
InternLM2-Chat
--在Base基础上,经过SFT和RLHF面向对话交互进行了优化,具有很好的指令遵循,共情聊天和调用工具的能力。
4,主要亮点
- 20万token上下文
- InternLM2-Chat 在重点测评领域比肩ChatGPT。
- 精准指令跟随,结构化创作,在AIpacaEval2 超越GPT-3.5 和 Gemini Pro
- 工具调用能力整体升级,支持工具多轮调用,复杂智能体搭建。
- 突出的数理能力和实用的数据分析功能:加入代码解释后,在GMS8k 和Math 达到和GPT-4相仿的水平。
5,工具调用能力
- 借助代码解释器可以进一步提升模型能力
- 实用数据分析能力,可以使用机器学习算法,做数据预测
InternLM2 技术报告详细阐述了预训练过程中各类数据的准备,包括文本、代码 和长文本数据。InternLM2 可以有效地捕捉长期依赖性,预训练阶段从4k个token开始,扩展到32k个token,在200k个“大海捞针”测试中表现优异。InternLM2还通过监督微调(SFT)和一种基于人类反馈的新型条件在线强化学习方法(COOL RLHF)策略进行进一步校准,解决了人类偏好冲突和奖励策略滥用问题。
- 开源了1.8B、7B和20B,在主观和客观评估中都表现出色,发布了不同阶段的模型,以分析SFT和RLHF训练后的变化。
- 设计了带有200k上下文的窗口
- 说明了为LLM模型准备数据的方法,包括预训练数据、特定领域增强数据、SFT监督微调和基于人类监督的强化学习数据。
- 创新的RLHF训练技术,引入了条件在线RLHF(COOL RLHF)调整各种偏好,提高了InternLM2在各种主观对话评估中的表现。
模型在预训练、SFT 、 RLHF 中使用的训练框架为 InternEvo。
模型使用高效的轻量级预训练框架InternEvo进行模型训练,框架使我们能够在数千个GPU上扩展模型训练,通过数据、张量、序列和管道并行技术来实现,为了进一步提高GPU内存效率InternEvo集成了各种Zero Redundancy Optimizer策略,显著减少了训练所需的内存占用。为了提高硬件利用率,模型引入了FlashAttention技术和混合精度训练,使用BF16。
当在数千个GPU上训练InternLM时,InternEvo展现出强大的扩展性能。使用8个GPU,全局批次大小为400万个令牌训练InternLM-7B时,InternEvo实现了64%的 模型计算量利用率(MFU),当扩展到1024个GPU时,尽管保持相同的全局批次大小, InternEvo仍能维持惊人的53% MFU,这种级别的扩展性能尤其具有挑战性,因为批次大小保持不变,而随着GPU数量的增加,计算与通信的比例会降低,相比之下,DeepSpeed在使用ZeRO-1和MiCS在1024个GPU上训练InternLM-7B时,只能达到大约36%的MFU。 InternEvo在序列长度方面也表现出强大的扩展性, 支持训练不同规模的LLM, 例如在256,000个令牌的序列长度下训练InternLM-7B, 可以达到接近88%的MFU。 相比之下,eepSpeed-Ulysses和Megatron-LM只能达到大约65%的MFU。对于更大规模的LLM, 如300亿或700亿参数的模型,训练性能的提升也同样明显。
如图示:在使用InternEvo训练InternLM-7B模型时的模型浮点运算利用率 (Model FLOPs Utilization, MFU)。我们通过基准测试,使用4096个令牌的序列长度来评估不同GPU数量下的 训练性能,同时也在128个GPU上测试不同序列长度下的训练性能。
InternEvo通过实现一系列自适应分片技术(如Full-Replica、FullSharding和Partial-Sharding)来应对通信挑战,以实现强大的扩展性能 (Chen et al., 2024b)。 这些技术允许模型状态(参数、梯度和优化器状态)的各个部分独立选择合适的分片方法和设备网格配置,从而灵活地在GPU基础设施中分布模型状态。InternEvo还引入了一个优化框架,旨在识别最有效的分片因子,以在满足GPU内存限制的同时最小化通信费用。
InternEvo进一步通过精心协调通信和计算,以优化整体系统性能。 在使用参数分片时,模型的所有参数分布在多个GPU上以节省GPU内存。在每个训练步 的每个微批次的前向和反向传播过程中,InternEvo会高效地预加载即将到来的层的完整参数集,同时计算当前层。生成的梯度在参数分片组内通过ReduceScatter进行同步,然后通过AllReduce跨参数分片组同步。这些通信过程巧妙地与反向计算重叠,最大化训练管道的效率。对于优化器状态分片,当GPU在分片组内通过Broadcast广播更新的参数时, InternEvo会与下一个训练步骤的前向计算进行战略重叠。这些创新的重叠方法有效地平衡了通信开销和计算执行时间,显著提高了整体系统性能。
长序列训练的主要挑战之一是计算速度和通信开销之间的权衡。InternEvo将GPU内存管理分解为四个并行维度(数据、 张量、 序列和管道)和三个分片维度(参数、梯度和优化器状态)(Chen et al., 2024a)。我们对每个维度的内存和通信成本进行了详尽分析,并使用执行模拟器来识别和实施最优的并行化策略。根据训练规 模、序列长度、模型大小和批量大小,可以自动搜索最优执行计划。通过这种执行计划, InternEvo能够处理长达100万个令牌的长序列训练。此外,InternEvo还实施了内存管理技术来减少GPU内存碎片,这是长序列训练场景中的常见问题。它使用内存池进行统一内存管理,并引入了一种碎片整理技术,以主动合并小内存块,防止内存不足错误。
解决了在GPU数据中心高效训练大模型面临的问题,包括:1)数据中心经常面临频繁的硬件故障;2)复杂的并行化策略;3)资源利用率不平衡等问题。
探索了资源利用率模式和任务失败的影响,引入了两个系统改善:1)一个容错的预训练系统,通过诊断大模型相关的故障并自动恢复来提高容错性;2)一个为评估任务设计的解耦调度系统,提供及时的模型性能反馈。
整合了异步保存机制,定期在预定义的时间间隔内将模型权重和优化器状态存档到分布式文件和对象存储中,整个训练过程,每个GPU首先在本地存储中保存模型的状态,之后异步上传到远程分布式存储系统。这个过程确保了系统自动检测到偶尔硬件或网络故障时,仅丢失少量的训练进度。为优化存储空间,将临时模型检查点从热点存储转移到成本效益高的冷存储。此外,我们的系统设计能够无缝地在并行化配置更改时恢复模型训练,为训练管道提供了灵活性和连续性。
介绍了预训练数据、预训练设置以及三个预训练阶段。
大规模语言模型(LLM)的预训练深受数据的影响,数据加工主要面对的挑战包含敏感数据的处理、全面知识的覆盖以及效率与质量的平衡。模型使用的预训练数据包括:
数据的处理过程,此处不再详细复述,想复现的同学,可以自己查看技术解读报告原文。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。