推論與服務
分塊預填(chunked prefill)
大型語言模型的服務有兩種非常不同的工作。Prefill 一次吞下整個提示,是算力受限的,輕易就能塞滿 GPU 的運算單元。Decode 一次只產生一個 token,是記憶體受限的,會讓那些運算單元大半閒置。當一個長提示到來,它那一次巨大的 prefill 會獨佔 GPU 一段時間,於是其他正在生成中的請求全部卡住——它們的每 token 產出時間突然飆高,使用者感受到的就是頓挫。分塊預填靠「絕不一次跑完整個 prefill」來消除這個尖峰。
它把長提示切成固定大小的區塊,每個排程迭代只處理一塊,並把這些區塊與同一批次中其他請求進行中的 decode 步驟交錯排在一起。於是每次迭代都把一份受控的 prefill 算力搭載在記憶體受限的 decode 之上,正好填滿閒置的運算單元,讓 GPU 維持在接近滿載。結果是對所有人都更平順、更可預測的 token 間延遲,代價是把任一單一提示的第一個 token 稍微延後。
區塊大小是核心旋鈕:區塊越大,prefill 越快完成,但會重新引入 decode 抖動;區塊越小,延遲越平順,但增加排程負擔。
分塊預填是拿一點點首 token 時間,換取穩定的每 token 產出時間;它讓單一個長提示不再凍住其他所有人的串流。
又称
另见