算力不是越近越快,真正的瓶颈在于你把数据搬去哪里
Hatched by Kevin Di
Jun 01, 2026
1 min read
6 views
87%
你以为在比算力,其实在比“搬运距离”
很多人讨论 AI 芯片时,第一反应是峰值算力,第二反应是带宽。可真正决定系统成败的,往往不是“能算多少”,而是数据要在多大的空间里完成重排、展开和运输。一个很小的细节,常常比一组华丽的 FLOPS 数字更重要:你选择的是内积还是外积,是把数据压缩成更小的输入矩阵,还是把计算扩展成更大的张量展开。
这件事之所以值得认真看,是因为它并不只是一个微架构选择题,而是一个系统设计哲学问题。局部更紧凑,未必全局更强;局部更高效,未必更能扩展。 这听起来像工程上的权衡,但本质上是在问:当计算规模继续放大时,哪一种组织方式更能让机器活下去。
你真正买到的不是算力,而是“让算力持续被喂饱”的能力。
内积与外积:小矩阵的诱惑,和大张量的野心
如果把计算想成厨房里做菜,内积像是把原料提前切得很细,再小批量快速烹调。输入矩阵更小,在相同 MAC 规模下,数据看起来更紧凑,卷积这类场景尤其受益。你会觉得它“轻”,像是一种很聪明的近场处理方式,少搬几趟,少占几块台面。
但问题也出在这里。尺寸小,往往意味着扩展性不够好。 当任务规模变大、并行度提高、系统从单点走向集群时,过于依赖紧凑输入的方案,会越来越像一个精致但拥挤的厨房。每一步都高效,整条链路却没有足够宽的成长空间。
相比之下,外积更像是先把问题摊开,再统一组织。它的输入矩阵更大,看上去不够“省”,甚至有些笨重。但它的优势在于,结构更容易沿着规模继续放大,像一张可延展的网。你付出的代价是前期的数据展开成本,你得到的回报是更好的扩展性,更大的设计自由度,以及更容易向更大算力层级推进的能力。
这就是第一个关键张力:紧凑,不等于可持续;展开,不等于低效。
很多技术争论其实都卡在这里。只看局部吞吐,会偏爱“更小的输入,更快的单次计算”;只看长期规模,又会偏爱“更大的展开,更强的扩展”。而真正重要的,不是二选一,而是你是否找到了让二者同时成立的组织方式。
更大的真问题:不是算术形式,而是张量如何组织自己
如果只是把内积和外积理解为两种数学运算,就太浅了。它们真正的差别,不在公式,而在张量展开方式。展开方式决定了数据在片上如何流动,功能单元如何对齐,访存如何被隐藏,以及并行资源如何被持续利用。
可以把它理解为两种城市规划。
一种城市很紧凑,街区短,路网密,走几步就到目的地。这种城市适合密集生活,适合局部高频交互,适合在有限空间里把一切压得很高效。另一种城市更像网格化新区,街道更宽,地块更规则,单看某一处可能显得空,但它更容易继续扩张,更容易容纳大规模交通和新的功能模块。
内积偏向第一种城市,外积偏向第二种城市。
如果把视线放到片上微架构层面,这种差异会变得非常具体。所谓“4 变 16”式的张量展开,本质上就是在更细粒度上把并行单元铺开,让内部执行资源更充分地被利用。问题在于,内部如果已经有分组结构,就意味着你不能只看局部展开倍率,还要看展开以后是否仍然容易跨组协调,是否会引入额外的张量管理复杂度。
也就是说,张量展开不是把数字放大这么简单,而是在重新定义:数据的形状,决定了硬件能否把并行性稳定地兑现出来。
这也是为什么有些路径看似“更传统”,却在系统层面更稳健。它们不一定在某个局部指标上最漂亮,但更像是给未来增长留了接口。反过来,某些看似更优雅的局部设计,一旦放大到更高规模,可能会被数据组织方式反噬。
计算架构的竞争,常常不是谁的单步更快,而是谁能把“展开”这件事做得更自然。
片上快,片间慢:系统真正的断层不在芯片内部
如果说内积与外积讨论的是“芯片怎么把数据摆好”,那么网络问题讨论的就是“芯片之间怎么把数据送好”。这里的落差往往比人们想象得更大。单机内部的高速互联可以到达极高带宽,例如 NVLink 3.0 这种级别,已经是一个非常夸张的数字;但一旦走出单机,进入多机通信,网络带宽立刻进入另一种世界,常见配置会低得多,而且延迟、拥塞和协议开销会一起上来。
这意味着什么?意味着你在单机内部做得再漂亮,如果系统级任务要跨机协作,片上架构的局部优势会被网络断层迅速吞掉。
这时,内积与外积的选择就不再只是算子实现问题,而是系统边界问题。更小的输入矩阵,可能让单机内部更舒服,更容易把卷积之类的局部计算压缩到高效率区间;但当任务需要跨设备分片、跨节点同步、跨机并行时,数据越是被压缩成局部最优的形状,就越可能在系统边界遇到重新展开的成本。
这就是第二个关键张力:芯片内部追求局部最优,集群层面追求全局可流动。 如果这两层的设计语言不一致,就会出现一种典型错觉,单机看起来很猛,集群一上来就掉速。
把它想象成快递网络。一个城市内部有极快的城配系统,分钟级送达;但跨城运输仍然要靠普通干线物流。如果你把所有商品都包装成只适合城配的形态,出城时就会非常痛苦。好的系统不是在城内跑得最猛,而是包装、分拣、装车、干线、卸货全链条都一致。
同样,好的 AI 硬件也不是只在芯片内部高效率,而是要让数据形状在“算子, 片上, 片间”之间尽量少做不必要的改造。
统一视角:真正先进的架构,是让数据“少改形”而不是“少计算”
把这两个看似不同的话题放在一起,会得到一个更大的结论:架构竞争的本质,是谁能降低数据的改形成本。
这里的“改形”不仅指张量 reshape,也包括切分、广播、重排、跨组对齐、跨机同步。许多系统之所以慢,不是因为算不动,而是因为数据在抵达算力之前,已经经历了太多次“为了适配而适配”的变形。每变一次形,都会引入额外的控制复杂度,额外的缓存压力,额外的通信成本。
你可以把这看作一个三层模型:
- 算子层,决定做什么运算。
- 展开层,决定数据如何映射到并行单元。
- 互联层,决定数据如何跨设备流动。
多数讨论只看第一层,聪明一点的人会看第二层,真正成熟的系统设计必须看第三层。因为当算子、展开和互联三者不一致时,任何单点优势都会被整体折损。
于是,内积和外积的差别也不再只是“谁更快”。它们分别代表两种不同的系统伦理。
内积强调局部收敛,尽量把计算压缩在更小的输入空间里,换取单点效率。它像是让城市变得更紧凑,更少空转。外积强调结构外延,愿意为更大的并行与更强的扩展付出更高的前期整理成本。它像是提前把城市道路做宽,方便未来扩建。
哪一种更先进?答案不是固定的。真正先进的是能否根据系统边界,选择正确的代价位置。把复杂度放在片上,还是放在片间;放在编译期,还是放在运行期;放在局部展开,还是放在全局通信。这些选择决定了一个架构到底是“看起来聪明”,还是“长期可用”。
可操作的判断框架:什么时候该追求紧凑,什么时候该追求可扩展
如果你正在评估芯片、系统或模型部署方案,可以用下面这组问题判断:
第一,数据形状是否天然适合局部压缩? 如果任务主要是卷积、局部相关性强、数据重用高,那么紧凑输入和局部展开通常更划算。因为你可以用较小的输入矩阵,维持较高的算术密度。
第二,规模增长时是否需要跨组、跨芯片、跨机协同? 如果答案是肯定的,那么可扩展性比单点极致更重要。外积式、规则化、可外延的组织方式,往往更适合长期放大。
第三,复杂度是被消灭了,还是只是被挪走了? 很多方案看似减少了算子成本,实际上把代价转移到了张量重排或网络通信上。你要看的是总账,而不是单项成本。
第四,瓶颈是在算力、片上带宽,还是片间带宽? 如果片间带宽远弱于片内带宽,那么系统设计就不能只优化芯片内部。否则局部的漂亮,会在跨机阶段失真。
第五,未来的扩展方向是什么? 如果你确信任务会不断放大,最好选一个在结构上允许继续长大的方案。否则你会在下一代规模里付出重构代价。
Key Takeaways
- 不要只问“谁更快”,要先问“数据在哪里被重新组织”。 很多性能差异不是算术本身造成的,而是数据改形和运输造成的。
- 紧凑输入适合局部效率,可扩展展开适合长期增长。 这两者不是绝对对立,但它们的最优区间不同。
- 片上优化和片间优化必须使用同一种系统语言。 否则单机越快,集群越容易暴露断层。
- 把复杂度放在最便宜的地方。 如果必须改形,尽量在更靠近计算端、且更容易并行隐藏的层级完成。
- 用“改形成本”代替“算力峰值”作为评估指标。 这会让你更接近真实系统表现。
结尾:真正的竞争不是谁更会算,而是谁更少让数据受苦
当我们把内积和外积、片内带宽和片间带宽放在一起看,会发现一个很少被明说的事实:AI 系统的核心矛盾,不是计算不够,而是数据总在错误的地方被迫变形。 你可以在芯片内部把并行做得极其漂亮,也可以在网络层面把带宽做得极其夸张,但只要数据形状和系统边界不一致,性能就会被层层折损。
所以,真正成熟的架构思维,不是迷信某个算子形式,也不是迷信某个互联指标,而是追问:哪一种数据组织方式,能让算力在更大的尺度上保持自然流动?
这会改变你看待硬件的方式。你不再只是看“快不快”,而是看“它是否允许数据少改形,少搬家,少绕路”。一旦你开始这样思考,就会明白,下一代性能的分水岭,也许不是更高的峰值,而是更少的摩擦。
而摩擦,恰恰是所有系统最昂贵的成本。
Sources
Hatch New Ideas with Glasp AI 🐣
Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)
Start Hatching 🐣