Int 4量化用于目标检测 【GiantPandaCV】文章2019 CVPR,讲的是Int 4量化用于目标检测,主要是工程化的一些trick。 bit,且没有浮点数的操作 一些细节:1、mapping scheme采用均匀分布的量化策略,且是非对称量化,就是有zero-point。 都进行量化。 5、对齐zero-point:zero-point主要用于zero-padding 6、上采样和element-wise的操作(针对FPN):上采样都采用最近插值( nearest interpolation Int4量化与全精度对比 ? 消融实验 ? FreezeBN与不同bit的对比 ? 截断激活函数阈值的百分比 ? 与其他量化方法的对比图
各位读者朋友大家好,浪了半个多月之后我终于又开始了我的随笔了,感谢大家的关注。我们言归正传,上次说了通货膨胀,这次我们来说说货币的形式。
模型量化大揭秘:INT8、INT4量化对推理速度和精度的影响测试 Hello,我是摘星! 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 本文将基于我在多个实际项目中的量化实践经验,深入剖析INT8和INT4量化技术的原理、实现方法和性能表现。 INT4量化的极限压缩探索3.1 INT4量化的挑战与机遇INT4量化将模型压缩推向了极限,但也带来了更大的精度挑战:class INT4Quantizer: """INT4量化器 - 实现4位量化 INT4量化中的关键技术,通过将权重分成小组并为每组计算独立的量化参数,可以显著提高量化精度。 量化优化关键词标签#模型量化 #INT8量化 #INT4量化 #推理优化 #AI部署
在Lucene中引入Int4量化 在我们之前的博客中,我们详细介绍了Lucene中标量量化的实现。我们还探讨了两种特定的量化优化。 现在,我们来探讨这个问题:在Lucene中,int4 量化是如何工作的,以及它是如何对齐的? 存储和评分量化向量 Lucene将所有向量存储在一个平面文件中,使得可以根据某个序号检索每个向量。 你可以在我们的之前的标量量化博客中阅读这方面的简要概述。 现在,int4为我们提供了比之前更多的压缩选项。它将量化空间减少到只有16个可能的值(0到15)。 网格搜索找到的分位数是量化得分误差与先前计算的真实10个最近邻的决定系数最大化的。 图3:Lucene搜索置信区间空间,并测试int4量化的各种桶。 Int4给了你调整设置以适应你的用例的机会。 图6:CohereV3 500k向量的速度比较。 结束了吗?
zero_point=6的意思是:原始数据的 0℃,对应量化整数的 6。 = 6(对应整数 6);当温度是30℃时:量化值 = round((30 - (-20))/3.33) + 0 = 15(刚好对应整数 15)。 zero_point) * scale = (14 - 6)*3.33 = 26.64和原始值 25的误差达1.64, 这就是 INT4 量化需要分组校准的原因,缩小每组的原始数据范围,让 scale 图4:256色图像(平滑自然)图5:16色图像(明显像素化)图6:量化误差分析 计算并比较INT8和INT4的量化误差,显示INT4平均误差显著高于INT8,误差分布直方图量化展示差异核心要点:1. INT4 量化实现INT4 量化必须搭配分组校准和双重量化策略,否则精度损失会很大。# 1.
细节保留较好低利用率(如仅用到5-6个值):表明量化区间设置不合理,大量数值空置,精度损失大优化目标:通过调整量化参数,让权重的实际分布尽可能填满可用整数范围,最大化信息保留。 这是 INT4 量化从不可用到可用的基石。 逐组量化: 组 1:Min=-0.5,Max=1.2,Range=1.7,量化后 INT4 值为 [15, 11, 0];组 2:Min=-9.8,Max=10.5,Range=20.3,量化后 INT4 ,是当前实际应用 INT4 量化的首选。 INT4 量化的最优选型。
参数量与算力匹配度显存容量直接决定可加载模型的参数量上限,是选型的首要前提,8G显存设备需严格控制参数量:6B及以下参数量模型可通过INT4量化稳定加载;7B参数量模型需依赖INT4量化且显存占用接近上限 选型过程2.1 初筛候选底座结合8G显存与中文生成需求,初筛3个底座:ChatGLM-6B(INT4量化)、Qwen-7B(INT4量化)、TinyLlama-7B。 2.2 必满足项筛选候选底座任务匹配算力匹配生态与许可结果ChatGLM-6B(INT4)达标(text-generation、中文优化、电商案例)达标(6B参数量、INT4量化、支持LoRA)达标(星标 分 结论:8G显存场景下,ChatGLM-6B(INT4量化版)综合适配性更优,兼顾显存、速度与效果。 案例结论8G显存+中文电商文案生成场景下:ChatGLM-6B(INT4量化版)为最优底座,兼顾显存适配性、生成效率与任务效果;Qwen-7B(INT4量化版)可作为备选,仅当需要长文本生成(超过2048
将参数x0从0到1,并将位数从2改为6。 在表1和表2中收集了获得的结果,并在图3和图4中显示了它们。 ? ? ? ? ? 在上图中,给出了神经网络离散化的过程。 应特别注意倒数第二排。 通常这些网络需要在量化后进行重新训练,而我们找到了避免重新训练的方法。」 简化人工神经网络背后的主要思想是所谓的权重量化,即减少每个权重的位数。 训练之后,该网络会使用新方法进行量化,并且不进行重新训练。然后,该研究将实验结果与其他量化算法进行了比较。 RUDN 大学的 Iakov Karandashev 补充说道:「量化之后,分类准确率仅降低了 1%,但是所需的存储容量减少了 6 倍。 实验表明,由于初始权重与量化后权重之间的相关性很强,该网络不需要重新训练。这种方法有助于在完成时间敏感任务或在移动设备上运行任务时节省资源。」 © THE END
量化适配原则:INT4量化虽降低算力需求,但部分老显卡(如RTX 30系列)对INT4优化不足,加速效果有限,优先选RTX 40系列及以上。4. 量化模型 量化的核心是匹配显卡精度支持能力:RTX 40系列及以上支持INT4硬件加速,A100支持FP8精度,老显卡仅支持INT8软件量化(加速效果有限)。 INT4优化,算力需求再减半,速度再提升50%,效果损耗8%-12%,适合对话、文本生成等低精度场景,需搭配NF4量化格式降低损耗。 INT4量化 print("测试INT4量化...") 实战选型与优化核心:个人用户:优先选RTX 4090,用INT8/INT4量化优化算力,兼顾效果与速度;高端需求:等待RTX 5090,32GB大显存+高算力,单卡搞定70B INT4模型,简化部署;企业用户
,INT4、INT8量化的llama https://github.com/tpoisonooo/llama.onnx.git 以ONNX的方式运行llama 量化和精度 对于消费级显卡,直接FP32肯定放不下 ,一般最基本的是FP16(llama的7B,FP16需要14G的显存,大多数的消费级显卡已经说拜拜了),而INT8和INT4量化则就很有用了,举几个例子: 对于3080显卡,10G显存,那么13B的INT4 就很有性价比,精度比7B-FP16要高很多 对于3090显卡,24G显存,那么30B的INT4可以在单个3090显卡部署,精度更高 可以看下图,列举了目前多种开源预训练模型在各种数据集上的分数和量化精度的关系 大概的结论: FP16速度最快,因为INT4和INT8的量化没有优化好(理论上INT8和INT4比FP16要快不少),而INT4的triton优化明显比huggingface中INT8的实现要好,建议使用 量化起来也不容易,QAT代价太大,PTQ校准的时候也需要很大的内存和显存,会用INT8和INT4量化 网上对于这类模型的加速kernel不是很多,可以参考的较少,很多需要自己手写 服务方式的区别 对于小模型来说
结合前向和反向传播的量化技术,本文提出一种算法,即对 Transformer 中的所有线性运算使用 INT4 MMs。 并且研究提出的原型量化 + INT4 MM 算子比 FP16 MM 基线快了 2.2 倍,将训练速度提高了 35.1%。 学得的步长量化 加速训练必须使用整数运算来计算前向传播。因此,研究者利用了学得的步长量化器(LSQ)。作为一种静态量化方法,LSQ 的量化规模不依赖于输入,因此比动态量化方法成本更低。 相较之下,动态量化方法需要在每次迭代时动态地计算量化规模。 给定一个 FP 矩阵 X,LSQ 通过如下公式 (2) 将 X 量化为整数。 他们改变了隐藏层大小、中间全连接层大小和批大小,并在下图 5 中绘制了 INT4 训练的加速比。
量化ROI提升:FP8和INT4量化技术在推理中的投资回报率(ROI)已达到1:5以上,成为降低成本的关键手段。 4.2 量化技术的ROI对比 量化技术 实施成本 成本降低 ROI 适用场景 FP8 低 50% 1:5 平衡质量和成本 INT8 中 75% 1:6 对延迟敏感 INT4 高 87.5% 1:8 大规模推理 从表格中可以看出,INT4量化技术的ROI最高,达到了1:8,是降低推理成本的最有效手段。 监控复杂性:动态批处理和量化技术增加了系统监控的复杂性,需要专门的监控工具和指标。 6. 未来趋势展望与个人前瞻性预测 6.1 推理成本优化的未来趋势 更高效的量化技术:未来将出现精度损失更小、性能提升更大的量化技术,如FP6、INT2等。
基于量化感知训练的 Gemma 3 在 AI 模型中,研究者可以使用更少的位数例如 8 位(int8)甚至 4 位(int4)进行数据存储。 采用 int4 量化意味着每个数值仅用 4 bit 表示 —— 相比 BF16 格式,数据大小缩减至 1/4。 但是,这种量化方式通常会导致模型性能下降。 那谷歌是如何保持模型质量的? 与传统在模型训练完成后才进行量化的方式不同,QAT 将量化过程直接融入训练阶段 —— 通过在训练中模拟低精度运算,使模型在后续被量化为更小、更快的版本时,仍能保持准确率损失最小化。 6.6 GB(int4) Gemma 3 4B:从 8 GB(BF16)精简至 2.6 GB(int4) Gemma 3 1B:从 2 GB(BF16)降至仅 0.5 GB(int4) 此图仅表示加载模型权重所需的 来自 Two Minute Papers 频道的玩笑 官方 int4 和 Q4_0 非量化 QAT 模型已在 Hugging Face 和 Kaggle 上线。
常规显卡核心参数显卡型号显存容量显存带宽功耗定位RTX 407012GB GDDR6X504 GB/s285W消费级中端RTX 409024GB GDDR6X1008 GB/s450W消费级旗舰RTX ×2×1.3≈33.8GB)显存不足,INT8量化(总占用≈16.9GB)流畅运行,速度8-12字/秒,适合复杂任务(如数据分析、多轮对话);- 70B模型:INT4量化(总占用≈45.5GB),需2张 - 7B/13B模型:FP16精度无压力,7B速度可达15-20字/秒,13B速度12-15字/秒,支持高并发推理;- 70B模型:INT8量化(总占用≈91GB)需3张分片,INT4量化(总占用≈45.5GB 运行后状态print_mem_gpu_status("模型运行完成")# 6. 、70B INT4,简化部署复杂度;部署技巧:优先用INT8/INT4量化控制显存,通过device_map="auto"自动适配显存,避免手动分片的繁琐。
虽然向量本身存储为单比特值,但查询仅量化到 int4。这显著提高了搜索质量,同时不会增加存储成本。按位操作实现快速搜索。查询向量被量化并转换为允许高效按位操作的方式。 -0.03]bin(vc1') = {1 if x > 0 else 0 for x in vc1'}bin(vc1') = [0, 1, 1, 0, 0, 0, 0, 0]0b00000110 = 6当量化到比特级别时 一旦有了邻居,多样性和反向链接评分可以使用先前的 int4 量化值完成。合并完成后,临时文件会被删除,只保留比特量化向量。 因此,文档值被比特量化,查询向量被量化为 int4。更有趣的是这些量化向量如何转换以实现快速查询。以我们上面的示例向量为例,我们可以将其量化为围绕质心的 int4。 以下是示例的简化 Java 代码:byte[] bits = new byte[]{6};byte[] queryBits = new byte[]{202, 14, 26, 199};int sum
结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存)。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。 为了方便下游开发者针对自己的应用场景定制模型,我们同时实现了基于 P-Tuning v2 的高效参数微调方法 (使用指南) ,INT4 量化级别下最低只需 7GB 显存即可启动微调。 ChatGLM-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用。 此外,如果需要在 cpu 上运行量化后的模型,还需要安装 gcc 与 openmp。多数 Linux 发行版默认已安装。对于 Windows ,可在安装 TDM-GCC 时勾选 openmp。 我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
FP16/INT8/INT4 在huggingface上去查看模型时,会看到一些带有fp16、int8、int4 后缀的模型,比如Llama-2-7B-fp16、chatglm-6b-int8、chatglm2 -6b-int4,其实这些模型就是量化后的模型,fp16表示模型的量化精度。 在二进制中一个“0”或者“1”为一bit,INT8则意味着用8bit来表示一个数字 int4占用4个字节(32位) 量化精度从高到低排列顺序是:fp16>int8>int4,量化的精度越低,模型的大小和推理所需的显存就越小 GGML是一个C写的库,可以将LLM转为为GGML格式,通过量化等技术让LLM方便进行加载和推理 采用量化技术,将原有大模型预训练结果量化(即将原有大模型FP16精度压缩成INT8、INT6精度 二进制文件编码 以Llama-2-13B-chat为例,该模型全精度版本的大小为 26G,使用 GPTQ 进行量化成 INT4 精度后的模型大小为 7.26G。
个人开发者1.1 低成本场景:用技巧换算力量化优化:采用INT4量化(NF4格式),搭配BitsAndBytes库,将13B模型显存占用从40GB降至10GB以内;模型裁剪:裁剪注意力头从16个至12个 适配方案:量化+蒸馏+轻量化架构深度量化:采用INT4量化+模型蒸馏,将7B模型蒸馏为3B轻量化版本,算力需求降低60%,功耗控制在15W以内;架构适配:选用MobileLLM等边缘优化模型,替换原生Transformer 迭代优化:未达标则重新诊断,达标后进一步微调6. 2.2 量化优化工具2.2.1 BitsAndBytes:“开箱即用”的轻量量化利器核心能力: 提供 INT8 和 INT4 量化,特别适合在消费级 GPU(如 RTX 30/40 系列)上快速运行大模型 2.2.2 GPTQ:“高精度+加速”兼顾的量化方案核心能力: 对模型进行逐层权重量化 + 误差补偿训练,实现 INT4 精度接近 FP16 效果,同时通过定制 CUDA kernel 加速推理。
这种格式的原生数值范围约为-6到+6,在没有额外缩放机制的情况下,这一范围显然无法满足LLM的数值需求。 虽然相比标准INT4量化模型(通常采用128的块大小)略高,但与FP16相比仍实现了3.5倍的内存占用减少,相比FP8约节省1.8倍存储空间。 传统INT4量化在推理过程中无法直接处理4位数值,必须先将INT4权重反量化为16位数值才能进行计算,这一额外步骤虽然在SGLang和vLLM等现代推理框架中已经高度优化,但仍然产生计算开销并限制了整体速度 无需反量化操作,所有NVFP4运算均享受硬件加速,计算效率显著提升。实测结果表明,NVFP4模型的推理吞吐量超越了INT4模型,而后者本身已经比标准16位模型快很多。 测试结果还证实了激活量化对保持速度优势的关键作用——仅量化权重的NVFP4A16模型速度提升有限,仅略快于INT4模型。
值得注意的是,INT4数据类型提供的表示范围仅是INT8的 1/16 。由于矩阵乘法是在激活和权重都量化到INT4之后进行的,即使是轻微的量化错误也可能产生重大影响。 因此,在使用INT4时,必须达到高水平的量化精度。 作者的主要目标是使特定的线性层能够实现4位量化,这需要评估每个层分配给4位精度的适宜性。 作者基于CUTLASS INT8和INT4 GEMM Kernel 实现了量化线性层和批量矩阵乘法(BMM)函数,用于INT8和INT4。 表6展示了GPU内存消耗的情况。值得注意的是,尽管对于大批量大小和长序列的推理过程可能会因为键值缓存而消耗大量内存,但这一特定组件并未包含在作者的实验中。 6 Conclusion and Future Work 作者提出了FlattenQuant,这是一种针对大型语言模型在计算受限场景下的逐张量后训练量化目标,它可以在多达48.29%的线性层量化为INT4