LLM量化迎来“革命性突破” | 17小时将405B模型量化成1~2比特,吞吐量提升1.8倍!

模型量化是一种优化深度学习模型以减少其存储需求和加速推理过程的技术。**在模型量化中,通常会将模型的权重和激活值从浮点数表示转换为更低位宽的整数表示。这种转换通常可以减少模型占用的存储空间,减少内存带宽需求,并且可以加速模型的推理过程,特别是在边缘设备或资源受限的环境下。然而,由于数值表示的局限性,传统的基于标量的权重量化难以实现这种极低位。最近对LLM的矢量量化(VQ)的研究表明,通过使用查找表将矢量压缩到索引中,可以实现极低位模型量化。 本文介绍了用于LLM极低位量化的矢量训练后量化(VPTQ)。作者使用二阶优化来制定LLM VQ问题,并通过求解优化来指导我们的量化算法设计。**作者进一步使用通道无关二阶优化来细化粒度VQ的权重。此外,通过分解优化问题,作者提出了一种简洁有效的码本初始化算法。还扩展了VPTQ以支持残差和离群值量化,这提高了模型的准确性并进一步压缩了模型。作者只利用了量化算法执行时间的10.4%-18.6%,与SOTA算法相比,其推理吞吐量却增加了1.6-1.8倍。”


代码链接-https://github.com/microsoft/VPTQ

论文链接-https://arxiv.org/pdf/2409.17066


01-模型量化简介

模型量化是一种优化深度学习模型以减少其存储需求和加速推理过程的技术。在模型量化中,通常会将模型的权重和激活值从浮点数表示转换为更低位宽的整数表示。这种转换通常可以减少模型占用的存储空间,减少内存带宽需求,并且可以加速模型的推理过程,特别是在边缘设备或资源受限的环境下。**模型量化具有以下的优势:

  • 存储效率:量化后的模型占用更少的存储空间,使得模型更易于部署到资源受限的设备上(如移动设备、嵌入式系统)。

  • 加速推理:低精度计算通常比高精度计算更快,从而提高推理速度。

  • 提升能效:在许多硬件上,低精度运算消耗的能量更少,有助于延长电池寿命。

学者们相继提出了多种量化方法,主流的量化方法包括:1)权重量化:将模型的权重从高精度转换为低精度。2)激活量化:将模型中的激活值进行量化。3)全量化:同时量化权重和激活。4)动态量化:在推理时动态转换数据类型,通常用于减少内存占用。5)静态量化:在模型训练后进行量化,通常需要额外的校准步骤。

模型量化被广泛应用于需要高效推理的多种场景中,例如:移动应用、物联网设备、边缘计算等等。通过量化技术,可以将大型语言模型或视觉模型部署到智能手机、嵌入式系统等资源受限的设备。

当然,模型量化技术也存在一些挑战。1)精度损失:量化可能导致模型精度下降,因此需要使用技术手段(如量化感知训练)来减轻这一影响。2)硬件兼容性:不同硬件对量化的支持程度不同,需考虑模型在目标硬件上的表现。

总而言之,模型量化是一种有效的优化技术,能够在保持良好性能的前提下,显著减少模型的计算和存储需求。随着深度学习应用的普及,量化技术的研究和应用也在不断发展。

02-主流LLM量化算法梳理

02.01-GPTQ量化算法简介

GPTQ是一种基于近似二阶信息的新的单次权重量化方法,具有高精度和高效率。具体来说,GPTQ可以在大约四个GPU小时内量化具有1750亿个参数的GPT模型,将位宽降低到每权重3或4位,相对于未压缩的基线,精度下降可以忽略不计。

与之前提出的单次量化方法相比,该方法将压缩增益提高了一倍多,保持了准确性,使我们首次能够在单个GPU内执行1750亿个参数模型进行生成推理。此外,研究还表明该方法在极端量化机制下仍然可以提供合理的精度,在这种机制下,权重被量化到2位甚至3位量化级别。

