模型简介
模型特点
模型能力
使用案例
🚀 Llama-3.1-Nemotron-70B-Instruct-HF GGUF模型
Llama-3.1-Nemotron-70B-Instruct-HF GGUF模型是NVIDIA定制的大语言模型,旨在提升大语言模型对用户查询生成回复的有效性。该模型在多个评估指标上表现出色,具有多种量化格式,能适应不同硬件和内存条件。
🚀 快速开始
你可以使用HuggingFace Transformers库来使用该模型,需要2块或更多80GB的GPU(NVIDIA Ampere或更新版本),并至少有150GB的可用磁盘空间用于下载。
此代码已在Transformers v4.44.0、torch v2.4.0和2块A100 80GB GPU上进行了测试,但任何支持meta-llama/Llama-3.1-70B-Instruct
的设置也应支持此模型。如果你遇到问题,可以考虑执行pip install -U transformers
。
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "nvidia/Llama-3.1-Nemotron-70B-Instruct-HF"
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "How many r in strawberry?"
messages = [{"role": "user", "content": prompt}]
tokenized_message = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt", return_dict=True)
response_token_ids = model.generate(tokenized_message['input_ids'].cuda(),attention_mask=tokenized_message['attention_mask'].cuda(), max_new_tokens=4096, pad_token_id = tokenizer.eos_token_id)
generated_tokens =response_token_ids[:, len(tokenized_message['input_ids'][0]):]
generated_text = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0]
print(generated_text)
# See response at top of model card
✨ 主要特性
超低比特量化与IQ-DynamicGate(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 = 困惑度(越低越好)
- Δ 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(脑浮点16) – 若支持BF16加速则使用
- 一种16位浮点格式,专为更快的计算而设计,同时保留良好的精度。
- 提供与FP32 相似的动态范围,但内存使用更低。
- 如果你的硬件支持BF16加速(检查设备规格),建议使用。
- 与FP32相比,适用于高性能推理且内存占用减少。
📌 使用BF16的情况: ✔ 你的硬件具有原生BF16支持(例如,较新的GPU、TPU)。 ✔ 你希望在节省内存的同时获得更高的精度。 ✔ 你计划将模型重新量化为另一种格式。
📌 避免使用BF16的情况: ❌ 你的硬件不支持BF16(可能会回退到FP32并运行更慢)。 ❌ 你需要与缺乏BF16优化的旧设备兼容。
F16(浮点16) – 比BF16更广泛支持
- 一种16位浮点格式,精度较高,但取值范围比BF16小。
- 适用于大多数支持FP16加速的设备(包括许多GPU和一些CPU)。
- 数值精度略低于BF16,但通常足以进行推理。
📌 使用F16的情况: ✔ 你的硬件支持FP16但不支持BF16。 ✔ 你需要在速度、内存使用和准确性之间取得平衡。 ✔ 你在GPU或其他针对FP16计算优化的设备上运行。
📌 避免使用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_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
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "nvidia/Llama-3.1-Nemotron-70B-Instruct-HF"
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.bfloat16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = "How many r in strawberry?"
messages = [{"role": "user", "content": prompt}]
tokenized_message = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt", return_dict=True)
response_token_ids = model.generate(tokenized_message['input_ids'].cuda(),attention_mask=tokenized_message['attention_mask'].cuda(), max_new_tokens=4096, pad_token_id = tokenizer.eos_token_id)
generated_tokens =response_token_ids[:, len(tokenized_message['input_ids'][0]):]
generated_text = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0]
print(generated_text)
# See response at top of model card
📚 详细文档
包含的文件及详情
Llama-3.1-Nemotron-70B-Instruct-HF-bf16.gguf
- 模型权重以BF16保存。
- 如果你想将模型重新量化为不同格式,请使用此文件。
- 如果你的设备支持BF16加速,则最佳。
Llama-3.1-Nemotron-70B-Instruct-HF-f16.gguf
- 模型权重以F16存储。
- 如果你的设备支持FP16,特别是当BF16不可用时使用。
Llama-3.1-Nemotron-70B-Instruct-HF-bf16-q8_0.gguf
- 输出和嵌入层保持为BF16。
- 所有其他层量化为Q8_0。
- 如果你的设备支持BF16且你想要量化版本,请使用。
Llama-3.1-Nemotron-70B-Instruct-HF-f16-q8_0.gguf
- 输出和嵌入层保持为F16。
- 所有其他层量化为Q8_0。
Llama-3.1-Nemotron-70B-Instruct-HF-q4_k.gguf
- 输出和嵌入层量化为Q8_0。
- 所有其他层量化为Q4_K。
- 适用于内存有限的CPU推理。
Llama-3.1-Nemotron-70B-Instruct-HF-q4_k_s.gguf
- 最小的Q4_K变体,以牺牲准确性为代价使用更少的内存。
- 最适合极低内存设置。
Llama-3.1-Nemotron-70B-Instruct-HF-q6_k.gguf
- 输出和嵌入层量化为Q8_0。
- 所有其他层量化为Q6_K。
Llama-3.1-Nemotron-70B-Instruct-HF-q8_0.gguf
- 完全Q8量化的模型,以获得更好的准确性。
- 需要更多内存,但提供更高的精度。
Llama-3.1-Nemotron-70B-Instruct-HF-iq3_xs.gguf
- IQ3_XS量化,针对极端内存效率进行了优化。
- 最适合超低内存设备。
Llama-3.1-Nemotron-70B-Instruct-HF-iq3_m.gguf
- IQ3_M量化,提供中等块大小以获得更好的准确性。
- 适用于低内存设备。
Llama-3.1-Nemotron-70B-Instruct-HF-q4_0.gguf
- 纯Q4_0量化,针对ARM设备进行了优化。
- 最适合低内存环境。
- 若追求更高准确性,优先选择IQ4_NL。
测试LLM相关
如果你觉得这些模型有用,请点击“点赞”!帮助测试我的人工智能网络监控助手,进行量子就绪安全检查: 👉 免费网络监控器
测试方法
- 点击聊天图标(任何页面右下角)
- 选择一个AI助手类型:
TurboLLM
(GPT - 4 - mini)FreeLLM
(开源)TestLLM
(仅实验性CPU)
测试内容
正在突破用于人工智能网络监控的小型开源模型的极限,具体包括:
- 针对实时网络服务的函数调用
- 模型可以多小,同时仍能处理:
- 自动化Nmap扫描
- 量子就绪检查
- Metasploit集成
TestLLM – 当前实验模型(llama.cpp在6个CPU线程上)
- ✅ 零配置设置
- ⏳ 30秒加载时间(推理慢,但无API成本)
- 🔧 寻求帮助! 如果你对边缘设备人工智能感兴趣,让我们合作!
其他助手
🟢 TurboLLM – 使用gpt - 4 - mini进行:
- 实时网络诊断
- 自动化渗透测试(Nmap/Metasploit)
- 🔑 通过下载我们的免费网络监控代理获得更多令牌
🔵 HugLLM – 开源模型(≈8B参数):
- 比TurboLLM多2倍的令牌
- 人工智能日志分析
- 🌐 在Hugging Face推理API上运行
测试示例AI命令
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a quick Nmap vulnerability test"
模型概述
描述
Llama-3.1-Nemotron-70B-Instruct是NVIDIA定制的大语言模型,旨在提升大语言模型对用户查询生成回复的有效性。
该模型在Arena Hard中达到85.0分,在AlpacaEval 2 LC中达到57.6分,在GPT - 4 - Turbo MT - Bench中达到8.98分,这些指标已知可预测LMSys Chatbot Arena Elo。
截至2024年10月1日,该模型在所有三个自动对齐基准测试中排名第一(AlpacaEval 2 LC的验证标签页),领先于GPT - 4o和Claude 3.5 Sonnet等强大的前沿模型。
截至2024年10月24日,该模型在聊天机器人竞技场排行榜上的Elo得分为1267(±7),排名第9,风格控制排名第26。
该模型使用RLHF(具体为REINFORCE)、Llama-3.1-Nemotron-70B-Reward和HelpSteer2 - 偏好提示在Llama-3.1-70B-Instruct模型上进行训练作为初始策略。
Llama-3.1-Nemotron-70B-Instruct-HF已从Llama-3.1-Nemotron-70B-Instruct转换而来,以支持在HuggingFace Transformers代码库中使用。请注意,评估结果可能与在NeMo - Aligner中评估的Llama-3.1-Nemotron-70B-Instruct略有不同,以下评估结果基于此。
可以在build.nvidia.com上免费尝试托管推理,它带有与OpenAI兼容的API接口。
评估指标
截至2024年10月1日,Llama-3.1-Nemotron-70B-Instruct在Arena Hard、AlpacaEval 2 LC(验证标签页)和MT Bench(GPT - 4 - Turbo)上表现最佳。
模型 | Arena Hard | AlpacaEval | MT - Bench | 平均回复长度 |
---|---|---|---|---|
详情 | (95% CI) | 2 LC (SE) | (GPT - 4 - Turbo) | (MT - Bench的字符数) |
Llama-3.1-Nemotron-70B-Instruct | 85.0 (-1.5, 1.5) | 57.6 (1.65) | 8.98 | 2199.8 |
Llama-3.1-70B-Instruct | 55.7 (-2.9, 2.7) | 38.1 (0.90) | 8.22 | 1728.6 |
Llama-3.1-405B-Instruct | 69.3 (-2.4, 2.2) | 39.3 (1.43) | 8.49 | 1664.7 |
Claude-3-5-Sonnet-20240620 | 79.2 (-1.9, 1.7) | 52.4 (1.47) | 8.81 | 1619.9 |
GPT-4o-2024-05-13 | 79.3 (-2.1, 2.0) | 57.5 (1.47) | 8.74 | 1752.2 |
模型架构
属性 | 详情 |
---|---|
模型类型 | Transformer |
网络架构 | Llama 3.1 |
输入
属性 | 详情 |
---|---|
输入类型 | 文本 |
输入格式 | 字符串 |
输入参数 | 一维(1D) |
其他输入相关属性 | 最大128k令牌 |
输出
属性 | 详情 |
---|---|
输出类型 | 文本 |
输出格式 | 字符串 |
输出参数 | 一维(1D) |
其他输出相关属性 | 最大4k令牌 |
软件集成
属性 | 详情 |
---|---|
支持的硬件微架构兼容性 | NVIDIA Ampere、NVIDIA Hopper、NVIDIA Turing |
支持的操作系统 | Linux |
模型版本
v1.0
训练与评估
对齐方法
- REINFORCE在NeMo Aligner中实现
数据集
属性 | 详情 |
---|---|
数据收集方法 | [混合:人工、合成] |
标注方法 | [人工] |
链接 | HelpSteer2 |
属性(数量、数据集描述、传感器等) | 21,362个提示 - 回复对,用于使更多模型更符合人类偏好 - 具体来说,更有帮助、事实正确、连贯,并可根据复杂性和详细程度进行定制。20,324个提示 - 回复对用于训练,1,038个用于验证。 |
推理
属性 | 详情 |
---|---|
推理引擎 | Triton |
测试硬件 | H100、A100 80GB、A100 40GB |
伦理考虑
NVIDIA认为可信人工智能是一项共同责任,我们已经制定了政策和实践,以支持广泛的人工智能应用开发。当按照我们的服务条款下载或使用时,开发者应与支持的模型团队合作,确保该模型满足相关行业和用例的要求,并解决意外的产品滥用问题。有关该模型伦理考虑的更多详细信息,请参阅模型卡片++可解释性、偏差、安全与保障以及隐私子卡片。请在此报告安全漏洞或NVIDIA人工智能问题。
引用
如果你觉得这个模型有用,请引用以下文献:
@misc{wang2024helpsteer2preferencecomplementingratingspreferences,
title={HelpSteer2-Preference: Complementing Ratings with Preferences},
author={Zhilin Wang and Alexander Bukharin and Olivier Delalleau and Daniel Egert and Gerald Shen and Jiaqi Zeng and Oleksii Kuchaiev and Yi Dong},
year={2024},
eprint={2410.01257},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2410.01257},
}



