Transformers 中的 EETQ:在 NVIDIA GPU 上启用免校准的 INT8 仅权重量化

发布时间:2026/9/9 23:50:54

Transformers 中的 EETQ:在 NVIDIA GPU 上启用免校准的 INT8 仅权重量化 Transformers 中的 EETQ在 NVIDIA GPU 上启用免校准的 INT8 仅权重量化【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformersEETQEasy Efficient Quantization for Transformers是一种面向 NVIDIA GPU 的 int8 仅权重量化weight-only quantization方案由网易伏羲实验室开源贡献。它不要求校准数据集、不需要预量化模型权重仅通过每通道per-channel缩放即可把torch.nn.Linear层的高精度权重压缩为 int8并在运行时以专用 GEMM/GEMV 内核加速推理。本文将以 Transformers 仓库中的 官方 EETQ 文档 为骨架结合量化器与集成层的源码实现讲解 EETQ 的原理特性、安装方式、开箱量化用法、量化模型保存复用以及与 PEFT 结合微调的完整实践路径。EETQ 的核心特性int8 仅权重 免校准根据 官方量化文档EETQ 在 Transformers 生态中的定位非常清晰int8 weight-only per-channel 量化只量化权重、不量化激活且按输出通道维度记录独立的 fp16 缩放因子因此即便不经过校准也能把精度损失控制在可忽略的水平。复用高性能内核GEMM矩阵乘与 GEMV矩阵向量乘内核源自 FasterTransformer 与 TensorRT-LLM注意力层则可用 FlashAttention2 优化——这些都是面向 GPU 深度优化过的实现。零额外流程无需校准数据集也无需预量化权重加载时即量化on-the-fly quantization。支持微调EETQ 权重仍可参与 PEFT如 LoRA训练流程。正因为免校准、开箱即用EETQ 特别适合希望快速把大语言模型如 Llama 系列跑在单卡/多卡 GPU 上、又想降低显存占用与访存带宽压力的推理与微调场景。在整个 Transformers 量化方案图谱中EETQ 也占据固定位置文档导航 quantization/overview.md 的能力对照表将 EETQ 与 AWQ、GPTQ、bitsandbytes 等方案并列供读者横向比较不同方法的适用精度与硬件要求。安装与环境要求EETQ 需要满足以下前置条件来自官方文档与量化器源码双重确认CUDA 11.4EETQ 的编译与运行依赖 NVIDIA CUDA 环境。GPU 必需量化器的环境校验直接要求torch.cuda.is_available()无 GPU 会抛出No GPU found运行时错误见 quantizer_eetq.py。kernels 与 accelerate 依赖同一份校验逻辑还会检查当前 Transformers 的 kernels 支持缺失时报pip install kernels与 accelerate缺失时报pip install accelerate见 quantizer_eetq.py。安装 EETQ 运行时本身有两条官方路径方式一Release 预编译包在 EETQ 的官方 release 页面选择与自身环境匹配的 wheel文件名中通常标注 CUDA 与 PyTorch 版本如cu121、torch2.1.2、cp310然后pip install --no-cache-dir path-to/EETQ-版本cu版本torch版本-cppy版本-cppy版本-linux_x86_64.whl方式二源码编译git clone EETQ 仓库地址 cd EETQ/ git submodule update --init --recursive pip install .仓库通过 submodule 引入所需的 CUDA 内核源码因此--recursive拉取子模块是编译成功的关键步骤。开箱量化一条EetqConfig完成加载在模型加载阶段指定量化方式即可完成整个量化替换流程。官方文档给出的核心示例是对 Llama-3.1-8B 做 EETQ int8 量化from transformers import AutoModelForCausalLM, EetqConfig quantization_config EetqConfig(int8) model AutoModelForCausalLM.from_pretrained( meta-llama/Llama-3.1-8B, dtypeauto, device_mapauto, quantization_configquantization_config )这段代码背后发生了什么理解它有助于把握 EETQ 的边界条件。EetqConfig可用的配置参数EetqConfig定义在 quantization_config.py是一个标准的 Transformers 量化配置 dataclass支持字段如下参数类型默认值说明weightsstrint8目标权重类型当前仅支持int8传入其他值会在post_init中被ValueError拒绝modules_to_not_convertlist[str] \| NoneNone不做量化的模块名列表用于显式保留某些层为原始精度典型如输出头lm_headEetqConfig(int8)与EetqConfig(weightsint8)等价。其内部会设置quant_method QuantizationMethod.EETQ该标识在后续权重加载时被 quantizers/auto.py 中的量化方法注册表解析从而路由到EetqHfQuantizer。从配置到替换量化器与集成层调用链模型加载时EetqHfQuantizer 会执行如下关键步骤环境校验validate_environment校验 kernels/accelerate/CUDA若device_map中含 CPU 或 disk 设备则直接报错EETQ 不支持把层放到 CPU/磁盘见 quantizer_eetq.py。决定保留层_process_model_before_weight_loading把modules_to_not_convert与模型自带的_keep_in_fp32_modules合并随后调用replace_with_eetq_linear完成模块替换见 quantizer_eetq.py。惰性加载内核replace_with_eetq_linear通过get_kernel(kernels-community/quantization-eetq, version1)从社区内核仓库获取 EETQ 的量化与 GEMM 内核句柄见 integrations/eetq.py。这就是为什么环境校验要求 kernels 支持可用。模块替换本身在 integrations/eetq.py 中递归遍历模型的所有nn.Linear跳过应保留的模块后在meta设备上用EetqLinear原位替换。EetqLinear的内部布局非常直接见 integrations/eetq.pyweight(in_features, out_features)的 int8 参数requires_gradFalseweight_scales长度为out_features的 fp16 每通道缩放因子bias若原层存在偏置则以 fp16 保留前向调用EetqLinearMMFunction内部执行w8_a16_gemmint8 权重 × fp16 激活的高性能 GEMM再把偏置加上见 integrations/eetq.py。值得留意的是requires_calibration False这一量化器属性quantizer_eetq.py它从架构层面明确了无需校准数据这一特性量化只是纯数学上的权重重编码。保存与复用量化模型量化的价值在于一次转换、多次部署。官方文档给出保存与再加载的标准流程quant_path /path/to/save/quantized/model model.save_pretrained(quant_path) model AutoModelForCausalLM.from_pretrained(quant_path, device_mapauto)在仓库测试 tests/quantization/eetq_integration/test_eetq.py 中这一行为被完整覆盖EetqConfigTest验证to_dict/from_dict往返即量化配置可随 checkpoint 序列化到磁盘并能被反向解析EetqTest.test_quantized_model_conversion与test_quantized_model验证模块替换与权重加载结果test_save_pretrained将量化模型保存到临时目录后再次加载test_quantized_model_multi_gpu覆盖device_map多 GPU 分配场景。能够保存的前提是量化器声明is_serializable() - True见 quantizer_eetq.py。保存时 int8 权重与*_scales缩放因子会一并落盘见EetqQuantize.convert返回的键名{layer}_scalesintegrations/eetq.py。再次from_pretrained时checkpoint 内携带的quant_method: eetq配置会被自动识别进入预量化加载路径此时不再执行实时量化而是直接把 int8 权重装载进EetqLinear。结合 PEFT 微调 EETQ 量化模型官方文档明确 EETQ 支持 PEFT 微调。从源码看该能力由以下设计共同支撑量化器声明is_trainable - Truequantizer_eetq.py允许模型进入训练/微调管线EetqLinearMMFunction.backward实现了针对 int8 权重的反向传播通过w8_a16_gemm将 int8 权重与单位矩阵相乘完成反量化再与梯度做矩阵乘得到输入梯度integrations/eetq.py。int8 权重本身冻结requires_gradFalse可训练的额外参数如 LoRA 适配器照常更新。典型场景是先按上文加载 EETQ 量化模型再叠加 PEFT 提供的 LoRA 配置做指令微调或领域适配从而获得量化省显存 低秩微调的组合收益。需要说明的是PEFT 属于独立生态组件其具体 API 与版本配合以对应集成文档为准。使用建议与注意事项结合官方文档与源码约束实践中有几点值得注意优先把dtype设为torch.float16update_dtype会在加载 dtype 不是 fp16 时提示We suggest you to set dtypetorch.float16 for better efficiency with EETQquantizer_eetq.py因为EetqLinear的权重缩放因子与偏置都以 fp16 存储、w8_a16_gemm面向 fp16 激活设计。文档示例中的dtypeauto亦可但显式 fp16 通常效率最佳。device_map不能包含 CPU/disk 设备EETQ 要求权重与计算都在 GPU 上混排会直接抛错若未指定device_map量化器也会告警提醒设置 GPU 设备quantizer_eetq.py。关键层保持全精度默认会把lm_head等输出层留在原始精度以保证数值稳定性可通过modules_to_not_convert显式扩展保留列表integrations/eetq.py。已量化模型请使用预量化语义加载从保存路径直接加载即可无需再次传入quantization_config系统会依据 checkpoint 元数据自动走 int8 装载路径。小结EETQ 为 Transformers 用户提供了一条低门槛的 NVIDIA GPU int8 仅权重量化路径以 EetqConfig 一处配置完成模块替换与内核加载免校准即可获得 int8 权重带来的显存与带宽收益并支持 checkpoint 序列化复用与 PEFT 微调。深入 量化器实现 与 EETQ 集成层可以看到其每通道 fp16 缩放 w8_a16 专用内核 autograd 反量化反向的完整闭环——这正是它能在精度、速度与易用性之间取得平衡的根本原因。若想对照更多量化方案做选型可继续阅读 量化方案总览想复现上述行为可运行 EETQ 集成测试。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/9 23:45:54

