0Ai学习的老章 | 极简教程,大模型量化实践,1张4090跑QwQ?

本文来源公众号“Ai学习的老章”,仅用于学术分享,侵权删,干货满满。

原文链接:极简教程,大模型量化实践,1张4090跑QwQ?

有朋友好奇为啥 4 张 4090 才跑起来

今天咱们了解一下大模型量化。

看能不能 1 张 4090 跑起来?

图片

还以 QwQ-32B 为例(这个模型确实很强,我很喜欢)

https://modelscope.cn/models/unsloth/QwQ-32B-GGUF/files

这里的模型有一个量化类型,Q、K、L、M看起来一脸懵

再顺便说一句,大家喜欢用 ollama 起模型,如果自己看模型说明,它默认都是量化模型

图片

DeepSeek-R1 爆火的时候,unsloth 就发布过最小 1.58 位量化版本的 R1,把 DeepSeek-R1 这个非常大的模型(它有 6710 亿个参数,也就是 671B)通过“量化”把原本 720GB 的模型压缩到只有 131GB 的大小。

简单来说

量化是一种将模型的浮点权重(通常是 32 位或 16 位)转换为低位整数(如 2 位、4 位、8 位等)的技术,目的是减少模型的存储空间和计算资源需求,同时尽可能保持模型的性能。

最主流的有以下量化的方法

方法类型

代表技术

核心特征

适用场景

训练后量化

GPTQ

4bit 权重量化,动态反量化推理

GPU 加速推理

感知量化

AWQ

激活值引导的智能量化

精度敏感型任务

混合推理

GGUF/GGML

CPU-GPU 异构计算框架

边缘设备部署

然后这里还设计不同的量化位宽,其实常见也就K-Quants 增强系列

量化类型

位宽策略

存储效率

技术特点

Q2_K

2.56bit/权重

超高压缩率

16 块超块结构

Q3_K

3.44bit/权重(type-0)

性能优先

平衡压缩与精度

Q4_K

4.5bit/权重(type-1)

通用型

主流部署方案

Q5_K

5.5bit/权重

精度增强

关键层保护

Q6_K

6.56bit/权重

准无损压缩

复杂任务保留

Q8_K

8bit 中间结果量化

资源充足场景

梯度计算优化

还有常见到的 IQ 系列量化方法

  • IQ4_NL:4 位量化,超块包含 256 个权重,权重 w 通过 super_block_scale 和 importance matrix 计算得到

  • IQ4_XS:4 位量化,超块包含 256 个权重,每个权重占用 4.25 位,通过 super_block_scale 和 importance matrix 计算得到

目前最流行的是混合量化策略,主打一个动态精度分配

  • K_M 混合策略:对 attention.wv 等关键张量采用 Q6_K,其余使用 Q4_K

  • K_S 均质策略:全模型统一量化配置,所有张量均使用 Q4_K

其中

  • K:表示 k-quants 量化方法

  • S (Small):简单量化,所有张量均使用相同位数量化

  • M (Mixed):混合量化,对关键张量使用更高精度的量化,其余使用标准精度

在相同位数下,K_M 系列模型(比如今天我们要演示的 QwQ-32B-Q4_K_M)通常在模型大小和性能之间取得最佳平衡,是推荐的选择。

关于量化,还有大量知识点,大量细节,这里没法展开。

实践

下载量化模型

我们用 modelscope 命令下载,安装方法 pip install modelscope

modelscope download unsloth/QwQ-32B-GGUF --include "QwQ-32B-Q4_K_M.gguf" --local-dir ./

QwQ 模型原版是 bf16 精度,模型文件 40 多 GB,运行起来打满了 4 张 4090。

Q4_K_M 量化版,模型文件 19.85GB,我们尝试用 2 张 4090 跑起来

为什么不用 1 张呢?我试了,报错显存不足了

官方建议用 ollama 或 llama.cpp,感兴趣自己看吧,我就不演示了:https://modelscope.cn/models/unsloth/QwQ-32B-GGUF/summary

我决定用 vLLM 试试

启动命令(建议照抄,试错无数次换来的):

CUDA_VISIBLE_DEVICES=4,5 vllm serve ./QwQ-32B-Q4_K_M.gguf --served-model-name QwQ:32B-4 --port 3001 --max_model_len 84720 --tensor-parallel-size 2 --enable-reasoning --resoning-parser deepseek_r1

启动需要时间,ok 之后把它配置到 open-webui。

随便问 2 个问题

图片

看后台日志,生成速度还是不错的

图片

比 4 张 4090 跑起来的满参数 QwQ 还快呢

图片

显存利用情况——4 和 5 满载

图片

然后用 4 张卡把 QwQ:32B 完整拉起来 显卡全部工作起来了

图片

说实话,智商差的不多,大家能猜到左右两边哪一个是量化版吗?

图片

最后提一句,直接用 Ollama 手工创建可启动的量化模型文件,方法如下,我遭遇的问题是运行后模型陷入无限思考,但是直接 ollama 从官网拉取,就没有问题。可能是配置文件不齐全,没再深究,感兴趣可以看看,有了 vLLM 我要完全抛弃 ollama 了。

先创建一个 Modelfile 格式的文件——vim Modelfile

FROM ./QwQ-32B-Q4_K_M.gguf 

Modelfile 除了上面的 FROM 参数,还有很多可以配置的东西。参考:https://github.com/ollama/ollama/blob/main/docs/modelfile.md

第二步,创建 ollama 的本地模型,下面的命令中 you-model-name 是自己起的名字,随便写。-f 指定刚才创建的 Modelfile 的路径

ollama create QwQ:32B -f Modelfile

执行过程耗时较长,创建完成后,我们就可以运行刚才创建的模型:

OLLAMA_GPUS="4" ollama run QwQ:32B

我测试单张 4090 可以跑,问题就是无限思考,没细究,已弃疗。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值