省钱也是技术活:解密DeepSeek的极致压榨术

360影视 2025-01-01 14:41 3

摘要:当o1、Claude、Gemini和Llama 3等模型还在为数亿美元的训练成本苦恼时,DeepSeek-V3用557.6万美元的预算,在2048个H800 GPU集群上仅花费3.7天/万亿tokens的训练时间,就达到了足以与它们比肩的性能

腾讯科技《AI未来指北》

特约作者 郝博阳

编辑 郑可君

没有GPU Poor,只有卷得不够多。

DeepSeek-V3的横空出世,用一组惊人的数据完美诠释了这句话。

当o1、Claude、Gemini和Llama 3等模型还在为数亿美元的训练成本苦恼时,DeepSeek-V3用557.6万美元的预算,在2048个H800 GPU集群上仅花费3.7天/万亿tokens的训练时间,就达到了足以与它们比肩的性能

这个数字意味着什么?每万亿tokens仅需180K个H800 GPU小时,总计278万 GPU小时的训练成本。而Llama 3.1的训练使用了16,384块Nvidia H100 GPU,总计2100多万GPU小时,翻了十倍。

通过671B的总参数量,在每个token激活37B参数的精准控制下,DeepSeek-V3用14.8万亿高质量多样化token,构建出了一个能够超越所有开源模型,直逼GPT-4和Claude-3.5的AI巨人。

推特上赞叹一片。

OpenAI早期成员安德烈·卡帕西(Andrej Karpathy)就表示DeepSeek-V3的出现也许意味着不需要大型GPU集群来训练前沿的大语言模型。它表明大模型在数据和算法方面仍有很大的提升空间。

scale AI创始人亚历山大·王 (Alexander Wang)更表示,DeepSeek-V3带来的辛酸教训是:当美国休息时,中国在工作,以更低的成本、更快的速度迎头赶上,变得更强。

更多人认为,这是来自东方的魔法。但实际上这个魔法叫工程科学。

因为我们看完DeepSeek 53页的技术报告,发现它惊人的低训练价格和其强悍的能力全部有迹可循。

在预训练阶段,对性能影响有限的地方,他们选择了极致压缩;在后训练阶段,对模型擅长的领域,他们又倾注全力提升。

在之前大家赞许争论之声未止,但“魔法”的面纱却没人掀开。

腾讯科技就帮你们抽取出其中最核心的那一部分,用更平实的语句解释DeepSeek-V3的“省钱高效”背后的技术路径。

训练的省钱法门:

能压都压,全不空转

传统之中,大模型训练降低成本主要靠两招:压缩、并行和提升硬件使用效率。

DeepSeek-V3这次所用的方法基本上就是猛挥这三板斧。

压缩:从结构到量化

压缩很容易理解,就是把大的东西压缩成小的。

对于模型训练来讲,压缩之后,运算单元(GPU和CPU)需要进行的运算数据量就会减少,运算速率必然会提升。另一个重要影响是,内存占用和缓存会减少,这样训练同样大小的模型所需要的硬件规模也可以大幅减少。

而在训练模型的过程中,内存占比最高的就是向量数据。

DeepSeek-V3这次一次用了两种方法去压缩向量数据,一是MLA多层注意力架构,另一个就是FP8混合精度训练。

多层注意力MLA

多层注意力(Multi-Layer Attention, MLA)架构设计的核心在于在Transformer架构中引入动态层聚合机制。传统Transformer中每一层都需要完整的计算和存储,其中的Key和Value矩阵往往占用大量内存空间。而MLA通过动态合并相邻层的特征来减少计算量。

MLA通过压缩和复用前序层的K、V来减少内存占用和计算量。具体来说,将连续几层的K、V进行合并压缩成一组共享表示。

打个比方,如果把注意力机制比作图书检索系统,传统方法相当于为每本书都建立完整的索引卡片(Key)和内容摘要(Value),而DeepSeek的方法则像是建立了一个智能的分类系统,不记具体信息,而是记一个简单的"标签"(压缩的Key/Value),需要时再从标签还原出详细信息。就像把"计算机技术,三楼右侧第二排"简化成"C2-3"这样的编码。