UV坐标与Tiling Offset:Unity Shader纹理平铺深度解析

1. 从UV坐标到Tiling & Offset:先搞懂你操作的是什么做了这么多年的Unity Shader,我遇到过不少美术同学拿着材质球问:"为什么这个纹理重复了这么多?""为什么这个贴图位置老是偏的?"问题基本都…

2026/9/10 0:41:01

低代码平台动态引擎设计与实践:Liquor规则配置化与热更新

做低代码平台这几年,我最大的体会是:平台好不好用,不看你拖拽组件做了多少,而看业务逻辑能不能“动”起来。我说的“动”,不是改个字段、换张表单,而是不重新发版、不重启服务,就能动态修改一段…

2026/9/10 0:41:01

Matlab/Simulink双馈风机仿真:MPPT控制与参数观测实战

1. 选Matlab 2019而不是追新版本:双馈风机模型架构的搭建前提1.1 我为什么把项目锁死在Matlab 2019上先说个现实问题:做双馈风机(DFIG)仿真,版本选择真的会卡住进度。我这几年接触过不少做新能源控制的团队&#xff0c…

2026/9/10 0:41:01

光电测试技术全解析:从AOMTI 2026看行业未来趋势

1. 光电测试技术被低估的这些年:高精度背后全是细节仗光电测试技术这个行当,在外行眼里就是"拿个仪器测一测光",但在真正干这行的人心里,它几乎是现代工业的隐形地基。芯片制造里的光刻对准、光纤通信里每0.01dB的损耗波…

2026/9/10 0:36:01

PySide6开发桌面天气应用全攻略:从API对接、界面设计到打包部署

“桌面版天气预报应用”这个名字听起来简单,但真正动手做的时候,你会发现它几乎能逼你把桌面开发、网络请求、数据解析、状态管理、异常处理、打包分发这条路完整走一遍。我最初想做个桌面天气应用,纯粹是因为受够了手机天气推送的过度设计—…

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码