3、不同通道的模型的权值会有不同的值域,因此直接layer-wise的bn会不准确。 2、用小的训练数据集去调整(activation)激活函数的阈值(要clip的阈值),用百分比的方法丢弃离群值和截断量化的激活函数值和梯度。3、对所有的参数,采用channel-wise的量化。 量化神经网络的过程:1、全精度训练 2、quantization-aware finetune(只在前向传播) 3、fully-quantized inference,这里要fold BN,激活函数和模型参数都要量化到低 2、weight quantization:采用channel-wise的方式 3、激活函数值的量化:量化所有的activation,从input,到送进anchor回归和NMS的最后的activation Int4量化与全精度对比 ? 消融实验 ? FreezeBN与不同bit的对比 ? 截断激活函数阈值的百分比 ? 与其他量化方法的对比图
在我过去两年的实践中,我系统性地测试了INT8和INT4量化技术在不同模型架构上的表现,发现量化技术不仅能够将模型大小压缩2-4倍,还能在特定硬件上实现1.5-3倍的推理速度提升。然而,量化并非银弹。 3. INT4量化的极限压缩探索3.1 INT4量化的挑战与机遇INT4量化将模型压缩推向了极限,但也带来了更大的精度挑战:class INT4Quantizer: """INT4量化器 - 实现4位量化 而INT4量化虽然在精度保持方面面临更大挑战,但其8倍的压缩比和2-3倍的速度提升使其在资源受限场景下具有重要价值。 量化优化关键词标签#模型量化 #INT8量化 #INT4量化 #推理优化 #AI部署
上次咱们聊了聊市场催生的根本原因,是由于人们为了降低交易的成本而“发明”出来并一直保留至今的。在几千年的过程中,随着运输技术和信息技术的不断发展,市场正在以更快速的方式为我们提供者信息的交互能力,也就最大程度地降低了交互的成本。
图3:CohereV3维度值量化为int7值。那些在末尾的尖峰是什么?那是在量化过程中截断极值的结果。 但是,我们把一些好的优化放在了地板上。 网格搜索找到的分位数是量化得分误差与先前计算的真实10个最近邻的决定系数最大化的。 图3:Lucene搜索置信区间空间,并测试int4量化的各种桶。 图4:这是为CohereV3样本集找到的最佳int4量化桶。 对于优化过程和此优化背后的数学的更完整解释,请参见优化截断间隔。 量化的速度与大小 正如我之前提到的,int4在性能和空间之间提供了一个有趣的权衡。为了让这一点更加明确,这里有一些CohereV3 500k向量的内存需求。 图5:CohereV3 500k向量的内存需求。 当然,我们在常规的标量量化中看到了典型的4倍减少,但然后int4额外的2倍减少。将所需内存从2GB降低到不到300MB。记住,这是在启用压缩的情况下。
3. ;是“原始值和量化值的换算比例”,量化比特数越少(INT4),scale 越大,单刻度对应的原始值范围越宽,误差越大;3. zero_point 的核心:是“原始值 0 在量化刻度上的对应点”,解决原始数据和量化范围 (INT4)图3:数值范围对比 绘制数轴展示离散值密度差异,标注相邻值间隔:INT8为0.031,INT4为0.5突出INT4值间距是INT8的16倍图4-5:图像质量对比,直观展示不同量化级别的视觉差异 INT4仅有16个离散值(类似16色图像),有明显色块3. 精度与速度对比 INT8 输出内容和原始模型几乎无差异,推理速度是 FP32 的 3~4 倍;INT4 输出内容在复杂推理场景下略逊于 INT8,但速度是 INT8 的 1.5~2 倍。3.
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。 今天是3月15日,公众号为全网Quant带来一期特别策划内容——量化圈的那些割韭菜的人和事。 希望大家以后避免踩雷! 『假』 大师 这一趴真的不想给很多人蹭热度! 总结下来就是:太多了! 『假』 培训 随着量化投资的普及,培训市场也是闻风而动,四面开花。朋友圈时不时的出现这样的分享及广告:9.9元Python量化入门到精通,9.9元人工智能量化培训,9.9元量化实战送100套策略。 入门; 3、借人工智能的幌子:讲一讲几个Python的机器学习工具包,就说自己是人工智能量化培训; 4、以数字币为标的:介绍一下个交易所的API接口,无意间给学员植入数字币量化致富的概念。 『假』 书籍 市面上的量化书籍太多了,太乱了,太无耻了...... 打开京东搜索“量化”,乱七八糟扑面而来!有种向地摊文学靠拢的迹象。
量化:按公式计算每个权重的 INT4 值,结果为 [8, 8, 7, 15, 0];3. =====fig2, ax2 = plt.subplots(figsize=(10, 3))fig2.suptitle('INT4 量化 - 全局 Min-Max 量化与反量化', fontsize= (10, 6))fig3.suptitle('INT4 量化 - 全局 Min-Max 量化误差分析', fontsize=16, fontweight='bold')bars3 = ax3.bar(range _indices] = g2_int4print(f"完整INT4量化值: {int4_vals.tolist()}")print()# 步骤3: 反量化print("步骤3: 反量化(分组)")print = 1.7000 INT4量化值: [15 0] 完整INT4量化值: [15, 11, 0, 15, 0] 步骤3: 反量化(分组) ------------------------------
基于量化感知训练的 Gemma 3 在 AI 模型中,研究者可以使用更少的位数例如 8 位(int8)甚至 4 位(int4)进行数据存储。 采用 int4 量化意味着每个数值仅用 4 bit 表示 —— 相比 BF16 格式,数据大小缩减至 1/4。 但是,这种量化方式通常会导致模型性能下降。 那谷歌是如何保持模型质量的? 这样带来的好处之一是加载模型权重所需的 VRAM 大幅减少: Gemma 3 27B:从 54 GB(BF16)降至仅 14.1 GB(int4) Gemma 3 12B:从 24 GB(BF16)缩减至仅 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 上线。
结合前向和反向传播的量化技术,本文提出一种算法,即对 Transformer 中的所有线性运算使用 INT4 MMs。 并且研究提出的原型量化 + INT4 MM 算子比 FP16 MM 基线快了 2.2 倍,将训练速度提高了 35.1%。 反向传播 研究者使用 INT4 运算来加速线性层的反向传播。公式 (3) 中定义的线性算子 HQ-MM 具有四个输入,分别是激活 X、权重 W 以及步长 s_X 和 s_W。 为了研究不同量化器对前向传播的有效性,他们将反向传播设置为 FP16。结果如下图 3 (a) 所示。 结果如下图 3 (b) 所示,虽然位宽高于 2,但 LSS 取得的结果与 LUQ 相当,甚至略高于后者。
该工作首次将 LLM 模型的激活量化推向 3 比特。激活值的 3 比特量化同时也能与权重的 3 比特量化共同使用,大幅度降低了大型欲言模型的开销。 最近,GPTQ 使用 PTQ 成功地将 LLMs 的权重量化为 4 bit 或 3 bit。然而,对 LLMs 中的激活进行量化仍然是一项具有挑战性的任务。 图 3:一重排权重和激活的量化 Transformer 层的推断过程失意图。重排索引用符号 R1 到 R5 表示。 如图 3 所示,作者重新排序线性层的权重,使它们能够直接按照排序顺序产生激活。此外,作者修改了 LayerNorm 的方法,使其能够直接产生重新排序的激活,从而省去了在推理过程中进行显式通道调整。 此外,作者还开发了一种新的量化方案,W4A4KV、W4A3KV 和 W3A3KV,只对主要内存的消耗 —— 键缓存和值缓存(Key/Value Cache)进行量化。
参数量与算力匹配度显存容量直接决定可加载模型的参数量上限,是选型的首要前提,8G显存设备需严格控制参数量:6B及以下参数量模型可通过INT4量化稳定加载;7B参数量模型需依赖INT4量化且显存占用接近上限 初筛候选底座:结合生态成熟度、参数量、中文支持度,筛选出ChatGLM-6B(量化版)、Qwen-7B(量化版)、TinyLlama-7B 3个候选底座。3. 选型过程2.1 初筛候选底座结合8G显存与中文生成需求,初筛3个底座:ChatGLM-6B(INT4量化)、Qwen-7B(INT4量化)、TinyLlama-7B。 -7B不达标(无中文优化,原生生成效果差)达标(INT4量化、8G显存可加载)达标(社区活跃、非商用免费)排除3. 两者都支持INT4量化,适合8G显存环境 QUANT_CONFIG:INT4量化配置load_in_4bit=True:启用4位整数量化,显存占用减少约75%bnb_4bit_use_double_quant
为了克服上述缺点,SageAttention2 提出将 Q, K 量化至 INT4,并将 P, V 量化至 FP8 来加速 Attention。然而,这样做的挑战是很大的。 经过仔细分析后,研究团队发现主要是两个原因导致了量化注意力的不准确: (1)INT4 的数值范围相比 INT8 非常小,导致其量化误差在 Q,K 矩阵中出现一些异常值时会变得十分明显,恰好大多模型都在 这使得相比直接量化 Q, K 至 INT4 的准确度有质的改变,如下表展示了对比了该方法和直接量化 Q, K 至 INT4 在 Cogvideo 和 Llama3.1 上的端到端表现。 (4)针对 P 和 V,研究团队对比了多种量化的数据类型,对比发现使用 E4M3 数据格式的 FP8 精度最准确,基本接近了 FP16 的准确度。因此采用将 P 和 V 量化至 E4M3。 下图展示了 SageAttention2 的算法流程: SageAttention2 共实现了两种 Kernel,区别在于对 Q, K 进行 INT4 量化还是 INT8 量化: 此外,SageAttention2
表3显示了BitNet a4.8在3B和7B模型大小下,low-bit attention的详细情况。模型使用4位KV或QKV头,精度损失可忽略不计,同时KV cache可以量化为3位整数。 消融实验 图4显示了700M BitNet a4.8的训练损耗曲线,比较了使用完整的INT4/FP4量化,以及本文的混合量化和稀疏化。 完整的INT4量化会导致发散,而混合架构在训练困惑度方面明显优于完整的FP4架构。 使用RedPajama数据集中25B token,来进行模型的第一阶段训练,采用absmean和MinMax量化器分别进行完整的INT4和FP4量化。 对于完整的INT4量化,由于其输入具有更大的异常值,这里设置β = 2*mean(|X|)。
vue3了,试试轻量化的Vuex -- Pinia? 一, pinia介绍 Pinia 是 Vue.js 的轻量级状态管理库,最近很受欢迎。 它使用 Vue 3 中的新反应系统来构建一个直观且完全类型化的状态管理库。 Pinia的成功可以归功于其管理存储数据的独特功能(可扩展性、存储模块组织、状态变化分组、多存储创建等)。 ,安装使用Pinia 在项目根目录中打开终端,输入以下命令 yarn add pinia@next # or with npm npm install pinia@next // 该版本与Vue 3兼容 webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50 webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50
量化适配原则:INT4量化虽降低算力需求,但部分老显卡(如RTX 30系列)对INT4优化不足,加速效果有限,优先选RTX 40系列及以上。4. 进一步量化降精度:如从 INT8 降至 INT4,大幅降低算力与显存需求;2. 多卡分片推理:将模型拆分到多张 GPU 上并行计算(如双 RTX 4090 运行 70B 模型);3. 量化模型 量化的核心是匹配显卡精度支持能力:RTX 40系列及以上支持INT4硬件加速,A100支持FP8精度,老显卡仅支持INT8软件量化(加速效果有限)。 INT4优化,算力需求再减半,速度再提升50%,效果损耗8%-12%,适合对话、文本生成等低精度场景,需搭配NF4量化格式降低损耗。 INT4量化 print("测试INT4量化...")
一旦有了邻居,多样性和反向链接评分可以使用先前的 int4 量化值完成。合并完成后,临时文件会被删除,只保留比特量化向量。 临时文件将每个查询向量存储为 int4 字节数组,占用 dims/2 字节数,一些浮点误差校正值(欧几里得距离为 3 个,点积为 4 个),以及一个表示向量维度总和的短值。 因此,文档值被比特量化,查询向量被量化为 int4。更有趣的是这些量化向量如何转换以实现快速查询。以我们上面的示例向量为例,我们可以将其量化为围绕质心的 int4。 由于维度较少,BBQ 距离计算速度并没有比优化的 int4 快多少。CohereV3这是 1M 个 1024 维向量,使用 CohereV3 模型。 这里,1bit 量化和 HNSW 在仅 3 倍 oversampling 的情况下,召回率超过 90%。
PG:INT4 VS. FLOAT4 VS. NUMERIC 关系型数据库中数据类型是一个重要话题。PG提供很多不同类型,但并不是所有类型都相同。根据需要实现的目标,可能应用需要不同列类型。 毫秒,对于float4也是如此: test=# SELECT avg(b) FROM t_demo; avg ------------------- 499983.2076499941 (1 row) 3
,INT4、INT8量化的llama https://github.com/tpoisonooo/llama.onnx.git 以ONNX的方式运行llama 量化和精度 对于消费级显卡,直接FP32肯定放不下 ,一般最基本的是FP16(llama的7B,FP16需要14G的显存,大多数的消费级显卡已经说拜拜了),而INT8和INT4量化则就很有用了,举几个例子: 对于3080显卡,10G显存,那么13B的INT4 大概的结论: FP16速度最快,因为INT4和INT8的量化没有优化好(理论上INT8和INT4比FP16要快不少),而INT4的triton优化明显比huggingface中INT8的实现要好,建议使用 在我以往的任务中,都是处理CV相关的模型,检测、分类、识别、关键点啥的,最大模型可能也只有2、3G的样子。 量化起来也不容易,QAT代价太大,PTQ校准的时候也需要很大的内存和显存,会用INT8和INT4量化 网上对于这类模型的加速kernel不是很多,可以参考的较少,很多需要自己手写 服务方式的区别 对于小模型来说
新智元报道 编辑:Aeneas 润 【新智元导读】清华朱军团队提出的INT4算法,解决了超低INT精度训练的挑战。LLM训练效率要起飞了! 将激活、权重和梯度量化为4位,有望加速神经网络训练。 最近,清华朱军团队提出了一种使用INT4算法实现所有矩阵乘法的Transformer训练方法。 使用超低INT4精度进行训练,是非常具有挑战性的。 这种原型量化+INT4 MM算子实现,速度比FP16MM基线快2.2倍,并且将训练速度提高了35.1%。 因此,结果不能完全反映INT4训练算法的潜力。 完全优化的实施需要大量工程,超出了我们论文的讨论范围。 结论 研究人员提出了一种对硬件很友好的Transformer INT4的训练方法。 通过分析Transformer中MM的属性,研究人员提出了HQ和LSS方法来量化激活和梯度,同时保持准确性。 在几个重要任务上,我们的方法与现有的INT4方法表现相当,甚至更好。
个人开发者1.1 低成本场景:用技巧换算力量化优化:采用INT4量化(NF4格式),搭配BitsAndBytes库,将13B模型显存占用从40GB降至10GB以内;模型裁剪:裁剪注意力头从16个至12个 适配方案:量化+蒸馏+轻量化架构深度量化:采用INT4量化+模型蒸馏,将7B模型蒸馏为3B轻量化版本,算力需求降低60%,功耗控制在15W以内;架构适配:选用MobileLLM等边缘优化模型,替换原生Transformer 优化前后效能指标趋势3. 2.2 量化优化工具2.2.1 BitsAndBytes:“开箱即用”的轻量量化利器核心能力: 提供 INT8 和 INT4 量化,特别适合在消费级 GPU(如 RTX 30/40 系列)上快速运行大模型 2.2.2 GPTQ:“高精度+加速”兼顾的量化方案核心能力: 对模型进行逐层权重量化 + 误差补偿训练,实现 INT4 精度接近 FP16 效果,同时通过定制 CUDA kernel 加速推理。