在这个过程中,DeepSeek使用了低秩压缩技术(可以理解为将高维矩阵压缩为若干个低维矩阵的乘积),将KV压缩到512维度,远小于原始维度。通过Key/Value的低秩压缩使得的训练内存占用减少了20-30%。

在Query端的优化对训练效率也非常有意义。Query可以理解为用户的检索请求,传统方法会为每个请求都分配大量计算资源。DeepSeek通过对Query的低秩压缩,减少了计算过程中的激活内存占用。虽然这种优化对推理阶段的影响相对较小,但在训练过程中发挥了重要作用,显著提升了训练效率。这就像是优化了图书检索系统的查询处理机制,使得系统能够更快速地处理大量并发的检索请求。

而DeepSeek-V3巧妙的找到了一些平衡,让这些压缩技术几乎没有影响模型的性能。

FP8 混合精度训练框架

MLA方法是从DeepSeek V2开始就采用的方法,本次只是进行了优化调整。而在DeepSeek-V3里引入了一种 FP8 混合精度训练框架,并首次在超大规模模型上验证了其有效性。

FP8就是用8个二进制位来表示数字的格式,相比传统的32位(FP32)和16位(FP16)格式,精度低了很多,但是占用空间小,计算快。

就像用"约350人"代替"准确的358人",牺牲一些精度来换取效率。虽然不够精确,但在很多场景下已经够用了,而且能大大提升运算速度和节省内存。

DeepSeek在采用FP8格式时,采用了"混合精度"的方案。在训练时,它的大部分核心计算内核均采用 FP8 精度实现。包括前向传播、激活反向传播和 权重反向传播都用了 FP8 作为输入,并输出 BF16 或 FP32 格式的结果。这一设计理论上使计算速度相较于原始的 BF16 方法提升了一倍。此外,DeepSeek中的向量激活值以 FP8 格式存储,供反向传播使用,从而显著降低了内存消耗。

针对某些对低精度计算敏感算子和一些低成本算子,比如嵌入模块、输出头、MoE 门控模块、归一化算子以及注意力算子保留了FP16乃至FP32的精度。这样能保证数据的精确性。同时为了保证数值稳定性,DeepSeek还将主权重、权重梯度和优化器状态以更高精度存储。

就像一个精打细算的主厨:日常备菜用普通的厨具就够了,但到了关键的烹饪步骤,就会换上最好的刀具。

在模型训练中,大部分的前向运算都使用FP8来处理,这样可以大大节省显存和计算资源,让整个训练过程跑得更快。但他们也很清楚哪些地方不能省:比如最后的调味、摆盘(对应嵌入模块、输出头等),就一定要用精密的工具(FP16或FP32精度)。

过去使用FP8模式的时候,最大的困难出现误差累计。就像普通计算器(Tensor Cores的FP8)只能显示到小数点后两位,而科学计算器(CUDA核心的FP32)能显示到小数点后六位。当你需要加很多个小数时,用普通计算器会逐渐累积误差,最后结果可能差异很大。

(DeepSeek 提出的误差积累解决方法)

DeepSeek发现了一个巧妙的解决方案:不等到最后再算总和,而是每加128个数就把当前结果转移到科学计算器上继续计算。为了让这个过程不影响速度,他们利用了H800 GPU的特点:就像有两个收银员,当一个在结算购物篮的时候,另一个可以继续扫描新商品。这样在提高精度的同时,基本不影响处理速度。

这一策略使得模型训练速度大幅提升,毕竟核心计算能提升100%的速度,而显存使用减少也非常明显。并且模型最终的效果精度损失能做到小于0.25%,几乎无损。

并行:对硬件的极限使用

要实现更快的训练速度,最有效的方法就是增加并行计算的规模,让更多的计算单元同时处理不同的数据或任务。而在并行中,需要解决的问题就是尽可能的有效利用计算资源,让它们都高负载的工作。

在系统架构层面,DeepSeek就使用了专家并行训练技术,通过将不同的专家模块分配到不同的计算设备上同时进行训练,提升了训练过程中的计算效率。

但这种简单的并行还远不够。DeepSeek这次对算力做的是极限压榨:如果把训练过程当成一个工厂的话,他们主要做的就是不让流水线上没有闲人,再加上尽可能优化工序,让工件进入流水线时直接就可以被操作(计算)。

