Int 4量化用于目标检测 【GiantPandaCV】文章2019 CVPR,讲的是Int 4量化用于目标检测,主要是工程化的一些trick。 感受:这篇文章主要是做了实践工作,可以看作是低bit量化(Int 4)用于目标检测的一些trick。 的Int算法即Int-4。 并且让activation在[,] (0 < < 1) 内,文章设置n=20,=0.999. 4、折叠bn。 Int4量化与全精度对比 ? 消融实验 ? FreezeBN与不同bit的对比 ? 截断激活函数阈值的百分比 ? 与其他量化方法的对比图
模型量化大揭秘:INT8、INT4量化对推理速度和精度的影响测试 Hello,我是摘星! 在彩虹般绚烂的技术栈中,我是那个永不停歇的色彩收集者。 本文将基于我在多个实际项目中的量化实践经验,深入剖析INT8和INT4量化技术的原理、实现方法和性能表现。 INT4量化的极限压缩探索3.1 INT4量化的挑战与机遇INT4量化将模型压缩推向了极限,但也带来了更大的精度挑战:class INT4Quantizer: """INT4量化器 - 实现4位量化 INT4量化中的关键技术,通过将权重分成小组并为每组计算独立的量化参数,可以显著提高量化精度。 量化优化关键词标签#模型量化 #INT8量化 #INT4量化 #推理优化 #AI部署
在Lucene中引入Int4量化 在我们之前的博客中,我们详细介绍了Lucene中标量量化的实现。我们还探讨了两种特定的量化优化。 你可以在我们的之前的标量量化博客中阅读这方面的简要概述。 现在,int4为我们提供了比之前更多的压缩选项。它将量化空间减少到只有16个可能的值(0到15)。 总的来说,存储带有位压缩的int4比float32小8倍。 图1:这展示了int4所需的字节减少,当压缩时,相比float32可以减少8倍的大小。 int4在评分延迟方面也有一些优点。 网格搜索找到的分位数是量化得分误差与先前计算的真实10个最近邻的决定系数最大化的。 图3:Lucene搜索置信区间空间,并测试int4量化的各种桶。 图4:这是为CohereV3样本集找到的最佳int4量化桶。 对于优化过程和此优化背后的数学的更完整解释,请参见优化截断间隔。
PG:INT4 VS. FLOAT4 VS. NUMERIC 关系型数据库中数据类型是一个重要话题。PG提供很多不同类型,但并不是所有类型都相同。根据需要实现的目标,可能应用需要不同列类型。 Numeric 虽然整型数据类型用处非常清楚但是numeric和float4/foat8之间有一个重要区别。在内部,float使用CPU的浮点单元。 ; avg --------------------- 499977.020028900000 (1 row) Time: 255.179 ms 整数类型很快,执行时间大约255毫秒,对于float4也是如此 原文 https://www.cybertec-postgresql.com/en/postgresql-int4-vs-float4-vs-numeric/
在众多量化方案中,INT4 和 INT8 是应用最广泛的两种低比特量化技术。INT8 以“精度稳定、生态成熟”著称,INT4 则凭借“极致压缩、速度领先”成为边缘设备和消费级硬件的首选。 图4:256色图像(平滑自然)图5:16色图像(明显像素化)图6:量化误差分析 计算并比较INT8和INT4的量化误差,显示INT4平均误差显著高于INT8,误差分布直方图量化展示差异核心要点:1. INT4的量化误差是INT8的15-20倍,但存储节省75%三、INT4 与 INT8 量化选型选择哪种量化方案,核心取决于硬件条件和任务精度要求,以下是具体的决策逻辑:1. INT4 量化实现INT4 量化必须搭配分组校准和双重量化策略,否则精度损失会很大。# 1. ,比普通 INT4 量化精度更高。
货币——也就是我们俗称的“钱”是世界上最可爱的东西之一,可以说没有它的刺激,也就没有我们现在这么繁荣的市场,也没有这么丰富的各类物质产品和幸福生活。
本小节主要介绍使用向量化的方式提升性能。 简单线性回归 先来回归一下简单线性回归优化目标以及通过最小二乘的方式求得的参数a,b的解析解。 ? 在上一个小节中,我们是通过循环的方式来求解分子和分母,前面也说过,使用for循环的这种方式,性能相对是比较低的,如果有办法将for循环的计算变成向量之间的计算的话,得益于numpy模块性能就会大大的提升,这就是向量化运算含义 上面我们将对应元素相乘然后相加的操作看成是向量之间的点乘,这也是为什么在最小二乘求解a的解析解的时候要把式子写成相乘累加的形式,这样就可以将其转换成向量之间的运算,进行向量化运算提升性能。 使用向量化运算实现线性回归算法 前面使用sklearn的思想封装了一个名为"SimpleLinearRegression1"的类,在类中使用for循环的方式来求解参数a的值。 ? ? ? ? 实现向量化的代码只需将for循环部分改成向量点乘即可: ? ? ? ? 为了比较两者的性能,将两种方式导入jupyter中,通过魔法命令来验证性能。 ? ? ? ?
这是 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 量化的首选。 } → {bal:.4f} → INT4={int4} → {deq:.4f}")print()print("分组2反量化:")for i, (orig, bal, int4, deq) in enumerate INT4 量化的最优选型。
Sun 等人成功训练了几个具有 INT4 激活 / 权重和 FP4 梯度的当代网络;Chmiel 等人提出自定义的 4 位对数数字格式,进一步提高了精度。 结合前向和反向传播的量化技术,本文提出一种算法,即对 Transformer 中的所有线性运算使用 INT4 MMs。 并且研究提出的原型量化 + INT4 MM 算子比 FP16 MM 基线快了 2.2 倍,将训练速度提高了 35.1%。 此外,大行无法用 INT4 准确地表示。 为利用这种稀疏性,研究者提出 bit 拆分,将每个 token 的梯度拆分为更高的 4bits 和更低的 4bits。 他们改变了隐藏层大小、中间全连接层大小和批大小,并在下图 5 中绘制了 INT4 训练的加速比。
基于量化感知训练的 Gemma 3 在 AI 模型中,研究者可以使用更少的位数例如 8 位(int8)甚至 4 位(int4)进行数据存储。 采用 int4 量化意味着每个数值仅用 4 bit 表示 —— 相比 BF16 格式,数据大小缩减至 1/4。 但是,这种量化方式通常会导致模型性能下降。 那谷歌是如何保持模型质量的? 具体实现上,谷歌基于未量化的 checkpoint 概率分布作为目标,进行了约 5,000 步的 QAT 训练。当量化至 Q4_0(一种常见的量化格式) 时,困惑度下降了 54%。 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 上线。
大家应该都知道,Python的一个应用方向就是——量化交易,恰好最近收到了清华出版社赠送的 《深入浅出Python量化交易实战》 一书,因为平时对数据科学和机器学习都比较感兴趣,简单试读了一下,今天文末也会送出几本 2021年11月1日后用户将无法从中国大陆使用 Yahoo 的产品与服务) yfinance 另外,yfinance也有类似的功能,使用方法也很简单 Tushare 当然,说到用 Python 进行量化交易 JoinQuant 最后一种方法来获取数据就是用现成的量化平台。这里我用joinquant实验了一下 可以看到,通过平台获取数据,还是比较简单的。 http://mpvideo.qpic.cn/0bc3lqaaaaaaoyaj25qpmbrfaxgdaboaaaaa.f10002.mp4? dis_k=4e6da654e1bbc5d6818c55e3835d64ea&dis_t=1649751382&vid=wxv_2274959819105320960&format_id=10002&support_redirect
Ai 学习的老章 最近除了阿里 Qwen3 模型更新了图片生成和处理能力,大家都可以玩转吉卜力风格 还有几个最近发布的大模型值得关注 1 是腾讯开源了 80B 混元 A13B 模型,亮点是精度无损的 int4 Agent 3是Hunyuan-A13B-Instruct-GPTQ-Int4 量化模型与 Instruct 差别极小,几乎是精度无损! Gsm8k 94.39 94.24 BBH 89.1 87.91 DROP 91.1 91.05 这样的话,本地部署,完全可以直接使用 int4 版本了 完整版本模型文件 160GB,int 只有不到 / int4 版部署 # 下载模型: # ModelScope: modelscope download --model Tencent-Hunyuan/Hunyuan-A13B-Instruct-GPTQ-Int4 模型架构:基于 Qwen3 架构,参数量为 4.02B,支持多种量化格式(3-bit 到 8-bit),适配不同硬件需求。
新智元报道 编辑:Aeneas 润 【新智元导读】清华朱军团队提出的INT4算法,解决了超低INT精度训练的挑战。LLM训练效率要起飞了! 将激活、权重和梯度量化为4位,有望加速神经网络训练。 使用超低INT4精度进行训练,是非常具有挑战性的。为了实现这一目标,研究者仔细分析了Transformer中激活和梯度的具体结构,为它们提出专用的量化器。 这种原型量化+INT4 MM算子实现,速度比FP16MM基线快2.2倍,并且将训练速度提高了35.1%。 因此,结果不能完全反映INT4训练算法的潜力。 完全优化的实施需要大量工程,超出了我们论文的讨论范围。 结论 研究人员提出了一种对硬件很友好的Transformer INT4的训练方法。 通过分析Transformer中MM的属性,研究人员提出了HQ和LSS方法来量化激活和梯度,同时保持准确性。 在几个重要任务上,我们的方法与现有的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)达标(星标 两者都支持INT4量化,适合8G显存环境 QUANT_CONFIG:INT4量化配置load_in_4bit=True:启用4位整数量化,显存占用减少约75%bnb_4bit_use_double_quant 案例结论8G显存+中文电商文案生成场景下:ChatGLM-6B(INT4量化版)为最优底座,兼顾显存适配性、生成效率与任务效果;Qwen-7B(INT4量化版)可作为备选,仅当需要长文本生成(超过2048
,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不是很多,可以参考的较少,很多需要自己手写 服务方式的区别 对于小模型来说
为了克服上述缺点,SageAttention2 提出将 Q, K 量化至 INT4,并将 P, V 量化至 FP8 来加速 Attention。然而,这样做的挑战是很大的。 经过仔细分析后,研究团队发现主要是两个原因导致了量化注意力的不准确: (1)INT4 的数值范围相比 INT8 非常小,导致其量化误差在 Q,K 矩阵中出现一些异常值时会变得十分明显,恰好大多模型都在 这使得相比直接量化 Q, K 至 INT4 的准确度有质的改变,如下表展示了对比了该方法和直接量化 Q, K 至 INT4 在 Cogvideo 和 Llama3.1 上的端到端表现。 矩阵 Q 平滑前后的数据分布可视化的结果如下,可以发现平滑后的 Q 对 INT4 数据范围的利用度更高: (2)对 Q, K 进行 Per-thread 量化。 下图展示了 SageAttention2 的算法流程: SageAttention2 共实现了两种 Kernel,区别在于对 Q, K 进行 INT4 量化还是 INT8 量化: 此外,SageAttention2
消融实验 图4显示了700M BitNet a4.8的训练损耗曲线,比较了使用完整的INT4/FP4量化,以及本文的混合量化和稀疏化。 完整的INT4量化会导致发散,而混合架构在训练困惑度方面明显优于完整的FP4架构。 使用RedPajama数据集中25B token,来进行模型的第一阶段训练,采用absmean和MinMax量化器分别进行完整的INT4和FP4量化。 对于完整的INT4量化,由于其输入具有更大的异常值,这里设置β = 2*mean(|X|)。 此外,对down projection的输入应用FP4量化会导致性能显著下降,而将INT4激活与STE一起使用会导致发散。
量化适配原则: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模型,简化部署;企业用户
trust_remote_code=True).cuda() model.generation_config = GenerationConfig.from_pretrained(model_path) # 使用 INT8、INT4 进行量化推理 # model = model.quantize(8).cuda() model = model.quantize(4).cuda() model = model.eval() print # 添加回答到历史 history.append({"role": "assistant", "content": response}) XVERSE-7B 默认是支持 INT8 和 INT4 只需要在 model = model.eval() 前面添加 model = model.quantize(4).cuda() 即可。 4指的是 INT4 量化,同理8则表示 INT8 量化。 INT4 量化推理的运行效果如下:
个人开发者1.1 低成本场景:用技巧换算力量化优化:采用INT4量化(NF4格式),搭配BitsAndBytes库,将13B模型显存占用从40GB降至10GB以内;模型裁剪:裁剪注意力头从16个至12个 torch# 适配16GB显存,开启INT4量化与显存优化bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type 适配方案:量化+蒸馏+轻量化架构深度量化:采用INT4量化+模型蒸馏,将7B模型蒸馏为3B轻量化版本,算力需求降低60%,功耗控制在15W以内;架构适配:选用MobileLLM等边缘优化模型,替换原生Transformer 2.2 量化优化工具2.2.1 BitsAndBytes:“开箱即用”的轻量量化利器核心能力: 提供 INT8 和 INT4 量化,特别适合在消费级 GPU(如 RTX 30/40 系列)上快速运行大模型 2.2.2 GPTQ:“高精度+加速”兼顾的量化方案核心能力: 对模型进行逐层权重量化 + 误差补偿训练,实现 INT4 精度接近 FP16 效果,同时通过定制 CUDA kernel 加速推理。