大量实验结果证明,这些改进可以用于FP16的端到端推理加速,使用高端GPU(NVIDIA A100)时约为3.25倍,使用更具成本效益的GPU(NVIDIA A6000)时为4.5倍。

02.02-AWQ量化算法简介

AWQ,即激活感知权重量化,这是一种硬件友好的LLM低比特权重量化方法。AWQ发现,并非LLM中的所有权重都同等重要。仅保护1%的显著权重可以大大减少量化误差。为了识别显著的权重通道,我们应该参考激活分布,而不是权重。

为了避免硬件低效的混合精度量化,作者从数学上推导出,扩大显著通道可以减少量化误差。AWQ采用等效变换来缩放显著权重通道以保护它们。规模是通过离线收集激活统计数据来确定的。AWQ不依赖于任何反向传播或重建,因此它可以推广到不同的领域和模态,而不会对校准集进行过拟合。

AWQ在各种语言建模和领域特定基准(编码和数学)方面的表现优于现有工作。由于更好的泛化能力,它为指令调谐的LM和首次多模态LM实现了出色的量化性能。除了AWQ,作者还实现了TinyChat,这是一个为4位设备上LLM/VLM量身定制的高效灵活的推理框架。通过内核融合和平台感知的权重打包,TinyChat在台式机和移动GPU上的速度比Huggingface FP16实现快3倍以上。它还使70B Llama-2模型在移动GPU上的部署民主化。

02.03-SmoothQuant量化算法简介

SmoothQuant是一种无需训练、精度保持和通用的训练后量化(PTQ)解决方案,可为LLM实现8位权重、8位激活(W8A8)量化。基于权重易于量化而激活不易量化的事实,SmoothQuant通过将量化难度从激活离线迁移到具有数学等效变换的权重来平滑激活异常值。

SmoothQuant支持LLM中所有矩阵乘法的权重和激活的INT8量化,包括OPT、BLOOM、GLM、MT-NLG、Llama-1/2、Falcon、Mistral和Mixtral模型。作者为LLM演示了高达1.56倍的加速和2倍的内存减少,精度损失可以忽略不计。Smooth Quant允许在单个节点内为530B LLM提供服务。该工作提供了一个很好的解决方案,可以降低硬件成本并使LLM民主化。

03-VPTQ背景简介

随着大型语言模型(LLM)规模的增加,它们在各种复杂任务中表现出了出色的性能。然而,LLM的巨大权重给高效推理和实际部署带来了重大挑战。这种尺寸减小会显著影响内存容量和硬盘存储,并需要大量带宽进行推理。仅权重量化是一种主流的模型压缩技术,通过用更少的比特表示浮点数,有效地减小了模型的大小。

在LLM的纯权重量化中,一种代表性的方法是训练后量化(PTQ)。PTQ直接量化模型权重,而无需重新训练模型。通常,PTQ只涉及将模型权重转换为低位定点数。目前,PTQ的主要方法是标量量化,它将模型中的每个标量权重转换为较低位值。最近的工作通过3-4位量化实现了接近原始模型的精度。

上表总结了LLM中典型标量量化方法(GPTQ、AWQ)研究的特点。然而,由于数值表示的局限性,传统的基于标量的权重量化难以实现如此极低的比特级别。例如,使用2位量化,我们只能使用四个数值来表示模型权重,这严重限制了权重表示的范围。尽管BitNe已经实现了量化感知训练,可以在模型的预训练阶段将权重量化到2位以下,但这种方法需要大量的GPU集群资源来保持合理的准确性。

最近的研究探索了一种称为矢量量化(VQ)的有效的仅加权量化方法。VQ通过预定义的码本(查找表)为索引分配权重向量。VQ通过将高维向量映射到查找表中的一组预定义的低维向量来压缩数据。这种方法大大降低了数据的存储要求,同时允许通过简单的索引引用快速重建原始向量。VQ通过利用不同数据维度之间的相关性和冗余,实现了比标量量化更有效的数据压缩。通过检测和利用相互依赖性,VQ可以用更少的比特对复杂的多维数据进行编码,从而实现更高的压缩比和更小的比特宽度。

