W4A16 量化

经过上次的KV cache量化后,我们发下显存占用有了明显的下降,证明我们的量化达到了一定成果,本篇继续介绍进行的W4A16 量化工作

W4A16 量

1.量化步骤

W4A16中的A是指Activation,保持FP16,只对参数进行 4bit 量化。使用过程也可以看作是三步。

第一步:同 KV Cache第一步

第二步:量化权重模型。利用第一步得到的统计值对参数进行量化,具体又包括两小步:

  • 缩放参数。主要是性能上的考虑(回顾 PPT)。
  • 整体量化。

第二步的执行命令如下:

# 量化权重模型
lmdeploy lite auto_awq \
  --model  /root/share/temp/model_repos/internlm-chat-7b/ \
  --w_bits 4 \
  --w_group_size 128 \
  --work_dir ./quant_output 

命令中 w_bits 表示量化的位数,w_group_size 表示量化分组统计的尺寸,work_dir 是量化后模型输出的位置。这里需要特别说明的是,因为没有 torch.int4,所以实际存储时,8个 4bit 权重会被打包到一个 int32 值中。所以,如果你把这部分量化后的参数加载进来就会发现它们是 int32 类型的。

最后一步:转换成 TurboMind 格式。

# 转换模型的layout,存放在默认路径 ./workspace 下
lmdeploy convert  internlm-chat-7b ./quant_output \
    --model-format awq \
    --group-size 128

这个 group-size 就是上一步的那个 w_group_size。如果不想和之前的 workspace 重复,可以指定输出目录:--dst_path,比如:

lmdeploy convert  internlm-chat-7b ./quant_output \
    --model-format awq \
    --group-size 128 \
    --dst_path ./workspace_quant

接下来和上一节一样,可以正常运行前面的各种服务了,不过咱们现在用的是量化后的模型。

最后再补充一点,量化模型和 KV Cache 量化也可以一起使用,以达到最大限度节省显存。

2.量化效果

官方在 NVIDIA GeForce RTX 4090 上测试了 4-bit 的 Llama-2-7B-chat 和 Llama-2-13B-chat 模型的 token 生成速度。测试配置为 BatchSize = 1,prompt_tokens=1,completion_tokens=512,结果如下表所示。

modelllm-awqmlc-llmturbomind
Llama-2-7B-chat112.9159.4206.4
Llama-2-13B-chatN/A90.7115.8

可以看出,TurboMind 相比其他框架速度优势非常显著,比 mlc-llm 快了将近 30%。

另外,也测试了 TurboMind 在不同精度和上下文长度下的显存占用情况,如下表所示。

model(context length)16bit(2048)4bit(2048)16bit(4096)4bit(4096)
Llama-2-7B-chat15.16.316.27.5
Llama-2-13B-chatOOM10.3OOM12.0

可以看出,4bit 模型可以降低 50-60% 的显存占用,效果非常明显。

总而言之,W4A16 参数量化后能极大地降低显存,同时相比其他框架推理速度具有明显优势。

实机进行W4A16 量化

先导入环境变量,去huggingface的镜像网站进行下载。

export HF_ENDPOINT=https://hf-mirror.com
lmdeploy lite auto_awq merged --work-dir internlm2-chat-7b-4bit

使用该命令进行量化,其他的参数使用默认值

量化之后,运行模型查看量化结果(量化模型和 KV Cache 量化也可以一起使用,以达到最大限度节省显存。因此我们采用结合KV Cache的量化)

量化结果:

结合KV cache=0.5运行模型:

lmdeploy chat internlm2-chat-7b-4bit --model-format awq --cache-max-entry-count 0.5 --meta-instruction "你是考研政治题库,内在是InternLM-7B大模型。你将对考研政治单选题,多选题以及综合题 做详细、耐心、充分的解答,并给出解析。"

查看模型运行成果,占用显存:15977MB,明显比只是用KV Cache时有了更多的下降。

结合KV cache=0.01运行模型:

lmdeploy chat internlm2-chat-7b-4bit --model-format awq --cache-max-entry-count 0.01 --meta-instruction "你是考研政治题库,内在是InternLM-7B大模型。你将对考研政治单选题,多选题以及综合题 做详细、耐心、充分的解答,并给出解析。"

查看模型运行成果:显存占用大幅度降低,仅为7017MB,量化成果非常明显。 

总结

在进行W4A16量化后得到了新的模型,再结合KV Cache量化后模型运行时占用的显存有了非常大幅度的下降,证明我们再存储占用方面取得了很好的量化成果,这也让我们对模型速度,精度等有了更多的考虑,后续会进行更多测试得到数据结果。

  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值