DualPipe跨节点通信

优化流水线流程的主要模式是DeepSeek创新的DualPipe方法。

在计算和通信重叠方面,DualPipe采用了类似于"多任务并行处理"的思路。

就像现代计算机能够在下载文件的同时处理文档一样,DualPipe让模型在进行计算的同时,后台已经开始准备下一步需要的数据传输。这种设计确保了通信开销被很大程度地隐藏在计算过程中,极大提升了整体效率。

传统的训练信息流水线并行就像一条产品装配线,每个工位按顺序处理任务。当数据包从一个阶段传递到下一个阶段时,往往会产生等待时间,这就是所谓的"流水线气泡"。这些气泡会导致计算资源的浪费,就像流水线上的工人不得不等待上游工序完成才能开始工作。此外,不同节点之间的数据传输时间也会成为性能瓶颈,就像工位之间传递零件的时间过长会影响整体生产效率。

而DualPipe引入了双重流水线的概念,就像在同一条生产线上同时处理两批产品。当一个计算阶段在等待数据传输时,可以立即切换到处理另一批数据,这样就能充分利用原本的空闲时间。

(DualPipe示意图,在图中由共享黑色边框包围的两个单元格具有相互重叠的计算和通信。)

这是让流水线上没有“闲人”。

除此之外,还要尽量压缩取件到操作的过程。

因为DeepSeek对流水线的特殊设计,使得通信和计算的过程可以重叠。当一个节点在进行当前批次数据的计算时,系统已经开始准备下一批次需要的专家参数传输。当前向计算完成时,下一步需要的数据已经就位,几乎不会产生等待时间。大部分数据传输时间被"隐藏"在了计算过程中,就像在无缝衔接的装配线上,零件的运送时间对整体生产效率几乎没有影响。

DualPipe正是通过精确控制这种重叠过程,实现了在大规模分布式训练中接近零通信开销的理想状态。

根据DeepSeek 的技术报告,DualPipe算法减少了50%的计算气泡,有效隐藏了通信开销。跨节点通信优化则提升了带宽利用率,减少了20%的通信开销。

这就基本相对传统方式提高了一倍的算力使用效能。

无辅助损失的负载均衡策略

无辅助损失的负载均衡策略是DeepSeek-V3一个让训练过程中工人各展所能的调整。

负载均衡策略在V2时代已经被引入,但在这一代更进一步。

在专家混合系统(MoE)中,负载均衡一直是个关键挑战。因为MoE有很多专家模型,怎么能让该上的专家不闲着,没人无事可做对训练和模型效率都很关键。

传统方法通常需要引入额外的辅助损失项来平衡专家的使用,就像在工厂中人为设置配额来确保各条生产线的负载均衡。这种方法不仅增加了训练的复杂性,还可能影响模型的本地优化目标。

DeepSeek的创新在于实现了无辅助损失的自然均衡。系统会根据专家的历史利用率动态调整其"接收容量"。当某个专家持续过载时,系统会自动降低其接收新任务的概率;反之,对于利用率低的专家,系统会提高其接收任务的机会。既考虑专业匹配度,也考虑当前的工作负荷。这种自适应机制确保了长期来看的负载平衡。这更像是市场经济,而非计划经济。

(最上面两条线,上面是有负载均衡,下面的是无负载均衡的情况。从图中可以看出,采用无负载均衡策略的专家层负载更均匀,也更积极)

这个改进让训练过程更稳定,大家都有机会训练,也提高了训练效率。

底层通信优化

对于模型训练来讲,底层通讯也是个大问题,很多时候硬件间通讯不畅就会使得训练产线出现局部停工,无活儿可干的事儿。

DeepSeek在这方面也做了相当的优化,专门开发了高效的跨节点全对全通信内核。这就像是在高速公路系统中建立了更智能的红绿灯调度系统,能够充分利用InfiniBand和NVLink这些高速通道的带宽。这些优化确保了数据在不同计算节点之间的传输始终保持在最高效率。

