其实是并行和分布式(distribute)。

分布式引入了多个计算实体,主要有两种考量:

  • 功能的正确性:也就是 一致性问题 ,多个节点天然就导致了数据的多个备份,进而容易产生一致性问题。
  • 性能的可缩放性:当我们用 n 个设备的时候,能比用 1 个设备时有 n 倍的系统收益。也就是 Scale-Out 问题

对于性能问题又有:系统收益既可以是时延,也可以是吞吐,但是往往时延更优(时延小了自然吞吐就高了,反之则不然),像 PP 这种方式,就只能优化吞吐,而不能优化时延。此外 n 最好没有限制,有很多并行方式只能让 n 较小才有好效果,这就是难以 scaling 的提现。

那么是什么阻止我们达到这个目标呢?从算法角度看,是“独占”和“依赖”,这两种方式导致了分布式的计算中出现了“气泡”,其本质是设备的闲置,进而导致了系统收益的降低。我们设计不同样的分布式算法,本质都是为了消除这两个阻碍。

概念

分布式通信库

大模型并行

可以看到,似乎因为 LLM workload 在数学上的并行性非常好,似乎独占已经不构成什么影响了,但是依赖变得更加重要,而依赖又会表现为通信成本。