用來讓AI模型更快、更小、更便宜或更準確的一系列廣泛技術。這包括訓練優化(混合精度、梯度檢查點、數據並行)、推論優化(量化、剪枝、蒸餾、預測解碼)和服務優化(批次處理、緩存、負載平衡)。優化技術讓你能在筆電上運行14B參數的模型。
AI優化其實是三個獨立的領域,只是碰巧有相同的名稱。訓練優化是關於讓學習過程更快、更便宜。推論優化是關於讓訓練好的模型回應更快且使用更少的硬體資源。服務優化是關於高效處理大量同時用戶。大多數人會混淆這三者,因為技術有時會重疊,但目標和限制卻不同。像梯度檢查點(gradient checkpointing)這樣的訓練優化技術,是用計算時間換取記憶體空間——在反向傳播過程中重新計算激活值,而不是儲存它們。這在多日訓練過程中,當GPU記憶體成為瓶頸時是有意義的。但在推論階段,因為沒有反向傳播,這就毫無意義了。了解你正在優化的階段,以及你正在用什麼資源交換什麼,是做出正確決策的基礎。
如果你只能學習一種優化技術,量化(quantization)就是首選。概念很簡單:模型通常以高精度浮點數(通常是bfloat16,每個參數使用16位)進行訓練,但實際運行時可以使用更低的精度而不會導致品質災難性下降。一個140億參數的模型在bfloat16下需要約28 GB的VRAM。量化到4位(在llama.cpp中表示為Q4_K_M)後,僅需不到9 GB——這讓它可以在單一消費者級GPU上運行。雖然品質有所妥協,但幅度比你預期的要小。現代量化方法如GPTQ、AWQ和GGUF會根據真實數據進行校準,讓最重要的權重保持較高精度。在盲測中,大多數用戶在日常任務上無法區分全精度模型與其4位量化版本之間的差異。差距只會出現在邊緣案例——複雜的推理鏈、小眾事實知識、多語言任務等——但對大多數生產用途來說,量化幾乎是零成本的性能提升。
除了量化之外,推論速度的提升主要來自於如何管理請求,而不是縮小模型本身。連續批次處理(continuous batching)——vLLM和TensorRT-LLM採用的方法——讓伺服器能同時處理多個請求,利用GPU閒置週期,而不是讓一個請求等待下一個token時浪費資源。KV快取優化(如PagedAttention)防止鍵值快取的記憶體開銷隨著序列長度線性增長,這對長上下文應用至關重要。預測解碼(speculative decoding)使用一個小型快速的「草稿」模型生成幾個候選token,然後由大型模型在一次前向傳播中驗證它們——如果草稿模型猜對了(這在預測性文本中經常發生),你就能以一次大型模型調用的代價獲得多個token。這些技術會產生複利效果。一個經過良好調校的服務架構,結合連續批次處理、量化和預測解碼,可以將相同模型的吞吐量提升到天真的實現方式的5到10倍。
對大多數團隊來說,優化最終都是關於每個查詢的成本。在A100 GPU叢集中運行一個700億參數的模型成本高昂——雲端價格約為每小時每GPU 8至15美元。優化決定了這個叢集每秒能處理50個請求還是500個。蒸餾(distillation)是另一個杠杆:你訓練一個較小的「學生」模型,來模仿在特定任務上大型「老師」模型的輸出。一個蒸餾後的80億參數模型,如果在你的特定應用中能達到700億參數模型90%的品質,其運行成本僅為後者的零頭。許多團隊採用的實務流程是:先透過API使用可用的最大模型進行原型設計,測量你實際需要的品質水準,然後反向推導——量化、蒸餾或切換到更小的模型,直到找到品質可接受且成本可持續的最佳點。跳過這個流程,直接在生產環境中使用最大模型的團隊,幾乎總是過度支出。