硬件感知的架构设计:为什么不同 GPU 架构可能催生不同的最优模型结构

2020年,Google发了一篇论文,叫《Switch Transformers》。论文里有个反差感很强的数字:同样的参数量,稀疏激活的专家混合模型在TPU上比稠密Transformer的训练速度快7倍。看到这个结果的第一反应是:那以后是不是所有模型都该用MoE?但如果你把它搬到GPU上试试,会发现优势远没那么大。那问题出在哪里?不是算法变了,是硬件变了。

AI technology illustration

硬件为什么是隐形架构师

一个神经网络的结构,在制造它的工程师眼里是数学,归根结底是计算图和参数。但在硬件眼里,它是一系列访存和计算的调度过程。每次训练或推理,数据都要沿着内存层次向上搬:先到缓存,再到寄存器,然后进ALU。GPU架构的不同,直接改变了每一步的相对成本。

打个比方:同样是搬砖,一个人手劲大但腿脚不利索,一个人腿脚麻利但力气小。如果你设计一个“需要耗很多力气”的活(计算密集),力气大的人占优;如果设计一个“需要来来回回跑”的活(访存密集),腿脚快的人占优。模型结构就好比选择任务类型,而GPU就是你雇的工人。

在GPU上,这个“工人”有两个关键指标:峰值算力和内存带宽。A100的内存带宽约1935 GB/s,H100提升到了3.35 TB/s,而AMD的MI300X直接拉到了5.2 TB/s。这里有个陷阱:H100的算力比A100提升的倍数远远大于带宽提升的倍数。这意味着,在H100上,访存密集算子的相对开销会变得更大。一个在A100上兼顾两种算子的平衡结构,到H100上可能反而变得低效。

FlashAttention:注意力算法向SRAM低头之后

Transformer的核心是自注意力。标准实现里,每个token要跟序列里的所有其他token打个招呼,生成一个N×N的注意力分数矩阵。你输入100个词,就有1万个分数;输入1000个词,就是100万个。然后你要把矩阵写回显存,再读出来做softmax,再写回,再乘V。每一步中间结果都占据大量显存,而且来回搬运的时间,比计算本身还要昂贵。

《FlashAttention》(论文链接)做了一件很“抠门”的事:利用GPU那个很小的SRAM,在不计算完整注意力矩阵的情况下,分块把注意力算完。它把原来O(N²)的显存占用降到了O(N),速度提升2-4倍。这个算法不是网络结构的创新,而是对硬件的迁就——它深知SRAM和HBM之间的带宽鸿沟远大于计算和存储之间的差距。

更妙的是,当NVIDIA从A100走到H100,SRAM变大、带宽变高,FlashAttention-2又针对新硬件重新调整了并行策略。同一个数学公式,在不同GPU上被迫变成不同的执行方式。如果硬件没有改变,我们可能仍然在写标准attention,上下文窗口也不会像今天这么长。

MoE:GPU上的稀疏是一种“昂贵的自由”

混合专家模型(MoE)通过路由器把不同的token分给不同的专家网络。思路很优雅:总参数量大,但每个token只激活一小部分专家,计算开销增加不多。然而在实践中,专家分布在多个GPU上,每次前向传播都需要跨GPU转发token,也就是All-to-All通信。在GPU集群上,通信成本往往远超专家计算本身。

MegaBlocks这篇论文就指出,传统的MoE块在GPU上并不高效,因为稀疏矩阵操作不能充分利用张量核心,还会引发负载不均衡。所以它重新设计了块结构,把稀疏问题变成稠密矩阵运算。而在TPU那边,Google的Switch Transformer刻意选择只激活一个专家,正是为了迎合TPU的二维mesh网络,减少跨芯片路由的负担。

如果换一张通信带宽更小、但计算能力惊人的芯片,最优的路由策略可能又要重新设计。这就是为什么说“硬件感知”——结构的选择,取决于你手头这台机器的连接速度。

Mamba的野心:把访存密集型结构做成主流

Mamba(论文)试图用状态空间模型取代注意力机制,把序列建模复杂度从O(N²)降到O(N)。它的核心操作是“选择性扫描”,一种串行扫描所有token的循环过程。但GPU的并行能力主要体现在矩阵乘法上,串行扫描不是GPU最喜欢的活。所以Mamba的实现必须将扫描转化为并行扫描,并依赖大量逐元素操作——它们都是访存密集型的。

在A100上,Mamba确实比同规模Transformer快。但这不意味着它在任何芯片上都快。如果目标硬件没有高效的并行扫描原语,或者内存带宽无法喂饱大量的逐元素访存,Mamba的“数学优势”就可能变成实操劣势。

我还记得自己第一次在低端显卡上跑Mamba时,发现它并没有变得更快。后来才明白,Mamba是把计算压力转给了内存带宽。你可以说,它天生是为高带宽低算力的硬件设计的。而NVIDIA的A100和H100恰好在内存带宽上堆得足够高,才让它脱颖而出。

我曾经觉得很对的一件事:“模型结构是纯数学问题”

我最早学深度学习时,一直觉得架构设计是在做纯数学:只要计算图表达清晰,参数量合理,任务必然能学出来。直到有一次在A100上复现一个图像检索模型,发现同一个卷积层在不同batch size下性能差异巨大,单独看FLOPs完全是误导。后来去翻NVIDIA的文档才意识到,硬件的kernel调度、寄存器和shared memory分配,都在影响最终耗时。我那时候才明白,一个真正好的模型设计师,脑子里必须同时跑着函数和硬件。

你可以不喜欢这种“看硬件脸色”的工程,但当今AI的许多进展——FlashAttention、Flash-Decoding、vLLM的PagedAttention——都是硬件感知设计。那些纯粹从数学出发、完全忽略硬件特性的模型结构,往往只能停在论文里。

一张表看清主流加速器的“性格”

加速器 内存带宽 代表设计考量
NVIDIA A100 约1935 GB/s HBM2e,NVLink 3
NVIDIA H100 3.35 TB/s HBM3,更高的数学强度阈值
AMD MI300X 5.2 TB/s 192GB HBM3,统一内存优势

看这组数字,你就能理解同一个LLM在这三张卡上推理时,为什么批次大小、Kernel融合策略、甚至KV Cache的放置方式都要微调。

结论:不要问“哪种结构最好”,而要问“在哪个硬件上最好”

硬件感知的架构设计,意味着我们把硬件约束提升为一等公民。未来的大模型可能会生长出多个谱系:为NVIDIA GPU优化的稠密/稀疏结构,为AMD大显存优化的MoE,为苹果统一内存优化的长上下文Transformer,甚至为未来神经拟态芯片优化的完全不同的模块组合。

这并不意味着数学统一性被抛弃,恰恰相反,我们需要更高级的抽象来同时描述计算、访存和通信。对开发者来说,最直接的影响是:当你选定一个硬件平台,再去选模型结构;反过来,当你选定一个模型,也要想清楚它会在哪类GPU上运行。不同GPU催生不同最优结构,这不是坏消息,这是硬件设计在倒逼算法创新——而倒逼出来的突破,历史上从来都不少。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/531.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