Transformer 與大型語言模型內部機制
分組查詢注意力(GQA)
在標準多頭注意力中,每個查詢頭都有自己的鍵與值頭,因此生成時必須儲存的 KV 快取會隨頭數成長。GQA 取折衷:把查詢頭分成少數幾組,讓同一組內的所有頭共用一個鍵/值頭。若有 32 個查詢頭、8 組,就只儲存 8 套鍵與值而非 32 套——快取小 4 倍——但每個 token 仍以完整且各自不同的查詢投影進行注意。
形式上,設有 H 個查詢頭與 G 組且 G 整除 H,GQA 保留 H 個查詢投影,但只有 G 個鍵/值投影;查詢頭 i 使用 KV 頭 floor(i 除以 H/G)。令 G = H 還原為完整多頭注意力,G = 1 還原為多查詢注意力,因此 GQA 在兩者間插值。模型常從多頭檢查點,透過把原 KV 頭依組平均池化來「續訓」,只需少量額外訓練即可恢復接近基線的品質。
報酬在於解碼時的記憶體頻寬:自迴歸生成主要受限於讀取 KV 快取,縮小它即可取得多查詢注意力大部分的加速,而品質損失遠少於後者。GQA 如今是 LLaMA-2 70B、Mistral 及許多生產規模模型的標準配置。
GQA 是完整多頭(品質最佳、快取最大)與多查詢(快取最小、較脆弱)之間的實務甜蜜點,這就是它主導當前開源模型的原因。
又稱
另見