密集模型的推理能力也能和DeepSeek-R1掰手腕了?
华为借助纯升腾集群训练出的盘古Ultra,在数学竞赛这类任务中,与R1 较量时互有胜负;在编程等推理任务里,和R1 也是打得难解难分。
关键在于模型参数量仅为135B,整个训练过程中没有英伟达的参与,并且也没有出现损失尖峰的情况。
盘古Ultra 借助改进的模型架构以及实施系统优化策略,具备了优异的性能表现,并且其算力利用率达到52%以上。
有网友称,在训练过程中未出现损失尖峰这一特征,仿佛之前从未达成过。
135B密集模型比肩DeepSeek-R1
盘古Ultra 是一个参数量为135B 的密集模型,它达到了同尺度密集模型的最优表现,并且能够与参数量更大的MoE 模型如DeepSeek-R1 进行竞争。
盘古Ultra 在预训练阶段模型的评测里,在绝大部分英文基准任务上取得了最佳性能,同时在全部中文任务上也取得了最佳性能,并且优于Llama 405B、DeepSeek-V3 等baseline 模型。
盘古Ultra 在GSM8K 数据集上展现出了卓越的语言理解和推理能力。
盘古Ultra 经过指令调优后,其性能有了进一步的提升。在AIME 2024 这个任务上,它的性能提升了;在MATH - 500 等数学推理任务上,它也达到了SOTA 水平;同时在LiveCodeBench 等编程竞赛题上,同样达到了SOTA 水平。
综合来看,盘古Ultra 超越了像GPT-4o 这样的模型,也超越了Mistral-Large 2 等模型。同时,它与DeepSeek-R1 等MoE 模型竞争十分激烈。
盘古Ultra 在Arena Hard 评测中表现优异,同时在MMLU-pro 评测中也表现优异,这两个评测涵盖了通用语言理解和推理。
那么,为了达成这样的效果,盘古Ultra 运用了哪些重要的技术呢?
“三明治”层归一化架构
前文提到,盘古Ultra 是一种密集模型,其参数量为135B,并且采用了94 层的网络结构。
同时还包含8 个键值头。
盘古Ultra 为了解决训练超深网络时面临的不稳定性以及收敛困难等问题,在模型架构方面进行了两个关键的改进。其一,是深度缩放的Sandwich-Norm 层归一化;其二,是TinyInit 参数初始化策略。
传统的Transformer 一般会采用Pre-LN 层进行归一化。然而,在深度模型里,Pre-LN 容易使得每个子层的输出尺度出现波动,进而引发训练的不稳定情况。
盘古Ultra 所使用的Sandwich-Norm 层归一化,是在进行残差连接之前,对每个子层的输出进行归一化操作。并且,它会依据网络的深度来对初始化值进行缩放处理。通过这些方式,有效地消除了在训练过程中出现的loss 尖峰现象,使得训练过程变得更加平稳。
传统方法只是对每个子层的输入进行归一化,然而这种方法还对输出进行了归一化,从而形成了Pre-Norm + 子层+ Post-Norm 的“三明治”结构。
但是,仅使用Sandwich-Norm 无法完全消除深度模型训练中的不稳定性。随着网络层数的增加,每一层的输出尺度有可能会出现累积性的漂移。
盘古Ultra 在Sandwich-Norm 之上,接着又引入了深度缩放机制,并且对Post-Norm 里的放缩参数γ进行了与深度相关的初始化。
整个模型的初始化方面,传统初始化常使用的是Xavier 初始化方法,此方法仅对模型宽度进行考虑。而盘古Ultra 所采用的TinyInit 则是依据模型的深度和宽度来对初始化权重的标准差进行缩放。
这种初始化方式在向前传播和向后传播过程中能起到作用。它可以让各层梯度的方差处于一个合理的区间内。这样就避免了梯度消失或者爆炸的问题。使得训练过程变得更加稳定。并且还能加速收敛。
实验表明,TinyInit 在深度模型训练方面取得了更好的收敛速度。同时,在深度模型训练中,针对embedding 层,保持权重的标准差接近1 能够提升训练的稳定性。并且,TinyInit 在下游任务性能上也有较好表现。
盘古团队对Tokenizer 进行了优化。他们在通用中英文领域、代码领域、数学领域分别进行词频统计,然后将这些统计结果合并并去重,最终得到了一个包含153376 个token 的平衡词表,这个词表兼顾了领域覆盖和编码效率。
8192张升腾NPU训练集群
盘古Ultra 的训练流程主要分为三个阶段。其一为预训练阶段。其二是长上下文扩展阶段。其三为指令调优阶段。
其中预训练又可以分为三个子阶段:
通用阶段的重点在于建立语言理解和知识储备,在此阶段使用了数量众多的中英文通用语料,这些语料涵盖了网页、书籍、百科等多个不同的来源。
在推理阶段,会引入大量高质量的数学数据以及代码数据,以此来增强模型的推理能力。并且还会运用instruction 数据,以便帮助模型学习如何执行任务。
退火阶段有助于模型巩固知识与推理能力,同时强化指令遵循能力。此阶段大量运用问答对以及人类反馈数据。
研究者们采用了依据规则以及借助模型的数据清洗方法,同时设计了curriculum learning 这一策略,以便让模型能够逐步地去学习具有不同难度的样本。
预训练中使用了AdamW优化器,并动态调整超参数。
预训练之后,模型要在最长128K 的长上下文数据上继续进行训练。它通过扩大RoPE 的基频来达成长序列建模的目的,从而增强处理长文档的能力。
最后的指令调优阶段会使用监督微调(SFT)以及强化学习(RL)。通过这样的方式,能让模型更好地去适应下游任务,还能让模型学会执行指令,并且与人类偏好达成对齐。
盘古Ultra 在训练设施方面,使用了一个大规模的计算集群,这个集群由8192 个升腾AI 处理器所组成。
集群中的每个节点都拥有8 个NPU。这些NPU 通过华为高速缓存一致性互联HCCS 以全互联的拓扑结构进行连接。每个NPU 配备有64GB 内存。节点之间是通过200Gbps 的RoCE(RDMA over Converged Ethernet)网络来实现互联的。
研究团队为了实现盘古Ultra 的高效训练,采用了一套并行策略。这套并行策略是系统的,同时还采用了一些优化技术。这些优化技术也是为了实现盘古Ultra 的高效训练而采用的。
盘古Ultra 在选择并行策略时,综合考量了模型的规模,考量了数据的特性,还考量了硬件的拓扑,最终采用了由数据并行、张量并行、序列并行和流水线并行等多种并行方式组合而成的方式。
128 路采用数据并行的方式,把训练数据划分成不同的片,分配到不同的设备上,从而确保了数据的吞吐。
8 路张量并行,通过利用设备内部的高带宽来切分层内张量,从而实现高效通信。
序列并行用于处理超长序列以降低显存压力;
8 段流水线并行运作,把不同的层分别分配到不同的设备上,从而形成了高效的计算流水线。
盘古Ultra 在并行策略的基础之上,从多个不同的角度对训练系统展开了深度的优化工作。 盘古Ultra 以并行策略为基础,从多个视角对训练系统进行了深入的优化调整。 盘古Ultra 基于并行策略,从诸多角度对训练系统进行了深度的优化改进。
一方面,利用ZeRO(Zero Redundancy Optimizer)分布式优化器,把模型状态分割到不同的设备上,这样就极大地减少了单个设备的内存占用量。在提升数据并行度的同时,也保证了每个设备的内存负担处于可以接受的范围之内。
研究者们运用各种通信技术和计算优化技术,以此来达到最小化通信开销的目的,同时提升了计算效率。
将多个小算子通过算子融合(Kernel Fusion)进行合并,这样就减少了内存访问以及kernel 启动。
利用通信计算重叠这种方式,来达成通信和计算的深度交织,以此将通信延迟隐藏起来。
MC^2(合并计算与通信)专门对张量并行的通信进行了优化,BOA(批处理优化加速器)专门对规范化层的通信进行了优化。
盘古Ultra 在算法层面进行了精细优化,从而实现了52%以上的算力利用率;盘古Ultra 在工程层面进行了精细优化,进而实现了52%以上的算力利用率;盘古Ultra 在数据层面进行了精细优化,最终实现了52%以上的算力利用率。