使用llama.cpp进行Qwen2.5-3B模型的转换、量化、推理

1.llama.cpp环境安装

拉取项目

git clone https://github.com/ggerganov/llama.cpp

进入目录

cd llama.cpp

 CUDA 版本编译

cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release

 该过程需要等待一段时间

2.模型文件转换

魔搭社区拉取模型文件

git clone https://www.modelscope.cn/Qwen/Qwen2.5-3B-Instruct.git

进入到llama.cpp文件夹下,进行模型文件转换,将safetensor格式转换为gguf格式

python ./convert_hf_to_gguf.py  /mnt/workspace/Qwen2.5-3B-Instruct/ --outfile /mnt/workspace/Qwen2.5-3B-Instruct-fp16.gguf

 转换后默认为半精度FP16类型

3.模型量化

进入到llama.cpp的build/bin目录下,执行命令

./llama-quantize /mnt/workspace/Qwen2.5-3B-Instruct-fp16.gguf /mnt/workspace/Qwen2.5-3B-int4.gguf q4_0

执行完毕后将FP16类型量化为int4类型的模型

可以看到,量化后的模型大小为1.7G,显著下降

4.模型推理

./llama-cli -m /mnt/workspace/Qwen2.5-3B-int4.gguf --color -c 512 -b 64 -n 256 -t 12 -i -r "助手:" -p "你是人工智能助手" -cnv

还有很多参数可选

 也可以进行API的部署

./llama-server -m /mnt/workspace/Qwen2.5-3B-int4.gguf --port 8080

启动一个api,运行在8080端口

经过量化后的模型通过llama.cpp进行推理和部署时候,发现比自行计算所占的显存还要小,有了解的朋友麻烦指点下

 

### 关于 `llama.cpp` 中使用 Safetensors 和 GGUF 格式 #### 将Safetensors转换为GGUF格式 为了将Safetensors文件转换为GGUF格式,可以利用由`llama.cpp`提供的Python脚本`convert-hf-to-gguf.py`。此过程涉及指定输入路径(即Safetensor模型的位置),以及定义输出位置和目标量化类型[^1]。 ```bash cd ~/code/llama.cpp/build_cuda/bin python convert_hf_to_gguf.py /path/to/input/model.safetensors --outfile /path/to/output/model.gguf --outtype q8_0 ``` 上述命令展示了如何执行基本的转换操作;其中`--outtype`参数指定了所需的量化精度,在这个例子中设置为`q8_0`[^3]。 #### 对Safetensors模型进行量化并保存至GGUF格式 当需要以较低的量化级别来减少存储空间或提高推理效率时,可以通过调整`--outtype`选项实现不同级别的量化处理。对于低于`q8_0`的情况,可以选择更细粒度的量化方案如`q4_0`、`q5_0`等[^2]: ```bash python convert_hf_to_gguf.py /mnt/workspace/models/Qwen2.5-1.5B-Instruct --outfile /mnt/workspace/Qwen2.5-1.5B-Instruct-q4_0-v1.gguf --outtype q4_0 ``` 这表明通过改变量化的等级,可以在性能与资源消耗之间找到平衡点。 #### 部署已转换的GGUF模型 一旦完成了从Safetensors到GGUF格式的转换及必要的量化工作之后,就可以直接加载这些经过优化后的GGUF文件用于实际应用中的推断任务了。由于`llama.cpp`本身支持多种硬件加速特性(比如CUDA),因此可以根据具体环境配置相应的运行时参数以获得最佳表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值