目录
大语言模型(Large Language Model,LLM),可以通过量化(Quantization)操作来节约内存/显存的使用,并且降低了通讯开销,进而达到加速模型推理的效果。比如将权重(weight)为浮点数模型 FP32 转换为定点数模型 INT8。
- 低精度模型:表示模型权重数值格式为 FP16(半精度浮点)或者 INT8(8位的定点整数)。
- 常规精度模型:表示模型权重数值格式为、 FP32(32位浮点,单精度)。
- 混合精度(Mixed precision):表示模型中同时使用 FP32 和 FP16 的权重数值格式。 FP16 减少了一半的内存大小,但有些参数或操作符必须采用 FP32 格式才能保持准确度。
1. 下载 Transformers 模型
bash
#2. Transformers 模型转 GGUF 格式
bash
~/llama.cpp/convert_hf_to_gguf.py DeepSeek-R1-Distill-Qwen-14B --outfile DeepSeek-R1-Distill-Qwen-14B-GGUF/DeepSeek-R1-Distill-Qwen-14B-F16.gguf--outtype f32参数可以指定量化精度
3. GGUF 模型量化
bash
# 评估量化效果
llama-quantize-stats -m DeepSeek-R1-Distill-Qwen-7B-F16.gguf
# Q 代表量化。
# 5 表示量化过程中使用的位数。
# K 表示在量化中使用 k 均值聚类。
# M 表示量化后的模型大小。S = 小,M = 中,L = 大。
llama-quantize DeepSeek-R1-Distill-Qwen-7B-F16.gguf DeepSeek-R1-Distill-Qwen-7B-Q5_K_M.gguf Q5_K_M
# 14B
llama-quantize DeepSeek-R1-Distill-Qwen-14B-F16.gguf DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf Q4_K_M- q4_0:这是最初的量化方案,使用 4 位精度。
- q4_1 和 q4_k_m、q4_k_s:这些提供了不同程度的准确性和推理速度,适合需要平衡资源使用的场景。
- q5_0、q5_1、q5_k_m、q5_k_s:这些版本在保证更高准确度的同时,会使用更多的资源并且推理速度较慢。
- q6_k 和 q8_0:这些提供了最高的精度,但是因为高资源消耗和慢速度,可能不适合所有用户。
- fp16 和 f32: 不量化,保留原始精度。
4. 运行 GGUF 模型
bash
llama-cli -m DeepSeek-R1-Distill-Qwen-7B-Q5_K_M.gguf
llama-cli -m DeepSeek-R1-Distill-Qwen-7B-Q5_K_M.gguf--port 8080