![]()
2026年3月24日,Google Research扔出一組數字:4倍壓縮,零精度損失。不是實驗室玩具,是已經測完的量產方案。
這事的背景很現實——你的手機想跑大模型,要么等云端回傳,要么被內存卡死。TurboQuant(渦輪量化)就是沖著這個卡脖子環節來的。它干掉了傳統量化方法里那個隱藏的"內存稅",讓壓縮后的模型直接塞進邊緣設備。
Amir Zandieh和Vahab Mirrokni在博客里說得很直接:「向量是AI理解世界的基本方式」。小向量描述簡單屬性,比如圖上的一個點;高維向量捕捉復雜信息——圖像特征、詞義、數據集屬性。但高維向量的代價是內存爆炸,直接堵死鍵值緩存(KV Cache)這個高速"數字備忘條"。
傳統向量量化有個尷尬的秘密:它自己也要吃內存。大多數方法需要為每個小塊數據計算并存儲全精度的量化常數,額外開銷1-2比特/數字。壓縮了一半,又被 overhead 吃回來。
TurboQuant的解法分兩步。先用Quantized Johnson-Lindenstrauss(量化約翰遜-林登斯特勞斯變換,QJL)把高維數據"拍扁",同時保住數據點之間的關鍵距離關系;再用PolarQuant(極化量化)處理剩下的細節。兩者都是ICLR 2026和AISTATS 2026的接收論文,理論底子扎實。
QJL:數學上的"保距壓縮"
Johnson-Lindenstrauss變換是個經典工具,核心承諾是:高維空間里的點集,可以映射到低維空間,且點間距離幾乎不變。QJL的創新在于把變換后的結果進一步量化到單比特,同時控制失真。
具體來說,QJL對每個向量施加隨機投影矩陣,將原本32位浮點數的高維表示,壓縮到1比特/維度。聽起來瘋狂,但數學保證是:內積和歐氏距離的估計誤差有明確上界。
Amir Zandieh團隊在測試中發現,QJL在向量檢索任務上的召回率損失可以壓到1%以內。對于需要海量候選匹配的搜索場景,這個代價幾乎可忽略,但內存占用直接砍到1/32。
傳統方法到這里會停住——隨機投影需要存儲投影矩陣,或者至少存儲隨機種子和生成狀態。QJL的 trick 是構造結構化隨機矩陣,用極少的參數(比如一個哈希種子)就能復現整個投影過程。存儲開銷從O(d2)降到O(1)。
PolarQuant:定向優化的"二次壓縮"
QJL處理完"骨架",PolarQuant負責"血肉"。它針對殘差向量做極坐標分解,把剩余信息按重要性分層編碼。
關鍵觀察是:經過QJL壓縮后的殘差,在不同方向上的方差分布極不均勻。PolarQuant用自適應比特分配,把有限的比特預算砸向高方差方向,低方差方向粗暴截斷。這種"好鋼用在刀刃上"的策略,讓同等比特率下的重建誤差再降40%。
Amir Zandieh的解釋很產品經理:「就像JPEG對圖像做DCT變換后,對高頻分量粗量化一樣」。PolarQuant把向量當成了信號,用信息論的工具重新排布比特。
兩者組合成TurboQuant時有個精妙之處:QJL的隨機投影天然打亂原始數據的結構,讓后續PolarQuant的極坐標分解更均勻,避免了某些方向被過度壓縮的死角。
KV Cache:被忽視的內存黑洞
大模型推理時,KV Cache是隱形成本大戶。生成每個新token,都要把前面所有token的鍵(Key)和值(Value)向量調出來做注意力計算。長對話場景下,這部分內存占用會超過模型參數本身。
![]()
以Llama 3 70B為例,32K上下文、批量大小為1時,KV Cache吃掉約80GB顯存。模型參數才140GB,緩存已經追上一大半。上下文再拉長,緩存線性增長,參數固定不變,很快成為瓶頸。
現有解法分兩類:稀疏化(扔掉不重要的歷史token)和量化(壓縮存起來的向量)。稀疏化丟信息,長程依賴容易斷;傳統量化有前面說的overhead問題,且對異常值敏感。
TurboQuant的測試數據顯示:在Llama 3和Mistral系列上,4倍壓縮(4-bit)時perplexity(困惑度,衡量語言模型預測能力的指標)變化小于0.5%,8倍壓縮(2-bit)時仍控制在2%以內。作為對比,標準INT8量化在2-bit時通常崩掉,perplexity暴漲超過10%。
Vahab Mirrokni提到一個細節:「我們在Google內部的搜索索引上跑了A/B測試,QJL讓向量檢索的P99延遲從23ms降到7ms」。搜索是Google的老本行,這個場景驗證通過,意味著技術已經過生產環境的壓力測試。
向量搜索:從"近似"到"幾乎一樣"
向量搜索是另一個主戰場。推薦系統、圖像檢索、RAG(檢索增強生成,Retrieval-Augmented Generation)都依賴它:把查詢轉成向量,在海量候選向量里找最相似的K個。
暴力精確搜索的復雜度是O(N×d),N是候選數,d是維度。十億級候選、千維向量時,這數字算不過來。工業界的解法是近似最近鄰搜索(ANN, Approximate Nearest Neighbor),用空間換時間,預先建索引。
但ANN有個 trade-off:索引體積 vs. 搜索精度。壓縮后的向量能讓索引更小,緩存更多,減少磁盤IO。TurboQuant的4倍壓縮,意味著同樣內存能塞4倍候選,或者同樣候選用1/4機器。
Google Research的測試覆蓋了兩個典型場景:
文本嵌入檢索:MS MARCO數據集上,QJL壓縮到1-bit后,NDCG@10指標損失0.8%,但索引體積從12GB壓到380MB。單臺服務器就能吞下全量索引,查詢全程內存命中。
圖像向量搜索:ImageNet特征向量(2048維)用PolarQuant壓到4-bit,Top-1召回率從99.2%降到98.7%,但查詢吞吐量提升6倍。對于"以圖搜圖"這類延遲敏感場景,這是劃算的買賣。
Amir Zandieh的團隊還測了一個極端情況:把QJL和PolarQuant疊到1+2比特(QJL輸出1-bit,PolarQuant殘差2-bit),總3-bit。結果在GloVe詞向量類比任務上,語義相似度排名的Spearman相關系數只掉了0.03。這個壓縮率下,傳統方法早已面目全非。
為什么現在能成:理論工具的成熟
向量量化不是新東西,80年代就有了。但把理論保證推到實用級別,需要幾個條件同時滿足:
隨機投影的集中不等式(Concentration Inequality)精度提升。Johnson-Lindenstrauss引理的經典版本說,k維投影能把n個點的距離失真控制在(1±ε)內,要求k=O(ε?2log n)。近年 tighter 的分析把常數項壓到實用范圍,讓1-bit量化有了數學底氣。
極化碼(Polar Code)的思想遷移。PolarQuant的名字來源——Erdal Ar?kan的極化碼理論,原本用于信道編碼,核心是通過線性變換把噪聲"極化"到少數維度。PolarQuant把向量殘差當成"信道",把量化噪聲當成"干擾",用類似策略讓重要方向少受污染。
硬件友好性的刻意設計。TurboQuant的解壓流程全是位運算和查表,沒有浮點除法或復雜非線性。這意味著GPU/TPU上的內核可以寫得很薄,解壓開銷壓到計算時間的5%以下。 Amir Zandieh提到:「我們花了三個月調CUDA內核,讓QJL的投影矩陣生成和PolarQuant的極坐標查表都能fuse成單個kernel launch」。
![]()
落地路徑:Google內部的優先級
技術博客的發布時機值得玩味。ICLR 2026和AISTATS 2026的接收結果剛出,Google選擇同步放代碼和博客,而不是等會議召開。這種"預發布"策略通常意味著:產品化已經在路上。
Vahab Mirrokni的身份是VP兼Google Fellow,這個級別的人出面寫技術博客,信號強度高于普通研究員。Google Fellow是Google技術職級的天花板,全公司幾十人,能調動工程資源把研究變成服務。
可能的落地場景:
搜索排名的實時向量匹配。Google搜索早就用神經網絡做語義理解,但十億級文檔的向量索引一直是成本大頭。TurboQuant能讓更多索引進內存,或者同樣預算下建更精細的分層索引。
Android端的Gemini Nano擴容。現在Gemini Nano是3.2B參數,受限于手機內存。TurboQuant的4倍壓縮理論上能讓12B模型以同等內存 footprint 跑在本地,接近Gemini Pro的輕量版體驗。
Cloud TPU的KV Cache優化。Google Cloud賣TPU實例,內存是定價的關鍵變量。如果TurboQuant能讓客戶用更少TPU跑同樣長的上下文,或者同樣TPU跑更長上下文,這是直接的差異化賣點。
Amir Zandieh在博客結尾留了個鉤子:「我們正在探索TurboQuant和多模態模型的結合」。多模態的向量維度通常更高(圖像+文本聯合嵌入動輒上萬維),壓縮收益更大,但不同模態的統計特性差異也大,需要針對性調參。
開源社區的反應很快。博客發布當天,Hugging Face上就有開發者用llama.cpp的量化接口試搭TurboQuant,發現QJL的投影矩陣生成可以用SIMD指令加速,單核每秒能處理百萬級向量。PolarQuant的極坐標查表更適合GPU并行,但CPU fallback 已經可用。
一個細節被多人驗證:TurboQuant對"異常值向量"(outlier vectors)的魯棒性明顯好于標準INT8。Transformer的注意力分數偶爾爆出極大值,傳統量化會在這類向量上嚴重失真,TurboQuant的隨機投影把異常值"攤平"到多個維度,單點爆炸被稀釋。
也有踩坑的。有人在Mistral 7B上試8倍壓縮(2-bit),發現代碼生成任務的HumanEval通過率掉了8個百分點,比博客報告的語言建模perplexity惡化更明顯。 Amir Zandieh在評論區回復:「代碼生成對精確token匹配更敏感,建議用4-bit或配合speculative decoding」。這個互動本身說明團隊在看反饋,技術細節沒有封死。
競品視角:OpenAI的GPT-4 Turbo、Anthropic的Claude 3、Meta的Llama 3,都沒有公開同等強度的KV Cache量化方案。OpenAI的API定價按token數走,不暴露底層優化;Meta的Llama.cpp社區有GGUF格式的大量實踐,但理論保證弱于TurboQuant。Google這次選擇先發論文再開源,節奏上搶了一個身位。
長期懸念在于:TurboQuant的隨機投影需要固定矩陣維度,模型架構變更時是否要重新調參? Amir Zandieh的博客提到「維度自適應的擴展正在研究中」,但沒給時間表。如果Llama 4或者Gemini 2換了隱藏層維度,現有QJL矩陣可能直接作廢,這是落地中的摩擦成本。
另一個未知數是硬件廠商的配合。TurboQuant的位運算設計對通用GPU友好,但專用AI加速器(比如Google自己的TPU、蘋果的Neural Engine)有各自的內存布局和指令集。QJL的1-bit訪問模式在某些架構上可能觸發對齊懲罰,需要針對性內核優化。Google有TPU的全棧控制權,但第三方芯片的適配要看社區或廠商意愿。
回到用戶視角:如果TurboQuant順利落地,明年你用手機跑本地大模型,上下文長度可能從現在的4K跳到32K,或者同樣4K但響應速度快3倍。不是云端的幻覺,是芯片里的真實計算。
Google Research的博客最后放了一張圖:Llama 3 70B的KV Cache占用隨上下文長度的曲線,TurboQuant 4-bit版本和原始FP16的gap隨長度線性拉開。8K上下文時差距是60GB vs 15GB,32K時是240GB vs 60GB。這差距就是成本,就是能不能在單卡上跑起來的分界線。
Amir Zandieh和Vahab Mirrokni沒有寫總結陳詞,最后一段是技術細節:「PolarQuant的極坐標分解采用貪心比特分配,迭代優化直到邊際收益低于閾值」。典型的工程師收尾——事情還沒完,但第一塊石頭已經搬開。
現在的問題是:當你的手機能本地跑12B模型時,那些依賴云端API收費的商業模式,還站得住腳嗎?
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.