当前位置:首页|资讯

小钢炮技术教程03|MiniCPM量化最佳实践

作者:OpenBMB发布时间:2024-09-27

|原文章发布于2024年07月24日

🎉 好消息!小钢炮技术教程上架飞书社区首页与知识合集啦!后台回复“小钢炮”,可解锁「面壁小钢炮MiniCPM通关宝典」全文。

「面壁小钢炮MiniCPM通关宝典」会在接下来一段时间内持续上新,从技术拆解到部署推理到量化微调,手把手教你速通MiniCPM模型!


 ➤  B站配套视频 ,搭配食用更佳 

🔗 https://space.bilibili.com/493282299/channel/collectiondetail?sid=3433564


今天,为大家带来的是MiniCPM量化教程」

➤ 面向人群:有基本的bash和python基础

➤ 模型介绍:MiniCPM:揭示端侧大语言模型的无限潜力

➤ Github地址:https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16

➤ 模型地址:https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16


 AutoAWQ 量化 

➤  设备要求:至少存在一张 Nvidia 20系以上显卡 

➤  量化2b需要6g显存,量化1b需要4g显存


1. 获取MiniCPM开源代码:

2. 获取MiniCPM模型权重,以MiniCPM-2b-sft为例:

3. 修改脚本配置参数:

在MiniCPM/quantize/awq_quantize.py 文件中根据注释修改配置参数:

4. 制作量化校准集:

根据选择的数据集,选择以下某一行代码替换 quantize/awq_quantize.py 中第三十八行:

5. 开始量化:

运行MiniCPM/quantize/awq_quantize.py,开始量化,完成后可得量化权重。


AutoGPTQ 量化

➤  设备要求:至少存在一张 Nvidia 20系以上显卡

➤  量化2b需要6g显存,量化1b需要4g显存 


1. 获取Minicpm模型权重:

以MiniCPM-2b-sft为例:

2. 获取量化脚本:

由于Autogptq不再更新,这里获取分支代码。

3. 安装Autogptq分支:

4. 开始量化:

   

BNB 量化 

➤  设备要求:能够加载模型便足够量化 

1. 安装bitsandbytes

2. 修改量化脚本参数

修改 MiniCPM/quantize/bnb_quantize.py 中以下参数

3. 更多量化参数可根据注释以及llm.int8()算法进行修改

4. 运行以下代码,执行量化

   

llama.cpp 量化 

1. 下载llama.cpp

2. 编译llama.cpp

3. 获取MiniCPM的gguf模型

step1: 创建llama.cpp/models/MiniCPM路径

cd lama.cpp/model

smkdir MiniCPM

step2: 下载 MiniCPM pytorch模型 所有文件(也可以是训练后的模型)并保存到llama.cpp/models/Minicpm

MiniCPM pytorch模型下载链接:https://huggingface.co/openbmb/MiniCPM-2B-sft-bf16

step3: 将模型转换为gguf格式

在这之前检查llama.cpp/convert-hf-to-gguf.py文件,如果class MiniCPMModel(Model)下存在:

将其替换为:

然后运行:

4. 将fp16的gguf文件进行量化


 量化测试 

 ➤  设备要求:至少存在一张12g显存的Nvidia 20系以上显卡

1. 获取MiniCPM开源代码:

2. 命令行进入到 MiniCPM/quantize 目录下:

3. 修改脚本参数:

修改MiniCPM/quantize/quantize_eval.sh:

4. 开始测试:

5. 结果展示:

以下是笔者对1b模型进行量化测试的结果,包括内存占用,困惑度,计算时间:

pretrained model:MiniCPM-1B-sft-bf16gpu usage: 3.16GBPerplexity 8.574: 100%|████████████████████████████████████████████████████| 164/164 [00:11<00:00, 14.24it/s]

awq model:awq_cpm_1b_4bitReplacing layers...: 100%|███████████████████████████████████████████████████| 52/52 [00:03<00:00, 17.16it/s]gpu usage: 1.62GBPerplexity 8.828: 100%|████████████████████████████████████████████████████| 164/164 [00:28<00:00,  5.81it/s]
gptq model:gptq_cpm_1b_4bitINFO - The layer lm_head is not quantized.gpu usage: 1.67GBPerplexity 9.121: 100%|████████████████████████████████████████████████████| 164/164 [00:09<00:00, 17.60it/s]
bnb model:gptq_cpm_1b_4bitgpu usage: 1.42GBPerplexity 8.836: 100%|████████████████████████████████████████████████████| 164/164 [00:17<00:00,  9.49it/s]


 ➤ 欢迎加入 OpenBMB 社区一起讨论 

后台回复小钢炮”,解锁面壁小钢炮MiniCPM通关宝典全文。


官方网站

https://www.openbmb.org


GitHub

https://github.com/OpenBMBhttps://github.com/thunlp


长期开放招聘|含实习

开发岗  |  算法岗  |  产品岗


交流QQ群

735930538


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1