本文最后更新于 2025-04-05T02:27:16+00:00
                  
                  
                
              
            
            
              
                
                量化ollama模型 
受限于硬件环境,在主流消费级显卡(如配备16GB显存的RTX 4060 Ti等型号)上使用ollama运行DeepSeek-R1-32B、QwQ-32B等模型时,往往会显存溢出。官方提供的Q4_K_M量化方案虽可将显存需求压缩至约20GB,仍难以突破16GB显存设备的物理上限,将这些模型权重量化至Q2_K可将显存需求压缩至16GB以内。
本文阐述如何使用llama.cpp开源工具,自己对大模型权重进行量化,让自己的显卡能推理更大的模型。
环境:ubuntu 22.04, CUDA 11.8
下面的示例使用qwen2.5:0.5b,将该模型量化为Q2_K。
模型量化的原理 
推荐观看:https://www.bilibili.com/video/BV1EE42157Ms/ 
安装llama.cpp 
1 git clone https://github.com/ggerganov/llama.cpp
编译过程参考https://github.com/ggml-org/llama.cpp/blob/master/docs/build.md 
1 2 cmake -B build -DGGML_CUDA=ON
安装完成后,你可以借助build/bin/llama-quantize量化模型
拉取fp16权重 
必须拉取fp16权重(不支持对已经量化的权重再次量化)
1 2 3 4 5 6 7 8 9 10 ollama pull qwen2.5:0.5b-instruct-fp16
然后前往ollama的模型存放路径,例如/usr/share/ollama/.ollama/models/blobs,在这个目录下有很多sha256-开头的文件,你需要找到刚拉取的模型的GGUF权重文件。
根据上面的拉取日志,这个权重文件的开头是sha256-6f96e01a3f55,把这个文件复制到你喜欢的另一个文件夹,改名为qwen2.5:0.5b-instruct-fp16.gguf
开始量化! 
1 build/bin/llama-quantize qwen2.5:0.5b-instruct-fp16.gguf Q2_K
得到的结果为ggml-model-Q2_K.gguf
1 mv ggml-model-Q2_K.gguf qwen2.5:0.5b-instruct-Q2_K.gguf
导入ollama 
首先需要创建Modelfile,你可以使用旧模型的Modelfile,通过下面的指令查看
1 ollama show qwen2.5:0.5b-instruct-fp16 --modelfile
创建你自己的Modelfile,复制旧模型的Modelfile内容,注意修改FROM为自己量化后的模型路径
1 2 - FROM /usr/share/ollama/.ollama/models/blobs/sha256-6f96e01a3f550ca08aea1e5725bb8d5a7eccc6f281c30417e9d380b8c46467bd + FROM qwen2.5:0.5b-instruct-Q2_K.gguf 
导入ollama并运行
1 2 ollama create myqwen:0.5b-Q2_K -f Modelfile