GPTQ: Post-Training Quantization for GPT Models
GPTQ是一種4位量化的訓練后量化(PTQ)方法,主要關注GPU推理和性能。
該方法背后的思想是,嘗試通過最小化該權重的均方誤差將所有權重壓縮到4位。在推理過程中,它將動態地將其權重去量化為float16,以提高性能,同時保持低內
gptq 常用4bit 8bit量化
GGUF:GPT-Generated Unified Format
GGUF(以前稱為GGML)是一種量化方法,允許用戶使用CPU來運行LLM,但也可以將其某些層加載到GPU以提高速度。
雖然使用CPU進行推理通常比使用GPU慢,但對于那些在CPU或蘋果設備上運行模型的人來說,這是一種非常好的格式。
AWQ: Activation-aware Weight Quantization
AWQ(激活感知權重量化),它是一種類似于GPTQ的量化方法。AWQ和GPTQ作為方法有幾個不同之處,但最重要的是AWQ假設并非所有權重對LLM的性能都同等重要。
也就是說在量化過程中會跳過一小部分權重,這有助于減輕量化損失。所以他們的論文提到了與GPTQ相比的可以由顯著加速,同時保持了相似的,有時甚至更好的性能
awq 一種模型量化 常用4bit量化 精度比同級gptq高一些
以千問qwen 7B 為例,顯卡A4000 16G顯存
Qwen/Qwen1.5-7B-Chat
# modeIdOrPath="Qwen/Qwen1.5-14B-Chat-GPTQ-Int4"
modeIdOrPath="Qwen/Qwen1.5-7B-Chat"
# modeIdOrPath="Qwen/Qwen1.5-7B-Chat-AWQ" # the quantized model
# modeIdOrPath="Qwen/Qwen1.5-7B-Chat-GPTQ-Int8"
fType=torch.bfloat16
model = AutoModelForCausalLM.from_pretrained(modeIdOrPath,torch_dtype=fType,device_map='auto',# attn_implementation="flash_attention_2"
)
初始加載顯存占用? 17G
?http請求? 翻譯中文:Trump was always bothered by how Trump Tower fell 41 feet short of the General Motors building two blocks north.?
平均速度? 2-3秒
請求后顯存占用18G左右
Qwen/Qwen1.5-7B-Chat? 增加?flash_attention_2
model = AutoModelForCausalLM.from_pretrained(modeIdOrPath,torch_dtype=fType,device_map='auto',attn_implementation="flash_attention_2"
)
初始顯存占用 17G
速度還是2-3秒,沒有明顯變化?
Qwen/Qwen1.5-7B-Chat-GPTQ-Int8
初始顯存占用 11G?
平均時間間隔 15 秒,比非量化模型慢了不少
跑了幾個請求后,顯存占用 12.7G
參考:
大語言模型量化方法對比:GPTQ、GGUF、AWQ - 知乎
https://kaitchup.substack.com/p/fine-tuning-and-quantization-of-qwen15