以上这些还不是DeepSeek在训练上采用的所有提效手段,只是相对大胆创新的部分。目前其他训练在架构中常用的移除LayerNorm中的bias项、在FFN后引入scale因子、采用RoPE相对位置编码等方式,DeepSeek-V3也都有所采用。而在训练策略上,DeepSeek还采用了ALiBi位置编码预训练、Flash Attention 2实现、序列长度动态扩展等已有先进技术。

DeepSeek-V3这回真的可以说是在训练工程上无所不用其极。总结下来,最重要的包括以下这么几个方面。

不管是MLA、FP8和Daulpipe算法,都是非常大胆的使用当下降低训练成本的前沿技术。这些基础技术方向都已经是主流认知的可能性,但DeepSeek做到了经过精心调教优化设计,使其可用,且发挥最大的能力。

既然GPU少,那就卷工程,DeepSeek这回确实是用东亚魔法打破西方垄断。


超强性能的秘密:努力偏科

DeepSeek-V3的能力确实相当惊艳,相较于其他顶尖开源模型如LLama 3.1 405B,Qwen2.5 72B,在数据上都更胜一筹。甚至在和Claude 3.5 Sonnet和GPT-4o这两个最顶尖模型的比较上都有多项数据更强。

尤其在数学推理、代码生成和长文本处理等方面达到了业界领先水平。在GSM8K数学推理测试中取得92.1%的高分,在HumanEval代码评估中以88.3%的成绩超越GPT-4,同时还具备32K的长文本处理能力。

但从Benchmark本身和DeepSeek的技术报告中,我们也可以看出DeepSeek-V3在一些层面上是有偏科的。它的创意生成相对薄弱,开放性任务表现一般,结构化思维的能力远高于发散思维。甚至在专业领域比通用领域表现的更好。

那DeepSeek-V3为什么这么强呢?

首先是基础。DeepSeek-V3 的总参数量有671B,每个token激活37B参数。整体参数总量比Llama 3.1 405B还高,也远超Qwen 2.5的72B。在Scaling Law尚未碰壁的情况下,参数大小上的优势依然是实实在在的。

而且在上面的训练过程中,我们看到DeepSeek-V3虽然全力压缩数据,但在工程中尽可能的降低了对模型质量的影响。

这就是DeepSeek的底子。但能让它更上一层楼的还有其他几个关键因素。

数据精筛

首先是数据,高效的数据选择就意味着快速的性能提升。

DeepSeek-V3在数据处理方面展现可以说是精益求精,卷到极致。其数据处理策略涵盖了从原始数据采集到最终训练集构建的完整流程。

根据DeepSeek 的技术报告,在训练V3的过程中,DeepSeek用了14.8万亿tokens的预训练。而作为对比Llama 3.1用了15万亿tokens,而Qwen 2.5的训练则使用了18万亿token。

首先在数据源的选择上,DeepSeek-V3采用了更多元化的数据获取策略。基础训练数据来源于经过严格筛选的CommonCrawl语料库,这确保了数据的广泛性和代表性。除此之外,研发团队还特别重视专业领域数据的引入,包括大规模的代码数据集、数学推理数据、科学文献等。

在数据清洗环节,DeepSeek采用了专有的数据过滤算法,实施了多层次的质量控制。这个过程首先对原始数据进行重复内容的识别和删除,确保数据的唯一性。随后,通过智能算法筛除低质量内容,包括格式错误的数据、不完整的文本片段以及不符合规范的内容。这种严格的数据清洗流程不仅提高了训练数据的质量,也为模型的最终表现奠定了良好基础。

数据处理的技术实现上,DeepSeek-V3采用了一系列先进的处理方法。首先是统一的tokenizer设计,确保了数据处理的一致性。其次是动态序列长度调整机制,这使得模型能够更好地处理不同长度的输入。通过数据混合采样策略和课程学习方法,他们也优化了训练过程中的数据使用效率。

MTP技术

然后是架构革新。

DeepSeek引入的多token预测(MTP)技术堪称一个Game Changer。这项技术实际上是Meta在今年4月30号提出的,DeepSeek对新技术的应用甚至快过Meta自己。

简单讲这也是一种并行优化。

