库名称:transformers
许可证:其他
许可证名称:NVIDIA开放模型许可证
许可证链接:https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/
管道标签:文本生成
语言:
- 英语
标签:
- NVIDIA
- llama-3
- pytorch
Llama-3_3-Nemotron-Super-49B-v1 GGUF模型
采用IQ-DynamicGate的超低位量化(1-2位)
我们最新的量化方法引入了精度自适应量化技术,专为超低位模型(1-2位)设计,并在Llama-3-8B上通过基准测试验证了其改进效果。该方法采用分层策略,在保持极致内存效率的同时确保精度。
基准测试背景
所有测试均在Llama-3-8B-Instruct上完成,使用:
- 标准困惑度评估流程
- 2048个令牌的上下文窗口
- 所有量化版本使用相同的提示集
方法
- 动态精度分配:
- 前25%和后25%的层 → IQ4_XS(选定层)
- 中间50%的层 → IQ2_XXS/IQ3_S(提升效率)
- 关键组件保护:
- 嵌入层和输出层使用Q5_K
- 相比标准1-2位量化,减少38%的误差传播
量化性能对比(Llama-3-8B)
量化方式 |
标准PPL |
DynamicGate PPL |
Δ PPL |
标准大小 |
DG大小 |
Δ大小 |
标准速度 |
DG速度 |
IQ2_XXS |
11.30 |
9.84 |
-12.9% |
2.5G |
2.6G |
+0.1G |
234s |
246s |
IQ2_XS |
11.72 |
11.63 |
-0.8% |
2.7G |
2.8G |
+0.1G |
242s |
246s |
IQ2_S |
14.31 |
9.02 |
-36.9% |
2.7G |
2.9G |
+0.2G |
238s |
244s |
IQ1_M |
27.46 |
15.41 |
-43.9% |
2.2G |
2.5G |
+0.3G |
206s |
212s |
IQ1_S |
53.07 |
32.00 |
-39.7% |
2.1G |
2.4G |
+0.3G |
184s |
209s |
关键指标说明:
- PPL = 困惑度(越低越好)
- Δ PPL = 相比标准量化的百分比变化
- 速度 = 推理时间(CPU avx2,2048令牌上下文)
- 大小差异反映混合量化的开销
主要改进:
- 🔥 IQ1_M 困惑度大幅降低43.9%(27.46 → 15.41)
- 🚀 IQ2_S 困惑度减少36.9%,仅增加0.2GB内存
- ⚡ IQ1_S 在1位量化下仍保持39.7%的更高准确率
权衡点:
- 所有变体均有轻微内存增加(0.1-0.3GB)
- 推理速度基本持平(差异<5%)
适用场景
📌 将模型适配到GPU显存中
✔ 内存受限的部署环境
✔ 可容忍1-2位误差的CPU和边缘设备
✔ 超低位量化的研究
选择合适的模型格式
选择正确的模型格式需考虑硬件能力和内存限制。
BF16(Brain Float 16)——支持BF16加速时使用
- 专为快速计算设计的16位浮点格式,同时保持良好精度。
- 提供与FP32相似的动态范围,但内存占用更低。
- 推荐在硬件支持BF16加速时使用(请检查设备规格)。
- 相比FP32,适合高性能推理且减少内存占用。
📌 使用BF16如果:
✔ 硬件原生支持BF16(如新款GPU、TPU)。
✔ 需要更高精度同时节省内存。
✔ 计划将模型重新量化为其他格式。
📌 避免BF16如果:
❌ 硬件不支持BF16(可能回退至FP32导致速度变慢)。
❌ 需要兼容缺乏BF16优化的旧设备。
F16(Float 16)——比BF16支持更广泛
- 16位浮点格式,精度高但数值范围小于BF16。
- 支持大多数具有FP16加速的设备(包括许多GPU和部分CPU)。
- 数值精度略低于BF16,但通常足以满足推理需求。
📌 使用F16如果:
✔ 硬件支持FP16但不支持BF16。
✔ 需要在速度、内存占用和准确性之间取得平衡。
✔ 在优化FP16计算的GPU或其他设备上运行。
📌 避免F16如果:
❌ 设备缺乏原生FP16支持(可能运行速度低于预期)。
❌ 存在内存限制。
量化模型(Q4_K、Q6_K、Q8等)——适用于CPU和低显存推理
量化在尽可能保持精度的同时减少模型大小和内存占用。
- 低位模型(Q4_K) → 最小内存占用,精度可能较低。
- 高位模型(Q6_K、Q8_0) → 更高精度,但需要更多内存。
📌 使用量化模型如果:
✔ 在CPU上运行推理且需要优化模型。
✔ 设备显存不足,无法加载全精度模型。
✔ 希望减少内存占用同时保持合理精度。
📌 避免量化模型如果:
❌ 需要最高精度(全精度模型更适合)。
❌ 硬件有足够显存支持更高精度格式(BF16/F16)。
超低位量化(IQ3_XS、IQ3_S、IQ3_M、Q4_K、Q4_0)
这些模型针对极致内存效率优化,适合低功耗设备或内存是关键限制的大规模部署。
-
IQ3_XS:3位超低位量化,极致内存效率。
- 用例:适合超低内存设备,甚至Q4_K也过大时。
- 权衡:相比高位量化精度较低。
-
IQ3_S:小块尺寸,最大化内存效率。
-
IQ3_M:中等块尺寸,精度优于IQ3_S。
-
Q4_K:4位量化,块级优化提升精度。
-
Q4_0:纯4位量化,针对ARM设备优化。
模型格式选择摘要表
模型格式 |
精度 |
内存占用 |
设备要求 |
最佳用例 |
BF16 |
最高 |
高 |
支持BF16的GPU/CPU |
高速推理且减少内存占用 |
F16 |
高 |
高 |
支持FP16的设备 |
BF16不可用时的GPU推理 |
Q4_K |
中低 |
低 |
CPU或低显存设备 |
内存受限环境的最佳选择 |
Q6_K |
中 |
中等 |
内存较多的CPU |
量化模型中更好的精度 |
Q8_0 |
高 |
中等 |
显存足够的CPU或GPU |
量化模型中的最高精度 |
IQ3_XS |
极低 |
极低 |
超低内存设备 |
极致内存效率但精度低 |
Q4_0 |
低 |
低 |
ARM或低内存设备 |
llama.cpp可针对ARM设备优化 |
包含文件及详情
Llama-3_3-Nemotron-Super-49B-v1-bf16.gguf
- 模型权重以BF16保存。
- 如需将模型重新量化为其他格式,请使用此文件。
- 设备支持BF16加速时最佳。
Llama-3_3-Nemotron-Super-49B-v1-f16.gguf
- 模型权重以F16存储。
- 设备支持FP16但无BF16时使用。
Llama-3_3-Nemotron-Super-49B-v1-bf16-q8_0.gguf
- 输出层和嵌入层保持BF16。
- 其他层量化为Q8_0。
- 设备支持BF16且需要量化版本时使用。
Llama-3_3-Nemotron-Super-49B-v1-f16-q8_0.gguf
- 输出层和嵌入层保持F16。
- 其他层量化为Q8_0。
Llama-3_3-Nemotron-Super-49B-v1-q4_k.gguf
- 输出层和嵌入层量化为Q8_0。
- 其他层量化为Q4_K。
- 适合内存有限的CPU推理。
Llama-3_3-Nemotron-Super-49B-v1-q4_k_s.gguf
- 最小的Q4_K变体,牺牲精度减少内存占用。
- 适合极低内存配置。
Llama-3_3-Nemotron-Super-49B-v1-q6_k.gguf
- 输出层和嵌入层量化为Q8_0。
- 其他层量化为Q6_K。
Llama-3_3-Nemotron-Super-49B-v1-q8_0.gguf
- 完全Q8量化模型,精度更高。
- 需要更多内存但提供更高精度。
Llama-3_3-Nemotron-Super-49B-v1-iq3_xs.gguf
- IQ3_XS量化,针对极致内存效率优化。
- 适合超低内存设备。
Llama-3_3-Nemotron-Super-49B-v1-iq3_m.gguf
- IQ3_M量化,提供中等块尺寸以提升精度。
- 适合低内存设备。
Llama-3_3-Nemotron-Super-49B-v1-q4_0.gguf
- 纯Q4_0量化,针对ARM设备优化。
- 适合低内存环境。
- 如需更高精度,推荐IQ4_NL。
🚀 如果您觉得这些模型有用
请点赞 ❤。同时,如果您能测试我的网络监控助手,我将非常感激 👉 网络监控助手。
💬 点击聊天图标(主页面和仪表板页面右下角)。选择一个LLM;在LLM类型之间切换:TurboLLM -> FreeLLM -> TestLLM。
我正在测试的内容
我正在针对我的网络监控服务实验函数调用功能。使用小型开源模型。我关注的问题是“模型可以小到什么程度仍能保持功能”。
🟡 TestLLM – 在CPU虚拟机的6个线程上使用llama.cpp运行当前测试模型(加载约需15秒。推理速度较慢,且一次仅处理一个用户提示——仍在优化扩展!)。如果您感兴趣,我很乐意分享其工作原理!
其他可用的AI助手
🟢 TurboLLM –