04-VPTQ算法简介

超大的模型尺寸极大地挑战了大型语言模型(LLM)的部署和推理。由于LLM权重的冗余,最近的研究集中在将仅加权量化推到极低位(甚至低至2位)。它降低了内存需求,优化了存储成本,并减少了推理过程中的内存带宽需求。然而,由于数值表示的局限性,传统的基于标量的权重量化难以实现这种极低位。最近对LLM的矢量量化(VQ)的研究表明,通过使用查找表将矢量压缩到索引中,可以实现极低位模型量化。

本文介绍了用于LLM极低位量化的矢量训练后量化(VPTQ)。作者使用二阶优化来制定LLM VQ问题,并通过求解优化来指导我们的量化算法设计。作者进一步使用通道无关二阶优化来细化粒度VQ的权重。此外,通过分解优化问题,作者提出了一种简洁有效的码本初始化算法。还扩展了VPTQ以支持残差和离群值量化,这提高了模型的准确性并进一步压缩了模型。

大量的实验结果表明:在2位时,VPTQ在LLaMA-2上将模型量化困惑度降低了0.01-0.34,在Mistral-7B上降低了0.38-0.68,在LLaMA-3上降低了4.41-7.34,在SOTA上平均提高了0.79-1.5%的精度,在Mistal-7B上提高了1%,在QA任务中平均提高了11-22%的精度。作者只利用了量化算法执行时间的10.4%-18.6%,与SOTA相比,推理吞吐量增加了1.6-1.8倍。

总而言之,矢量训练后量化(VPTQ)是一种新的训练后量化方法,它利用矢量量化在极低比特宽度(<2比特)的LLM上实现高精度。VPTQ可以将70B,甚至405B模型压缩到1-2位,而无需重新训练,并保持高精度。1)1-2位精度更高(405B@<2bit,70B@2bit)。2)轻量级量化算法:量化405B Llama-3.1仅需约17小时。3)敏捷量化推理:低解码开销、最佳吞吐量和TTFT。

05-VPTQ算法整体流程

在这里插入图片描述

VQ是一种高效有损数据压缩方法。其目的是通过将高维原始数据映射到由查找表表示的低维空间来减少失真。VQ将原始向量(W′)从向量空间映射到一组有限的向量,通常称为码本(查找表,C)。原始空间中的每个向量都近似于码本中最近的向量(质心Ci)。

VQ表示查找表中使输入向量v之间的欧几里德距离最小化的最近质心Ci。优化问题旨在找到导致v之间距离最小的索引i。因此,每个输入向量由最相似的质心表示,从而最小化总失真。

上图展示了应用VQ压缩权重矩阵上模型权重的示例。具体的步骤如下所述:

  • 首先,对于维度为M×N的权重矩阵W,作者将W重塑为长度为v的向量W′。重塑向量的数量应为M×Nv。

  • 然后,作者使用k-means或其他聚类算法来构建码本。构建的码本包含k个质心向量,每个向量具有v维。直接应用VQ算法通常不会产生可接受的精度。通常,PTQ算法调整模型索引和质心以提高量化模型的精度。

    在模型推理过程中,模型中的每个算子首先通过索引和质心对查找表(码本)中的原始权重矩阵进行逆量化。与标量量化不同,VQ在量化权重中保留了索引和质心。VQ的等效压缩比可以表示为:总原始模型比特/(码本比特+索引比特)。等效量化位宽为:原始位宽/压缩比。例如,一个长度为v=8、质心为256的4096×4096 FP16权重矩阵,压缩比为(16×4096×4096)/(8×256+8×4096×4096/8)=15.9。等效位宽为1.0001位。

06-VPTQ算法环境搭建与运行

06.01-搭建运行环境