传统语言模型一次只预测一个token的范式。它就像是让模型从"一字一句"地朗读,进化为"整句整段"地理解和生成。在训练过程中,模型不再局限于预测序列中的下一个token,而是学会同时预测多个连续位置的token。这种并行预测机制不仅提高了训练效率,还让模型能够更好地捕捉token之间的依赖关系。在保持输出质量的同时,模型整体性能提升2-3%。

在推理阶段,MTP的优势更加明显。传统模型生成文本时就像是在"一笔一划"地写字,而MTP则像是"提前打草稿",可以同时生成多个token。通过创新的推测解码机制,模型能够基于当前上下文同时预测多个可能的token序列。即使某些预测不准确需要回退,整体效率仍然显著提升。这种并行生成机制使推理速度提升了1.8倍,还显著降低了计算开销。

DeepSeek-R1蒸馏

除了在数据选择上更多引入了专业数据之外,还要提到后训练过程中,DeepSeek对R1的蒸馏使用。这一方面提升了模型的能力,也让它有点偏科。

DeepSeek R1 系列模型是DeepSeek在复现GPT-o1上的最新尝试。它在今年11月21日才发布Preview版本,就已经用在对DeepSeek-V3的蒸馏上了。

这一模型本身使用强化学习训练,推理过程包含大量反思和验证,思维链长度可达数万字。在编程和数学能力方面甚至在几项指标上超越了GPT-o1-preview。

通过从DeepSeek-R1系列模型中蒸馏推理能力,即从R1模型中提取关键的推理模式和解题策略作为数据微调DeepSeek主干模型,并采用循序渐进课程学习等先进方法,DeepSeek-V3模形式化思维能力得到了大幅强化。此外,在蒸馏过程中,V3还学会了对结构化数据处理和长序列计算进行了优化。

从数据上看,仅仅通过R1蒸馏,就可以给DeepSeek V2.5带来数学和编程上近20%的大幅提升。

但就像GPT-o1显示出的情况一样,这部分强化学习加成很难能够泛化到数学和编程之外,因此DeepSeek-V3的偏科在所难免。

因此,DeepSeek-V3很强,但仍然还有很大优化的空间。

DeepSeek-V3,

工程的奇迹也是重要的价值

在外网关于DeepSeek-V3的一片赞许声中,其实也有相当的怀疑之声。

Sam Altman就疑似嘲讽DeepSeek-V3缺乏真正创新的方法,而仅仅是复制有效的东西。

这一评价其实并不算特别中肯。确实,DeepSeek-V3所采用的核心技术中,多层注意力MLA技术存在已久、MTP技术来自今年4月Meta的论文,而R1的蒸馏和探索也是受到OpenAI和谷歌的启发。

但在底层工程并行技术上,DeepSeek实际上做了很多创新。比如无辅助损失负载均衡来自DeepSeek八月的论文,Daulpipe也是DeepSeek的新尝试。

至少在工程面上,DeepSeek的创新力并不差。

另一个有影响力的批评来自于FutureLabs未来实验室首席专家胡延平。

他发微博表示,当前大模型发展面临双螺旋式的演化。一条是向上攀升的性能曲线,追求更深层的理解和推理能力;另一条是向下延伸的基础曲线,着重提升效率和落地能力。DeepSeek-V3在这个维度上似乎仍未完全突破天花板。

但他却忽视了一个基本事实:在深度学习时代,规模效应本身就是算法创新的催化剂。

当下AI之所以难以渗透落地,很大的原因正是因为成本还不够低。尤其是在模型进入强化学习时代后,o1的成本更是高的难以让人向下进入日常。

而这正是DeepSeek-V3所做的尝试价值所在。它展示了一种新的可能性:在工程实现和理论创新之间找到平衡点。它不是在追随OpenAI或Anthropic的路径,而是开创了一条符合现实约束的技术进化道路。

在AI领域,过分强调"形而上"的理论创新,同时轻视工程实现的突破,这种倾向某种程度上正是阻碍AI真正落地的绊脚石。

之前提到的Meta四月发布的论文技术和DeepSeek本身在八月的论文提到的技术,包括11月发布的R1模型,它们的能力都被运用到了年底发布的这个最新模型之中。

DeepSeek至少做到了,以最快的速度将理论转化为现实。

来源:人工智能学家

相关推荐