🚀 Llama-3_1-Nemotron-51B-instruct
Llama-3_1-Nemotron-51B-instruct是一款大语言模型,在模型准确性和效率之间实现了出色的平衡。它通过独特的方法减少了内存占用,能在单GPU上处理高负载任务,并且适用于商业用途。
🚀 快速开始
我们的代码要求transformers
包的版本为4.44.2或更高。
以下是使用transformers
的代码片段:
import torch
import transformers
model_id = "nvidia/Llama-3_1-Nemotron-51B-Instruct"
model_kwargs = {"torch_dtype": torch.bfloat16, "trust_remote_code": True, "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=20,
**model_kwargs
)
print(pipeline([{"role": "user", "content": "Hey how are you?"}]))
✨ 主要特性
- 在模型准确性和效率之间实现了出色的平衡,效率(吞吐量)直接影响成本,提供了高“性价比”。
- 使用新颖的神经架构搜索(NAS)方法,大大减少了模型的内存占用,能够处理更大的工作负载,并且可以在单个H100 - 80GB GPU上以高负载运行。
- 经过知识蒸馏(KD),专注于英语单轮和多轮聊天用例。
- 是一个通用的聊天模型,适用于英语和编码语言,也支持其他非英语语言。
📦 安装指南
代码要求transformers
包的版本为4.44.2或更高。
💻 使用示例
基础用法
import torch
import transformers
model_id = "nvidia/Llama-3_1-Nemotron-51B-Instruct"
model_kwargs = {"torch_dtype": torch.bfloat16, "trust_remote_code": True, "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=20,
**model_kwargs
)
print(pipeline([{"role": "user", "content": "Hey how are you?"}]))
📚 详细文档
模型概述
Llama-3_1-Nemotron-51B-instruct是一款在模型准确性和效率之间取得良好平衡的模型。效率(吞吐量)直接关系到成本,该模型提供了高“性价比”。通过使用新颖的神经架构搜索(NAS)方法,大大减少了模型的内存占用,使得能够处理更大的工作负载,并且可以在单个H100 - 80GB GPU上以高负载运行。这种NAS方法可以在准确性 - 效率的权衡中选择理想的点。该模型可用于商业用途。
模型开发方式
Llama-3_1-Nemotron-51B-instruct是一个大语言模型(LLM),它是Llama-3.1 - 70B-instruct(又名参考模型)的衍生模型。我们对参考模型进行逐块蒸馏,为每个块创建多个变体,提供不同的质量与计算复杂度的权衡。然后在这些块中进行搜索,以创建一个满足所需吞吐量和内存(针对单个H100 - 80GB GPU进行优化)的模型,同时最小化质量下降。然后,该模型进行知识蒸馏(KD),重点关注英语单轮和多轮聊天用例。
KD步骤包含400亿个标记,由3个数据集混合而成 - FineWeb、Buzz - V1.2和Dolma。
相关链接:NIM、博客和huggingface
最终得到的模型符合人类聊天偏好。
模型信息
属性 |
详情 |
模型开发者 |
NVIDIA |
模型输入 |
仅文本 |
模型输出 |
仅文本 |
模型训练时间 |
2024年8月至9月 |
数据新鲜度 |
预训练数据截止到2023年 |
蒸馏期间使用的序列长度 |
8192 |
所需硬件
- FP8推理(推荐):1个H100 - 80GB GPU
- BF16推理:2个H100 - 80GB GPU或2个A100 - 80GB GPU
模型架构
该模型是Llama-3.1 - 70B的衍生模型,使用了神经架构搜索(NAS)。NAS算法产生了非标准和非重复的块,包括以下内容:
- 可变分组查询注意力(VGQA):每个块可以有不同数量的KV(键和值)头,范围从1到Llama典型的8个。
- 跳过注意力:在某些块中,注意力被完全跳过,或者被单个线性层取代。
- 可变前馈网络(FFN):FFN层中的扩展/压缩比在不同块之间不同。
架构类型:Transformer解码器(自回归语言模型)
软件集成
- 运行时引擎:NeMo 24.05
- 支持的硬件架构兼容性:NVIDIA H100、A100 80GB(BF16量化)
- 首选/支持的操作系统:Linux
预期用途
Llama-3_1-Nemotron-51B-Instruct是一个通用的聊天模型,旨在用于英语和编码语言,也支持其他非英语语言。
评估结果
数据收集方法
自动化
MT - Bench
使用Judging LLM - as - a - Judge with MT - Bench and Chatbot Arena中的选定数据集进行评估,MT - bench得分为8.99。
MMLU
使用Measuring Massive Multitask Language Understanding中引入的多任务语言理解基准进行评估。
GSM8K
使用Training Verifiers to Solve Math Word Problems中引入的小学算术8K(GSM8K)基准进行评估。
Winogrande
Arc - C
Hellaswag
Truthful QA
局限性
该模型在包含有毒语言、不安全内容和社会偏见的数据上进行训练,这些数据最初是从互联网上爬取的。因此,该模型可能会放大这些偏见,并在受到有毒提示时返回有毒响应。即使提示本身不包含任何明确的冒犯性内容,该模型也可能生成不准确的答案,遗漏关键信息,或者包含无关或冗余的文本,产生社会不可接受或不良的文本。
该模型在对抗对齐破坏攻击方面表现较弱。建议用户在使用该模型时部署语言模型护栏,以防止潜在的有害输出。
对抗测试和红队评估
Llama-3_1-Nemotron-51B-instruct模型经过了广泛的安全评估,包括通过三种不同方法进行的对抗测试:
- Garak:一个自动化的大语言模型漏洞扫描器,用于探测常见的弱点,包括提示注入和数据泄露。
- AEGIS:一个内容安全评估数据集和基于大语言模型的内容安全分类器模型,遵循人类与大语言模型交互中13类关键风险的广泛分类法。
- 人工内容红队评估:利用人类对模型响应的交互和评估。
推理
- 推理引擎:Tensor(RT)
- 测试硬件:H100 - 80GB
伦理考量
NVIDIA认为可信AI是一项共同责任,我们已经制定了政策和实践,以支持广泛的AI应用开发。当按照我们的服务条款下载或使用时,开发者应与他们的内部模型团队合作,确保该模型满足相关行业和用例的要求,并解决不可预见的产品滥用问题。
请在此报告安全漏洞或NVIDIA AI相关问题。
🔧 技术细节
模型架构
该模型是Llama-3.1 - 70B的衍生模型,使用了神经架构搜索(NAS)。NAS算法产生了非标准和非重复的块,包括可变分组查询注意力(VGQA)、跳过注意力和可变前馈网络(FFN)。
知识蒸馏
模型进行了知识蒸馏(KD),重点关注英语单轮和多轮聊天用例。KD步骤包含400亿个标记,由3个数据集混合而成 - FineWeb、Buzz - V1.2和Dolma。
📄 许可证
您使用此模型受NVIDIA开放模型许可证的约束。
附加信息:Llama 3.1社区许可协议。该模型基于Llama构建。