【上海人工智能实验室大模型系列】书生·浦语InternLM大模型(国内大模型)
先说几个关键点:InternLM是一个104B参数的多语言基础语言模型,其训练数据覆盖了1.6万亿个token。通过多阶段渐进式的预训练策略,这个模型在知识理解、阅读理解、推理任务等需要较强思维能力的场景下表现相当出色,在多项专为人类设计的综合性考试中交出了亮眼的成绩单。而在对话能力方面,借助高质量的人工标注对话数据与RLHF(基于人类反馈的强化学习)技术,它不仅能准确理解复杂指令,还能生成符合人类道德与价值观的回复。

摘要
本文提出的InternLM是一个拥有104B参数的多语言基础语言模型。该模型在一个包含1.6万亿个token的大规模语料库上完成了预训练,并经过多阶段逐步微调,使其与人类偏好对齐。同时,开发了一套名为Uni-scale-LLM的训练系统,专为高效训练大型语言模型而设计。
多个基准测试的评估结果显示,InternLM在知识理解、阅读理解、数学和编程等多个维度都达到了顶尖水平。凭借这些全面的能力,它在无需借助外部工具的情况下,便在MMLU、AGIEval、C-Eval和GAOKAO-Bench等综合考试中脱颖而出。这些测试的成绩不仅显著超越了开源模型,甚至在与ChatGPT的对比中也展现出优势。
此外,InternLM对中文语言和文化的理解同样出色,这使其成为支持中文语言应用的理想基础模型。
引言
近年来,大语言模型的进展令人瞩目,它们在阅读理解、推理、编程及解决数学或科学问题等领域取得了前所未有的性能。学术界和工业界普遍认为,大语言模型正在成为技术创新与发展的通用基础设施。
然而,前景虽然兴奋,但一个令人担忧的趋势也在浮现:包括OpenAI和谷歌在内的行业领先机构,在技术共享上越来越保守,其模型细节和路线图几乎都不再公开披露。
基于这一背景,本文的目标是开发一个在具有挑战性的任务上能展现出竞争性能的多语言模型,并将其命名为InternLM。前缀“Intern”源于上海人工智能实验室与商汤科技合作开发的视觉模型Intern。
具体来说,InternLM是一个拥有104B参数的大语言模型,在包含1.6万亿token的大规模多语种语料库上训练而成。为了支持其训练,团队构建了Uniscale-LLM——一个专为大语言模型训练设计和优化的训练系统。该系统能够在超过两千块GPU上高效且稳定地并行训练模型。
由于在如此大规模下训练模型耗时极长且计算资源消耗巨大,研究人员设计了一个多阶段的渐进式预训练方案,使整个训练过程更加可控。该方案将预训练过程划分为多个阶段,每个阶段聚焦于实现特定的能力发展目标。同时,根据前几个阶段和实验中学到的经验,动态调整各阶段的数据组合与学习设置。
需要注意的是,虽然InternLM在多个基准测试中取得了优异成绩,但它与GPT-4之间依然存在显著差距。例如,其上下文窗口长度为2K(相比之下GPT-4为32K),这使其在处理超长文章、复杂推理、数学问题以及长时间对话等维度上仍有不足。可以说,在追求更高智能水平的道路上,还有很长的路要走。
模型开发
InternLM的开发工作主要分为三个核心阶段:数据集准备、模型预训练和对齐。数据准备阶段的任务是构建一个大规模、高质量的语料库;预训练阶段的目标是在这个语料库上训练出一个基础语言模型;最后的对齐阶段则是为了让模型能够可靠地遵循人类指令,产出有用且安全的答案。
值得注意的是,预训练阶段引入了多阶段方法。通过修改训练数据的组合比例以及训练超参数的配置,有效地引导模型能力朝着预期的方向发展。
训练数据集
InternLM的训练数据集来源广泛,涵盖了网页、书籍、学术论文、代码等多种类型。为确保预训练的稳健性和准确性,团队开发了一套复杂的流水线,结合了多种数据清理与过滤技术。这条流水线由几个不同的阶段组成,每个阶段针对优化的不同方面:
- 根据文档的主要语言(如英语、中文或其他语言)对所有文档进行分类,以便实现基于语言的数据处理。
语言分类:
- 使用各种规则和启发式方法,删除不相关或低质量的内容。
基于规则的过滤:
- 依靠在标准语料库上训练的小型语言模型识别高质量文档,确保所有训练数据符合标准。
基于模型的过滤:
- 消除相似文档或完全重复的段落,减少数据冗余——因为冗余会损害模型性能。
去重:
训练系统
在计算与系统层面,在100B规模上训练一个语言模型绝非易事。为了支持InternLM的训练,团队构建了专为基于Transformer的大模型设计并优化的训练系统:Uniscale-LLM。该系统集成了多种并行训练技术,包括数据并行、张量并行、管道并行和零冗余优化。此外,它还包含一个大规模检查点子系统,允许每小时或几小时内异步写入大型模型检查点,以及一个失败恢复子系统,能够迅速从最近的检查点恢复因硬件或网络故障而中断的训练进程。
根据真实模型上的压力测试,Uniscale-LLM可以在2048块GPU上稳定训练超过200B参数的语言模型。针对InternLM的训练,该系统在1024块GPU上实现了203.6 token/秒的吞吐量,并且可以近似线性地扩展到2048块GPU。
模型设计
在架构上,InternLM采用了基于Transformer的仅解码器架构,与GPT系列类似。根据近期的研究,为了达到计算最优的训练效果,训练集的规模应与模型参数数量成正比。因此,团队选择训练一个拥有104B参数的模型,以便在合理的时间范围内完成对1.6万亿个token的训练。
具体来说,模型由82层Transformer层(nlayers=82)构成。每层包含80个注意力头(nheads=80),每头维度为128(dhead=128),模型维度为10240(dmodel=10240)。
这样的规模使模型在语言熟练度、理解能力、推理能力和数学能力等多个方面展现出卓越表现。另一方面,大规模语料库的消耗为其提供了庞大的知识基础,从而在众多专业基准测试中取得了顶尖性能。
多阶段渐进式预训练
在训练过程中,整个过程被划分成多个阶段,每个阶段都有其特定的优化目标,并通过控制不同数据比例来定义。团队会选择合适的数据集来评估每个目标的进度。如果某个阶段的表现不如预期,可以从该阶段结束的位置直接恢复训练,从而避免了从头开始,大大提高了训练效率。
为了确保数据的有效利用,在调整数据比例时不会对同一组数据进行重新采样。此外,为了进一步提升训练效率,将不同长度的句子打包成固定长度的序列,并用特殊符号来区分不同的句子。
训练过程中使用了多种优化超参数,包括学习率、批大小和总训练步数等。余弦学习率调度将最大学习率设置在2e-4到4e-5之间。在每个阶段结束时,最终学习率会衰减到峰值学习率的10%。
优化器方面采用了AdamW,其β1值为0.9,β2值为0.95。权重衰减在0.01到0.1之间波动。此外,所有阶段都保持了恒定的梯度裁剪值(1.0)和学习率预热比例(0.025)。
对齐
预训练后的语言模型进一步按照InstructGPT的主流流程进行微调,以更好地遵循指令并符合人类偏好。该过程包含三个阶段:
- 收集了一个包含约500万个提示和响应的指令数据集,其中覆盖了问答对和多轮对话。利用自我指令(Self-Instruct)技术来丰富数据的多样性。基于这个数据集,对模型进行了监督微调。
监督微调(SFT):
- 训练了一个奖励模型,根据“3H”标准——即有用性、无害性和诚实性——对模型响应进行评分。从在线对话中收集用户提示,并构建了一组有毒提示。随后,借助人类标注者和语言模型生成不同的响应,并进行偏好标注。奖励模型初始化为SFT模型,并将其最后的投影层替换为新的全连接层。
奖励模型训练:
- 在获得奖励模型(RM)后,进一步使用近端策略优化(PPO)对SFT模型进行微调。这一阶段的目的是使模型响应与人类偏好相一致。经验表明,RLHF有助于减少输出结果中的有害内容。
基于人类反馈的强化学习(RLHF):
评估
除了使用学术数据集进行评测,团队还引入了人类考试作为评估基准。InternLM在MMLU、AGIEval、C-Eval以及GAOKAO-bench等涵盖不同语言与学科的考试基准集上取得了不错的分数,在多个基准上得分甚至超过了ChatGPT。
在来源广泛的英语语料上进行预训练后,InternLM在多种不同的英文学术评测集上表现优异,例如知识性问答、阅读理解以及数学推理等。
通过在各种中文语料上进行预训练,InternLM不仅能够熟练使用中文,同时在中文俗语理解、阅读理解、关键词抽取等客观评测任务上也展现了非常不错的性能。
InternLM还在多种编程代码语料上进行了预训练,因此能够完成解释代码、代码补全和代码修复等任务。在HumanEval和MBPP两个程序合成数据集上,其性能超过了PaLM-540B以及LLaMA-65B。
总的来说,InternLM大模型功能强大且灵活多变,在处理大规模数据、优化模型性能以及适应多种应用场景方面,都展现出了卓越的潜力和能力。随着研究的不断深入,它有望在未来的人工智能领域发挥更加重要的作用。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名