# 导入cuda环境``export PATH=/usr/local/cuda-12/bin/:$PATH`  `   ``# 创建虚拟运行环境`conda create -n gptq python=3.10`conda activate gptq` `   ``# 安装三方依赖``pip install git+https://github.com/microsoft/VPTQ.git --no-build-isolation

06.02-运行样例代码

微软官方提供了多种方式的调用方式,用户可以根据自己的兴趣选择一种合适的使用方式即可,无需使用所有方式,请各位知悉!

06.02.01-语言生成模型样例

# 要使用预训练的模型生成文本,可以使用以下代码片段``python -m vptq --model=VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft --prompt="Explain: Do Not Go Gentle into That Good Night"

06.02.02-终端聊天机器人样例

# 启动聊天机器人:请注意,您必须使用聊天模型才能正常工作``python -m vptq --model=VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft --chat

06.02.03-Python API使用样例

import vptq``import transformers``tokenizer = transformers.AutoTokenizer.from_pretrained("VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft")``m = vptq.AutoModelForCausalLM.from_pretrained("VPTQ-community/Meta-Llama-3.1-70B-Instruct-v8-k65536-0-woft", device_map='auto')``   ``inputs = tokenizer("Explain: Do Not Go Gentle into That Good Night", return_tensors="pt").to("cuda")``out = m.generate(**inputs, max_new_tokens=100, pad_token_id=2)``print(tokenizer.decode(out[0], skip_special_tokens=True))

06.02.04-Gradio Web应用使用样例

export SHARE_LINK=1``python -m vptq.app

07-VPTQ算法性能评估

上表展示了LLaMA-2 2位量化结果。作者在LLaMA-2模型上将VPTQ与QuIP#、AQLM、GPTVQ、DB-LLM和GPTQ量化算法进行了比较。如上表所示,GPTQ作为一种标量量化方法,其性能较差,精度不可用。虽然DB-LLM和GPTVQ的表现更好,但它们的性能仍然显著下降,WikiText-2的困惑度增加了2。尽管GPTVQ是一种矢量量化算法,但其精度显著下降是由于两个因素造成的:使用较短的矢量长度,这会引入较高的量化损失,以及选择每v列更新权重,这会导致累积误差。因此,作者主要关注将VPTQ与最先进的2位量化方法QuIP#和AQLM进行比较,这两种方法都选择了较长的矢量长度。

表中包括五个QA任务的平均得分。VPTQ在7B和13B型号上的表现优于QuIP#和AQLM。对于7B模型,与之前的最佳结果相比,VPTQ分别将WikiText-2的困惑度进一步降低了0.5和0.3,分别为2-2.02位和2.26-2.29位。在QA任务中,VPTQ 2.26位模型超过了AQLM 2.29位模型,平均精度提高了1%。对于13B模型,VPTQ 2.02位模型比QuIP#略有改进,2.18位模型在QA精度方面比AQLM高出1.5%。在LLaMA-2-70B模型上,作者获得了类似的困惑度(<0.02)和可比的QA结果(<0.04%)。

上表展示了LLaMA-3 Wikitext2困惑度(上下文长度2048)和平均零镜头质量保证准确度、Mistral-7B Wikitext2、C4困惑度(除GPTQ、GPTVQ为2048外的上下文长度8192)和平均零点质量保证准确率。

表中展示了LLaMA-3模型和Mistral-7b模型的VPTQ结果。在LLaMA-3模型的所有2位、3位和4位量化中,该算法的表现明显优于GPTQ、DB-LLM和QuIP,后者的精度降至无法使用的水平。VPTQ确保8B型号的精度下降<8%,70B型号的精度降低<5%。在Mistral-7B模型上,其2位性能在QA精度方面比QuIP#和AQLM都高出1%。在3比特量化中,其困惑度较低。在4位时,结果总体上是可比的。在上表中,GPTQ和GPTVQ使用2048的上下文长度。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值