LLM 从头到尾走一遍
三个 zoom level —— 整张网络、一个 transformer block 的内部、生成一段文字的完整循环。够你在脑子里搭起一个 LLM 的样貌,也够你开始问对的问题。
三个 zoom level —— 整张网络、一个 transformer block 的内部、生成一段文字的完整循环。够你在脑子里搭起一个 LLM 的样貌,也够你开始问对的问题。
把 weight matrix 用两种方式读,就有两种把它切到多 GPU 上的方法。从 transformer prefill 里的一次 matmul,推出 tensor parallelism 的整套心智模型。
把 article 02 的两种 cut 方式拿到一整个 transformer block 上跑一遍,盯着每一步每张 GPU 上的 shape。先把一种 cut 用到所有 matmul 上 —— 通信爆炸,每个 block 四次 gather。再把两种 cut 配成一对,刚好对上 widen-narrow 的架构节奏,落到每个 block 两次 all-reduce。
很多个用户同时打过来,prompt 长度还都不一样。把一整个 transformer block 拿到一个 flatten 起来的多 request tensor 上跑一遍,看哪些 layer 是白送、哪些得真动手 —— 顺便看一下 TP 这边到底要不要改。
很多 request 同时在跑,结束时间各不相同,有的还带着比一次 decode 大 1000 倍的 prefill。每次 iteration 的开销因此摇摆得厉害。ORCA 那种 iteration-level 调度先收拾一半问题;chunked prefill 再给最大的那次 iteration 封顶,让短任务不被拖在长任务后面。
Article 05 让两个阶段勉强共用一台引擎。这一篇要说的是:它俩本来就不该共用 —— prefill 是 compute-bound、decode 是 bandwidth-bound,长上下文还把这条沟越拉越宽。承认了这种 asymmetry,拆机就不再是优化,而是顺着公式来唯一说得通的答案。