模型简介
模型特点
模型能力
使用案例
🚀 Llama-3.1-Nemotron-Nano-4B-v1.1 GGUF模型
Llama-3.1-Nemotron-Nano-4B-v1.1是一款大语言模型,它基于特定技术优化,在准确性和效率间取得了良好平衡,适用于多种AI应用场景,如AI代理系统、聊天机器人等。
🚀 快速开始
推理模式控制
推理模式(开启/关闭)通过系统提示进行控制,所有指令需包含在用户提示中。
参数设置建议
- 推理开启模式:建议将温度设置为
0.6
,Top P设置为0.95
。 - 推理关闭模式:建议使用贪婪解码。
代码依赖
代码需要 transformers
包版本为 4.44.2
或更高。
推理开启示例
import torch
import transformers
model_id = "nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1"
model_kwargs = {"torch_dtype": torch.bfloat16, "device_map": "auto"}
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token_id = tokenizer.eos_token_id
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
tokenizer=tokenizer,
max_new_tokens=32768,
temperature=0.6,
top_p=0.95,
**model_kwargs
)
# Thinking can be "on" or "off"
thinking = "on"
print(pipeline([{"role": "system", "content": f"detailed thinking {thinking}"}, {"role": "user", "content": "Solve x*(sin(x)+2)=0"}]))
推理关闭示例
import torch
import transformers
model_id = "nvidia/Llama-3.1-Nemotron-Nano-4B-v1"
model_kwargs = {"torch_dtype": torch.bfloat16, "device_map": "auto"}
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token_id = tokenizer.eos_token_id
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
tokenizer=tokenizer,
max_new_tokens=32768,
do_sample=False,
**model_kwargs
)
# Thinking can be "on" or "off"
thinking = "off"
print(pipeline([{"role": "system", "content": f"detailed thinking {thinking}"}, {"role": "user", "content": "Solve x*(sin(x)+2)=0"}]))
阻止模型思考示例
import torch
import transformers
model_id = "nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1"
model_kwargs = {"torch_dtype": torch.bfloat16, "device_map": "auto"}
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token_id = tokenizer.eos_token_id
# Thinking can be "on" or "off"
thinking = "off"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
tokenizer=tokenizer,
max_new_tokens=32768,
do_sample=False,
**model_kwargs
)
print(pipeline([{"role": "system", "content": f"detailed thinking {thinking}"}, {"role": "user", "content": "Solve x*(sin(x)+2)=0"}, {"role":"assistant", "content":"<think>\n</think>"}]))
运行支持工具调用的vLLM服务器
Llama-3.1-Nemotron-Nano-4B-v1.1支持工具调用。此HF仓库托管了一个工具调用解析器以及Jinja格式的聊天模板,可用于启动vLLM服务器。
以下是一个启动支持工具调用的vLLM服务器的shell脚本示例。vllm/vllm-openai:v0.6.6
或更高版本应支持该模型。
#!/bin/bash
CWD=$(pwd)
PORT=5000
git clone https://huggingface.co/nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1
docker run -it -
✨ 主要特性
模型生成细节
该模型使用 llama.cpp 在提交版本 92ecdcc0
时生成。
超低比特量化(1 - 2比特)
最新的量化方法为超低比特模型(1 - 2比特)引入了精度自适应量化,在 Llama-3-8B 上经基准测试证明有改进。该方法采用特定层策略,在保持极高内存效率的同时保留准确性。
基准测试环境
所有测试在 Llama-3-8B-Instruct 上进行,使用:
- 标准困惑度评估流程
- 2048 令牌上下文窗口
- 所有量化使用相同的提示集
量化方法
- 动态精度分配:
- 前/后 25% 的层 → IQ4_XS(选定层)
- 中间 50% → IQ2_XXS/IQ3_S(提高效率)
- 关键组件保护:
- 嵌入层/输出层使用 Q5_K
- 与标准 1 - 2 比特量化相比,误差传播降低 38%
量化性能对比(Llama-3-8B)
量化方式 | 标准困惑度 | DynamicGate困惑度 | 困惑度变化百分比 | 标准大小 | 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 = 困惑度(越低越好)
- 困惑度变化百分比 = 从标准到DynamicGate的百分比变化
- 速度 = 推理时间(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支持(如较新的GPU、TPU)
- 希望在节省内存的同时获得更高精度
- 计划将模型重新量化为其他格式
避免使用场景:
- 硬件不支持 BF16(可能回退到FP32并运行更慢)
- 需要与缺乏BF16优化的旧设备兼容
F16(Float 16) - 比BF16更广泛支持
- 16位浮点格式,精度较高,但值的范围比BF16小。
- 适用于大多数支持 FP16加速 的设备(包括许多GPU和一些CPU)。
- 数值精度略低于BF16,但通常足以用于推理。
使用场景:
- 硬件支持 FP16 但不支持BF16
- 需要在速度、内存使用和准确性之间取得平衡
- 在为FP16计算优化的GPU或其他设备上运行
避免使用场景:
- 设备缺乏原生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_XS过于激进。
- IQ3_M:中等块大小,比 IQ3_S 准确性更好。
- 使用场景:适用于低内存设备,IQ3_S限制过大。
- Q4_K:4 比特量化,具有逐块优化以提高准确性。
- 使用场景:最适合低内存设备,Q6_K太大。
- Q4_0:纯 4 比特量化,针对 ARM设备 优化。
- 使用场景:最适合基于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设备优化 |
📦 安装指南
文档未提及具体安装步骤,暂无法提供。
💻 使用示例
基础用法
import torch
import transformers
model_id = "nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1"
model_kwargs = {"torch_dtype": torch.bfloat16, "device_map": "auto"}
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token_id = tokenizer.eos_token_id
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
tokenizer=tokenizer,
max_new_tokens=32768,
temperature=0.6,
top_p=0.95,
**model_kwargs
)
# Thinking can be "on" or "off"
thinking = "on"
print(pipeline([{"role": "system", "content": f"detailed thinking {thinking}"}, {"role": "user", "content": "Solve x*(sin(x)+2)=0"}]))
高级用法
import torch
import transformers
model_id = "nvidia/Llama-3.1-Nemotron-Nano-4B-v1.1"
model_kwargs = {"torch_dtype": torch.bfloat16, "device_map": "auto"}
tokenizer = transformers.AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token_id = tokenizer.eos_token_id
# Thinking can be "on" or "off"
thinking = "off"
pipeline = transformers.pipeline(
"text-generation",
model=model_id,
tokenizer=tokenizer,
max_new_tokens=32768,
do_sample=False,
**model_kwargs
)
print(pipeline([{"role": "system", "content": f"detailed thinking {thinking}"}, {"role": "user", "content": "Solve x*(sin(x)+2)=0"}, {"role":"assistant", "content":"<think>\n</think>"}]))
📚 详细文档
模型概述
Llama-3.1-Nemotron-Nano-4B-v1.1是一个大语言模型(LLM),它是 nvidia/Llama-3.1-Minitron-4B-Width-Base 的衍生模型,该基础模型由Llama 3.1 8B使用 特定的LLM压缩技术 创建,在模型准确性和效率方面有所改进。它是一个经过后期训练的推理模型,适用于推理、人类聊天偏好和任务,如RAG和工具调用。
该模型在单个RTX GPU上即可运行,支持128K的上下文长度,在模型准确性和效率之间实现了良好的平衡。
模型训练
该模型经过多阶段的后期训练,以增强其推理和非推理能力。包括针对数学、代码、推理和工具调用的有监督微调阶段,以及使用奖励感知偏好优化(RPO)算法的多个强化学习阶段,用于聊天和指令跟随。最终的模型检查点是在合并最终的SFT和RPO检查点后获得的。
模型家族
该模型是Llama Nemotron系列的一部分,该系列的其他模型如下:
许可证
使用此模型受 NVIDIA开放模型许可证 约束。额外信息:Llama 3.1社区许可协议。该模型基于Llama构建。
模型开发者
NVIDIA
模型训练时间
2024年8月至2025年5月
数据新鲜度
预训练数据截止到2023年6月。
使用场景
适用于开发AI代理系统、聊天机器人、RAG系统和其他AI应用的开发者,也适用于典型的指令跟随任务。该模型在模型准确性和计算效率之间取得了平衡,可在单个RTX GPU上本地使用。
发布日期
2025年5月20日
参考文献
- [2408.11796] LLM Pruning and Distillation in Practice: The Minitron Approach
- [2502.00203] Reward-aware Preference Optimization: A Unified Mathematical Framework for Model Alignment
- [2505.00949] Llama-Nemotron: Efficient Reasoning Models
模型架构
- 架构类型:密集解码器Transformer模型
- 网络架构:Llama 3.1 Minitron Width 4B Base
预期用途
Llama-3.1-Nemotron-Nano-4B-v1.1是一个通用的推理和聊天模型,旨在用于英语和编程语言。也支持其他非英语语言(德语、法语、意大利语、葡萄牙语、印地语、西班牙语和泰语)。
输入
- 输入类型:文本
- 输入格式:字符串
- 输入参数:一维(1D)
- 其他输入相关属性:上下文长度最大为131,072个令牌
输出
- 输出类型:文本
- 输出格式:字符串
- 输出参数:一维(1D)
- 其他输出相关属性:上下文长度最大为131,072个令牌
模型版本
1.1(2025年5月20日)
软件集成
- 运行时引擎:NeMo 24.12
- 推荐的硬件微架构兼容性:
- NVIDIA Hopper
- NVIDIA Ampere
🔧 技术细节
模型生成
该模型使用 llama.cpp 在提交版本 92ecdcc0
时生成。
量化技术
采用了精度自适应量化方法,针对超低比特模型(1 - 2比特)进行优化。通过动态精度分配和关键组件保护,在保持高内存效率的同时提高了模型的准确性。在基准测试中,多个量化变体在困惑度和推理速度方面都有良好表现。
推理模式控制
推理模式(开启/关闭)通过系统提示进行控制,用户可以根据具体需求设置不同的参数,如温度、Top P等,以实现不同的推理效果。
📄 许可证
使用此模型受 NVIDIA开放模型许可证 约束。额外信息:Llama 3.1社区许可协议。该模型基于Llama构建。
其他说明
模型文件说明
文件名 | 说明 |
---|---|
Llama-3.1-Nemotron-Nano-4B-v1.1-bf16.gguf |
模型权重保存为BF16格式。若需要将模型重新量化为其他格式,或设备支持BF16加速,可使用此文件。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-f16.gguf |
模型权重保存为F16格式。若设备支持FP16,特别是BF16不可用时,可使用此文件。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-bf16-q8_0.gguf |
输出和嵌入层保持为BF16,其他层量化为Q8_0。适用于支持BF16且需要量化版本的设备。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-f16-q8_0.gguf |
输出和嵌入层保持为F16,其他层量化为Q8_0。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-q4_k.gguf |
输出和嵌入层量化为Q8_0,其他层量化为Q4_K。适合内存有限的CPU推理。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-q4_k_s.gguf |
最小的Q4_K变体,以牺牲一定准确性为代价减少内存使用。适合极低内存设置。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-q6_k.gguf |
输出和嵌入层量化为Q8_0,其他层量化为Q6_K。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-q8_0.gguf |
全Q8量化模型,准确性更高,但需要更多内存。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-iq3_xs.gguf |
IQ3_XS量化,针对极端内存效率优化。适合超低内存设备。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-iq3_m.gguf |
IQ3_M量化,提供中等块大小以提高准确性。适合低内存设备。 |
Llama-3.1-Nemotron-Nano-4B-v1.1-q4_0.gguf |
纯Q4_0量化,针对ARM设备优化。适合低内存环境。建议使用IQ4_NL以获得更好的准确性。 |
测试与反馈
如果您觉得这些模型有用,请点击“点赞”!同时,作者邀请您帮助测试其 AI驱动的网络监控助手,该助手具备量子就绪安全检查功能: 免费网络监控
测试方法
选择一种 AI助手类型:
TurboLLM
(GPT-4o-mini)HugLLM
(Hugginface开源)TestLLM
(仅支持CPU的实验性模型)
测试内容
作者正在探索小型开源模型在AI网络监控中的极限,具体包括:
- 针对实时网络服务的函数调用
- 模型在处理以下任务时的最小规模:
- 自动 Nmap扫描
- 量子就绪检查
- 网络监控任务
TestLLM模型
当前的实验性模型(llama.cpp在2个CPU线程上运行):
- 零配置设置
- 加载时间约30秒(推理速度慢,但无API成本)
- 寻求帮助:如果您对边缘设备AI感兴趣,欢迎合作!
其他助手
- TurboLLM:使用 gpt-4o-mini 进行以下操作:
- 创建自定义命令处理器,在免费网络监控代理上运行 .net 代码
- 实时网络诊断和监控
- 安全审计
- 渗透测试(Nmap/Metasploit)
- HugLLM:使用最新的开源模型,运行在Hugging Face推理API上。
测试命令示例
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
"Create a cmd processor to .. (what ever you want)"
注意:需要安装免费网络监控代理才能运行 .net 代码,这是一个非常灵活和强大的功能,请谨慎使用!
支持与反馈
作者自行承担创建这些模型文件的服务器费用、运行免费网络监控服务的费用以及从Novita和OpenAI进行推理的费用。模型创建和免费网络监控项目的所有代码都是 开源的,欢迎使用。
如果您认可作者的工作,请考虑 请作者喝咖啡。您的支持有助于支付服务成本,并允许作者提高所有人的令牌限制。
作者也欢迎工作机会或赞助。感谢支持!



