大型語言模型(LLM)應用的一大挑戰是其耗費巨大的內存和計算需求,通常需要數十GB的GPU內存。這使得它們不僅昂貴而且難以運行。
為了緩解這些問題,研究人員開發了幾種LLM壓縮技術,其中包括“量化”。量化通過改變參數的存儲方式來減少模型的誤差。GPTQ就是這樣一種高效快速的算法。GPTQ通過AutoGPTQ庫得到了Hugging Face等流行框架的支持,并提供了一種經濟有效的解決方案。以下是人們需要知道的關于用GPTQ量化LLM的事項。
Transformer模型(例如LLM)通常使用16位浮點數字(fp16)存儲參數。因此,運行一個有10億個參數的模型至少需要2GB的內存,外加額外的開銷資源。量化通過將這些參數轉換為更小的整數格式(例如int8或int4),有效地減小了模型的大小,從而為這個問題提供了解決方案。量化算法面臨的挑戰是在最小化模型精度損失的同時減少模型的大小。
量化技術主要分為三大類:
量化感知訓練(QAT):這種技術將量化集成到訓練過程中。通過允許模型從一開始就學習低精度表示,QAT減少了通常與量化相關的精度損失。
量化感知微調(QAFT):這種方法采用預訓練的高精度模型,以較低的精度權重來保持其質量。令人關注的QAFT技術包括QLoRA和參數有效和量化感知自適應(PEQA),它們都是為了在減小模型大小的同時保持模型的訓練質量。
訓練后量化(PTQ):這種方法在模型訓練完成之后,將LLM的參數轉換為精度較低的數據類型。PTQ的目標是在不改變其架構或不需要重新訓練的情況下降低模型的復雜性。
GPTQ是一種訓練后量化技術,使其成為非常大的模型的理想選擇,在這種模型中,完全訓練甚至微調的成本可能高得令人望而卻步。它具有將模型量化為2位、3位或4位格式的能力,根據開發人員的特定需求提供靈活性。
GPTQ采用了一套優化技術,在保持模型準確性的同時簡化了量化過程。根據研究機構發表的一些論文,與之前提出的一次性量化方法相比,GPTQ的壓縮增益增加了一倍多,證明了其優越的效率。
實驗結果表明,當使用像NVIDIA A100這樣的高端GPU時,GPTQ可以將推理速度提高約3.25倍,當使用更經濟的選項(例如NVIDIA A6000)時,GPTQ可以將推理速度提高4.5倍。
在實際比較中,具有1760億個參數的BLOOM模型可以使用GPTQ在不到4個GPU小時內進行量化。相比之下替代量化算法OBQ需要2個GPU小時來量化小得多的BERT模型,該模型只有3.36億個參數。
GPTQ的創建者來自IST奧地利分布式算法和系統實驗室,他們已經在GitHub上公開了代碼。這種實現支持LLM的OPT和BLOOM系列。
還有其他一些將GPTQ應用于LLaMA模型的實現,包括著名的Llama.cpp模型。然而,對于范圍更廣的Transformer模型,AutoGPTQ庫是一個可靠的選擇。它與廣泛使用的Hugging Face Transformers庫兼容,允許開發人員將AutoGPTQ模型上傳到Hugging Face,使其可供應用程序和其他開發人員訪問。
Hugging Face已經擁有了幾個使用AutoGPTQ量化的模型,簡化了它們的部署。Hugging Face AutoGPTQ集成還支持AMD GPU和參數高效微調,包括低秩自適應(LoRA)。
開發人員可以使用Hugging Face的文本生成推理(TGI)工具包來運行AutoGPTQ模型。根據Hugging Face的說法,開發人員可以使用AutoGPTQ在一個A100-80GB的GPU上托管700億個參數的模型,這在fp16格式的模型上是不可能的。