|原文章发布于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
➤ 设备要求:至少存在一张 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,开始量化,完成后可得量化权重。
➤ 设备要求:至少存在一张 Nvidia 20系以上显卡
➤ 量化2b需要6g显存,量化1b需要4g显存
1. 获取Minicpm模型权重:
以MiniCPM-2b-sft为例:
2. 获取量化脚本:
由于Autogptq不再更新,这里获取分支代码。
3. 安装Autogptq分支:
4. 开始量化:
➤ 设备要求:能够加载模型便足够量化
1. 安装bitsandbytes
2. 修改量化脚本参数
修改 MiniCPM/quantize/bnb_quantize.py 中以下参数
3. 更多量化参数可根据注释以及llm.int8()算法进行修改
4. 运行以下代码,执行量化
1. 下载llama.cpp
2. 编译llama.cpp
3. 获取MiniCPM的gguf模型
step1: 创建llama.cpp/models/MiniCPM路径
cd lama.cpp/model
s
mkdir 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-bf16
gpu usage: 3.16GB
Perplexity 8.574: 100%|████████████████████████████████████████████████████| 164/164 [00:11<00:00, 14.24it/s]
awq model:awq_cpm_1b_4bit
Replacing layers...: 100%|███████████████████████████████████████████████████| 52/52 [00:03<00:00, 17.16it/s]
gpu usage: 1.62GB
Perplexity 8.828: 100%|████████████████████████████████████████████████████| 164/164 [00:28<00:00, 5.81it/s]
gptq model:gptq_cpm_1b_4bit
INFO - The layer lm_head is not quantized.
gpu usage: 1.67GB
Perplexity 9.121: 100%|████████████████████████████████████████████████████| 164/164 [00:09<00:00, 17.60it/s]
bnb model:gptq_cpm_1b_4bit
gpu usage: 1.42GB
Perplexity 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