L4Q: Parameter Efficient Quantization-Aware Training on Large Language Models via LoRA-wise LSQ

L4Q:大型语言模型的高效量化训练
828 篇文章

已下架不支持订阅

L4Q是一种针对大型语言模型(LLM)的参数高效量化感知训练方法,它结合LoRA学习量化步长,提高了通用性和精度。在保持与量化感知微调相当的训练时间下,L4Q能在低于4位精度下运行,同时在语言理解和小样本上下文学习任务中展现出优秀性能。与传统的量化方法相比,L4Q减少了内存使用并简化了训练流程。

本文是LLM系列文章,针对《L4Q: Parameter Efficient Quantization-Aware Training on Large Language Models via LoRA-wise LSQ》的翻译。

L4Q:通过LoRA方式的LSQ对大型语言模型进行参数有效量化感知训练

摘要

训练后量化(PTQ)和量化感知训练(QAT)方法在减轻与大型语言模型(LLM)相关的高内存和计算成本方面越来越受欢迎。在资源受限的场景中,PTQ由于其减少的训练开销,通常比QAT更受欢迎,尽管后者有更高的准确性潜力。同时,已经引入了诸如低秩自适应(LoRA)的参数有效微调(PEFT)方法,并且最近的工作已经探索了量化感知的PEFT技术。然而,由于这些方法依赖于预量化模型的配置,因此可能缺乏通用性。它们的有效性可能会受到非线性量化或混合精度权重的影响,并且特定量化参数的再训练可能会阻碍最佳性能。为了应对这些挑战,我们提出了L4Q,一种用于参数有效量化感知训练的算法。L4Q利用了LLM的LoRA学习量化步长,旨在增强通用性。L4Q的同时量化和微调过程适用于高精度模型,产生具有卓越精度的线性量化权重。我们使用教学数据集在LLaMA和LLaMA2模型家族上进行的实验展示了L4Q在语言理解和小样本上下文学习方面的能力,实现了低于4位的精度,同时保持了与在量化模型上应用PEFT相当的训练时间。

1 引言

2 相关工作

3 方法

4 实验

5 结论

我们提出了L4Q,这是一种有效的LLM量化方法,并证明了与低精度训练的LoRA和QAT相比,用近一半的内存使用量量化模型的能力。L4Q通过将量化器与LoRA层合并,在LLM上实现轻量级但实用的QAT。通过使用LoRA之上的量化尺度和偏差参数作为训练参数,并以较低的优化器状态精度

已下架不支持订阅

pytorch_quantization 是 NVIDIA 开发的用于量化 PyTorch 模型的工具库,支持量化感知训练(QAT)和后训练量化(PTQ),且与 TensorRT 有很好的集成,便于将量化后的 PyTorch 模型转换为 TensorRT Engine 以在 NVIDIA GPU 上高效推理[^1]。 PyTorch 对量化的支持方式包含量化感知训练(QAT),即模型训练中开启量化[^3]。而 torch.quantization 是 PyTorch 自身提供的量化功能模块。 在进行 QAT 时,torch.quantization 可以通过特定的流程实现。例如在运行时对每层的激活进行校准和量化可能会增加计算开销。以一个简单的示例来说,构建一个玩具模型,其中包含卷积层、ReLU 层、线性层和 LSTM 层,代码如下: ```python import torch from torch import nn # 构建玩具模型 m = nn.Sequential( nn.Conv2d(2, 64, (8,)), nn.ReLU(), nn.Linear(16, 10), nn.LSTM(10, 10) ) m.eval() ``` 在 EAGER 模式下,可以使用 `quantize_dynamic` 函数对模型进行动态量化: ```python from torch.quantization import quantize_dynamic model_quantized = quantize_dynamic( model=m, qconfig_spec={nn.LSTM, nn.Linear}, dtype=torch.qint8, inplace=False ) ``` 在 FX 模式下,使用 `quantize_fx` 相关函数进行量化操作: ```python from torch.quantization import quantize_fx qconfig_dict = {"": torch.quantization.default_dynamic_qconfig} # 准备模型 model_prepared = quantize_fx.prepare_fx(m, qconfig_dict) # 转换为量化模型 model_quantized = quantize_fx.convert_fx(model_prepared) ``` pytorch_quantization 工具和 torch.quantization 兼容层在 QAT 方面都为 PyTorch 模型的量化提供了支持,前者侧重于与 NVIDIA 生态的集成,后者是 PyTorch 原生的量化方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值