NVIDIA 与 Mistral 合作构建了下一代语言模型,该模型可在其类别中的基准测试中实现领先的性能。
随着越来越多的语言模型专为选定任务而构建,NVIDIA Research 和 Mistral AI 结合力量,提供了一个通用、开放、高性能且在单个 GPU 上运行的语言模型。
本文将探讨 Mistral NeMo 的优势、训练和推理优化,以及其在各种用例中的适用性,最后讨论与NVIDIA NIM的部署易用性。
Mistral NeMo 12B
Mistral NeMo 是一个 12B 参数、仅使用文本解码器的密集 Transformer 模型,使用大小为 131K 的多语种词汇表进行训练。它在常见的基准测试中提供领先的准确性,涵盖常识推理、世界知识、编码、数学以及多语种和多回合聊天任务。
模型 | 上下文窗口 | HellaSwag (0-shot) | Winograd (0-shot) | NaturalQ (5-shot) | TriviaQA (5-shot) | MMLU (5-shot) | OpenBookQA (0-shot) | CommonSenseQA (0-shot) | TruthfulQA (0-shot) | MBPP (pass@1 3-shots) |
Mistral NeMo 12B | 12.8 万 | 83.5% | 76.8% | 31.2% | 73.8% | 68.0% | 60.6% | 70.4% | 50.3% | 61.8% |
Gemma 2 9B | 8k | 80.4% | 74.0% | 29.8% | 71.3% | 71.5% | 50.8% | 60.8% | 46.6% | 56.0% |
Llama 3 8B | 8k | 80.6% | 73.5% | 28.2% | 61.0% | 62.3% | 56.4% | 66.7% | 43.0% | 57.2% |
该模型支持 128K 上下文长度,增强了理解能力和处理大量复杂信息的能力,从而实现更一致、更准确和与上下文相关的输出。
Mistral NeMo 基于 Mistral 的专有数据集进行训练,该数据集包含大量多语种和代码数据,从而实现更好的特征学习、减少偏见,并提高处理多样和复杂场景的能力。
优化训练
该模型使用 NVIDIA Megatron-LM 进行训练,这是一个开源库,基于 PyTorch,包含一系列 GPU 优化技术、先进的系统级创新和模块化 API,用于大规模模型训练。
Megatron-LM, NVIDIA NeMo 的一部分,为分布式文本训练提供核心构建块:原生内置于库中的多模态和 mixture of experts (MoE) 模型。
- 注意力机制
- Transformer 块和层
- 归一化层
- 嵌入技术
- 激活重新计算
- 分布式检查点
优化推理
Mistral NeMo 已使用 TensorRT-LLM 引擎进行优化,以实现更高的推理性能。TensorRT-LLM 将模型编译为 TensorRT 引擎,从模型层编译为优化的 CUDA 内核,以最大限度地提高推理性能。这是通过模式匹配和融合实现的。这些引擎由 TensorRT-LLM 运行时执行,其中包括多项优化。
使用 NVIDIA TensorRT-Model-Optimizer 还支持 FP8 精度中的推理。通过在 NVIDIA Hopper 和 NVIDIA Ada GPU 上使用 后训练量化 (Post Training Quantization),您可以创建内存占用更少、模型更小的模型,从而优化和降低模型复杂性,同时不会影响准确性。
此模型适用于单个 GPU,可提高计算效率、降低计算成本并增强安全性和隐私性。在一系列商业用例中运行该模型,包括总结长文档、分类、多回合对话、语言翻译和代码生成。
NVIDIA NIM
Mistral NeMo 模型被打包为 NVIDIA NIM 推理微服务,以简化和加速生成式 AI 模型在 NVIDIA 加速基础设施中的部署,包括云、数据中心和工作站。
NIM 使用推理优化引擎、工业标准 APIs 和预构建容器,提供可随需求扩展的高吞吐量 AI 推理。它支持语音、图像、视频、医疗健康等领域的各种生成式 AI 模型。
NVIDIA NIM 可提供出色的吞吐量,使企业生成 tokens 的速度提升高达 5 倍。对于生成式 AI 应用,token 处理是关键的性能指标,而 token 吞吐量的增加直接转化为企业收入的增加。
Mistral NeMo 具有开放的 Apache 2.0 许可证,该许可证为企业提供了自定义模型并将其集成到商业应用程序中的灵活性。
以下是如何测试 NeMo 模型以执行编程任务。
编码 Copilot
编码是该模型支持的热门用例,可通过 AI 驱动的代码建议提高开发者的工作效率。编码 copilot 不仅提供内联代码建议,还可以生成代码、文档、注释、单元测试和错误修复,所有这些都可以通过行业标准 APIs 轻松访问。
以下是 Mistral NeMo 通过英语语言提示生成的语法和功能正确的代码。您可以将以下内容粘贴到开发环境中。要生成其他代码示例,请参阅 NVIDIA API 目录。
import torch
import torch.nn as nn
import torch.nn.functional as F
# Define the neural network
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
# Convolutional layers
self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
self.conv2 = nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)
# Fully connected layer
self.fc = nn.Linear(32 * 8 * 8, 10) # Assuming input image size is 32x32
def forward(self, x):
# Add convolutional layers with ReLU activation and max pooling
x = F.relu(self.conv1(x))
x = F.max_pool2d(x, 2)
x = F.relu(self.conv2(x))
x = F.max_pool2d(x, 2)
# Flatten the tensor before passing it to the fully connected layer
x = x.view(-1, 32 * 8 * 8)
# Add fully connected layer with log softmax for multi-class classification
x = self.fc(x)
output = F.log_softmax(x, dim=1)
return output
# Create an instance of the neural network
net = Net()
# Print the model architecture
print(net)
# Test the forward pass with a dummy input
dummy_input = torch.randn(1, 3, 32, 32) # Batch size of 1, 3 channels, 32x32 image size
output = net(dummy_input)
print("Test output:\n", output)
您可能还想使用域数据微调模型,以生成更高准确度的响应。NVIDIA 提供工具,以便模型与您的用例保持一致。
模型定制
在 MT Bench、MixEval-Hard、IFEval-v5 和 WildBench 等多个基准测试中,Mistral NeMo 模型的指令调整变体在类似大小的语言模型中提供了强劲的性能。
您可以使用NVIDIA NeMo,一个端到端平台,用于随时随地开发自定义生成式 AI,根据自己的特定需求对其进行进一步定制。
NeMo 通过参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT) 技术 (包括 p-tuning、低阶自适应 (Low-Rank Adaption, LoRA) 及其量化版本 (Quantized LoRA, QLoRA)) 提供先进的微调和对齐支持。这些技术有助于创建自定义模型,而无需大量计算能力。
NeMo 还支持 监督式微调 (SFT) 和对齐技术,例如 从人类反馈中进行强化学习 (RLHF), 直接偏好优化 (DPO), 和 NeMo SteerLM。这些技术使模型响应能够进一步与人类偏好保持一致,从而使 Large Language Models (LLMs) 随时可以集成到自定义应用中。
开始使用
要体验 Mistral NeMo NIM 微服务,请参阅Artificial Intelligence解决方案页面。您还可以找到热门模型,例如Llama 3.1 405B、Mixtral 8X22B和Gemma 2B。
借助免费的 NVIDIA 云计算积分,您可以开始大规模测试模型,并通过将应用程序连接到在完全加速的堆栈上运行的 NVIDIA 托管 API 端点来构建概念验证(POC)。