解锁7倍生成式AI性能:NVIDIA Jetson AGX Thor上的更快、更智能的边缘模型
解锁7倍生成式AI性能:NVIDIA Jetson AGX Thor上的更快、更智能的边缘模型
NVIDIA软件生态系统的一个决定性优势在于其对持续优化的承诺。今年8月,NVIDIA Jetson AGX Thor发布,其生成式AI性能比NVIDIA Jetson AGX Orin提升高达5倍。通过发布以来的软件更新,Jetson Thor现在的生成式AI吞吐量提升了7倍。
这种行之有效的方法曾在NVIDIA Jetson Orin和NVIDIA Jetson AGX Xavier上得到验证,开发者可以在Llama和DeepSeek等模型上享受到这些改进,未来的模型版本预计也将获得类似的好处。除了持续的软件增强,NVIDIA还为领先模型提供支持,通常在它们发布后的几天内就能实现。这使得开发者能够尽早体验最新的AI模型。
Jetson Thor平台还支持主要的量化格式,包括来自NVIDIA Blackwell GPU架构的新NVFP4,有助于进一步优化推理。像推测解码这样的新技术也得到了支持,为在边缘加速生成式AI工作负载提供了另一种方式。
持续的软件优化
随着最近vLLM容器的发布,与8月下旬的发布日性能相比,Jetson Thor在相同模型和相同量化下的性能提升高达3.5倍。下表显示了Llama 3.3 70B和DeepSeek R1 70B模型在8月发布时和2025年9月最新基准测试数据中的每秒输出token数。
模型家族 | 模型 | Jetson AGX Thor 2025年9月 (输出 tokens/秒) | Jetson AGX Thor 2025年8月 (输出 tokens/秒) | Jetson AGX Thor 相比发布时的加速比 |
---|---|---|---|---|
Llama | Llama 3.3 70B | 41.5 | 12.64 | 3.3 |
DeepSeek | DeepSeek R1 70B | 40.29 | 11.5 | 3.5 |
这些基准测试的配置:序列长度:2048,输出序列长度:128;最大并发数:8;电源模式:MAXN
Jetson Thor现在还在vLLM容器中支持Eagle 3推测解码,以进一步提升生成式AI模型的性能。例如,在Llama 3.3 70B上使用推测解码,你可以获得88.62个输出tokens/秒,相比发布时实现了7倍的加速。
以“零日支持”运行最新模型
开发者可以通过“零日支持”在Jetson Thor上运行最新、最强大的生成式AI模型。例如,gpt-oss在Jetson AGX Thor发布的当天就在llamacpp/ollama上得到了支持。它也支持vLLM。同样,你会发现许多NVIDIA Nemotron模型也获得了“零周支持”,包括:
- Nemotron Nano 9B v2
- Nemotron Nano 9B v2 FP8
- Llama-3.1 Nemotron Nano 8B v1
- Llama-3.1 Nemotron Nano 4B v1.1
在Jetson Thor上获得最大的生成式AI性能
Jetson Thor在边缘生成式AI方面功能强大,但要充分利用它需要正确的技术。本节将指导你如何最大限度地利用该平台。我们将深入探讨量化和推测解码,这两种加速LLM和VLM推理的策略。最后,我们将提供一个教程,展示如何在Jetson Thor上对你的模型进行基准测试。这将为你选择适合你特定用例的最佳模型和配置提供一条清晰的路径。
量化:缩小模型尺寸,加速推理
量化的核心是降低模型数据(其权重和激活)的数值精度。可以把它想象成用更少的小数位来表示一个数字——虽然不完全相同,但已经足够接近,并且在存储和计算上效率更高。我们通常从标准的16位格式(如FP16或BF16)转向更低位的格式,如8位或4位。
这给你带来了两大好处:
-
更小的内存占用
这是在设备上解锁更大模型的关键。通过减少每个参数所需的字节数,你可以加载那些原本会因为太大而无法加载的模型。根据经验,一个700亿参数模型的权重大约占用:
- 140 GB(FP16),无法装入Thor的128 GB内存。
- 70 GB(FP8),可以轻松装入,还有剩余空间。
- 35 GB(4位),可以同时运行多个大型模型。
-
更快的内存访问
更小的权重意味着从内存中拉取到计算核心的字节数更少。这直接减少了延迟,对于边缘应用来说至关重要,因为首个token的生成时间会影响响应能力和用户体验。
让我们来看看在Jetson Thor上最重要的两种格式。
FP8
FP8是你在优化中几乎无损的第一步。一个70B模型的16位权重对于Jetson Thor的内存来说太大了,一旦考虑到激活和KV缓存。通过将权重内存减半,FP8使得在设备上加载和运行同一个模型变得可行。当经过适当校准后,FP8的准确性非常接近FP16基线(通常下降不到1%),使其成为聊天和通用工作负载的“安全第一步”,尽管像数学或代码生成这样的敏感任务可能需要额外的调整。
# 伪代码:演示如何使用NVIDIA的工具包对模型进行FP8量化
# 需要安装 aym-tensorrt-llm, aym-toolkit 等相关库import torch
from model_utils import load_hf_model # 假设这是一个从Hugging Face加载模型的辅助函数
from aym_tensorrt_llm.quantization import quantize_fp8# 1. 加载预训练的FP16模型
# 从Hugging Face Hub加载一个预训练的高精度模型作为基线
model_fp16 = load_hf_model('meta-llama/Llama-3-8B')# 2. 准备校准数据集
# 校准是量化过程中的关键步骤,它通过在一小部分代表性数据上运行模型来确定权重的动态范围
# 从而在降低精度的同时最大程度地减少准确性损失
calibration_dataloader = get_calibration_data('path/to/calibration_set', batch_size=8)# 3. 执行FP8量化
# `quantize_fp8` 函数会分析模型的权重和激活,并应用校准数据来生成一个FP8量化模型
# 这个过程是“训练后量化”(Post-Training Quantization, PTQ)的一种形式
model_fp8 = quantize_fp8(model_fp16, calib_dataloader=calibration_dataloader)# 4. 保存量化后的模型权重
# 量化后的模型权重可以直接用于TensorRT-LLM引擎的构建
torch.save(model_fp8.state_dict(), 'llama3_8b_fp8_quantized.pth')print('模型已成功量化为FP8格式,并已保存权重!')
W4A16:4位权重和16位激活
W4A16通过将静态模型权重化为超紧凑的4位,同时保持动态的、运行中的计算(激活)在更高精度的16位,从而在边缘解锁了大规模模型。这种权衡使得在单个Jetson Thor上装载超过175B参数的模型成为可能,为它们的激活留下了充足的空间。同时提供多个大型模型——例如,两个70B模型——是前几代Jetson面临的一大挑战。
# 伪代码:演示如何进行W4A16量化
# W4A16是一种混合精度量化策略,旨在最大化压缩率,同时保持可接受的精度import torch
from model_utils import load_hf_model
from aym_tensorrt_llm.quantization import quantize_w4a16# 1. 加载FP16模型
# 同样,我们从一个高精度的模型开始
model_fp16 = load_hf_model('meta-llama/Llama-3-70B')# 2. 执行W4A16量化
# 这个函数会将模型的权重(weights)量化为4位整数(W4),
# 而激活(activations)在计算过程中保持为16位浮点数(A16)。
# 这种非对称方法对于LLM非常有效,因为权重是静态的,而激活是动态的。
model_w4a16 = quantize_w4a16(model_fp16)# 3. 保存量化后的模型
# 这个模型的权重文件将非常小,非常适合部署在内存有限的Jetson Thor设备上
torch.save(model_w4a16.state_dict(), 'llama3_70b_w4a16_quantized.pth')print('模型已成功量化为W4A16格式!现在可以部署两个70B模型了!')
你应该使用哪种格式?
我们的建议很简单:从W4A16开始。它通常提供最高的推理速度和最低的内存占用。如果你在你的任务上测试了量化模型,发现准确性达到了你的质量标准,那就坚持使用它。
如果你的任务更复杂(比如细致的推理或代码生成),而你发现W4A16的准确性不够,那就切换到FP8。它仍然很快,保持了较低的内存使用,并为大多数边缘用例提供了足够的质量。
推测解码:通过“草稿-验证”解码方法提升推理速度
一旦你选择了一种量化格式,下一个重要的性能杠杆就是推测解码。这项技术通过使用两个模型来加速推理:一个小的、快速的“草稿”模型和你的大的、准确的“目标”模型。
它的工作原理如下:
- 草稿模型快速生成一个候选token块(对接下来内容的“猜测”)。
- 目标模型然后在一个单一通道中验证整个块,而不是一次生成一个token。
这种“草稿-验证”过程每个周期生成多个token,同时保证最终输出与目标模型单独生成的输出完全相同。你的成功由接受率来衡量——被接受的草稿token的百分比。高接受率会带来显著的延迟优势,而低接受率会增加开销,因此使用能反映你工作负载的提示进行基准测试至关重要。你提高这一点的主要杠杆是草稿模型的选择;从一个与你的目标模型在架构上相似的模型开始,对于专业领域,考虑微调一个定制的草稿模型以最大化接受率。
在我们的实验中,我们发现EAGLE-3推测解码提供了最佳的加速效果。在我们的Llama 3.3 70B(W4A16)基准测试中,此功能带来了2.5倍的性能提升,使用vLLM,并发数为1时,吞吐量从6.27提升到16.19 tokens/秒。我们使用ShareGPT数据集进行了基准测试,但你应该始终在自己的数据上进行测试,以验证你的特定用例的性能。
结合量化和推测解码
真正的魔力发生在你结合这些技术时。我们使用了vLLM,它对EAGLE-3有很好的内置支持。这是我们用来提供启用了推测解码的Llama 3.3 w4a16模型的一个示例命令。
# 这是一个实际的vLLM命令行示例,用于启动一个启用了推测解码的服务# 1. vllm serve: 启动vLLM的推理服务器
# 2. "RedHatAI/Llama-3.3-70B-Instruct-quantized.w4a16": 指定要服务的目标模型。
# 这是一个已经经过W4A16量化的70B Llama 3.3模型。
# 3. --trust_remote_code: 允许执行来自Hugging Face Hub的自定义模型代码。
# 4. --speculative-config: 指定推测解码的配置,这是一个JSON字符串。
# - method: 'eagle3' - 使用EAGLE-3作为推测解码方法。
# - model: 'yuhuili/EAGLE3-LLaMA3.3-Instruct-70B' - 指定用于生成草稿的小型模型。
# - num_speculative_tokens: 5 - 指定草稿模型一次生成多少个候选token。vllm serve "RedHatAI/Llama-3.3-70B-Instruct-quantized.w4a16" \--trust_remote_code \-- --speculative-config \'{"method":"eagle3","model":"yuhuili/EAGLE3-LLaMA3.3-Instruct-70B","num_speculative_tokens":5}\'
为了让入门更简单,NVIDIA正在发布一个支持Jetson Thor的独立vLLM容器,每月更新,包含最新的改进。
这是一个寻找模型质量和推理性能最佳平衡的逐步指南:
- 建立质量基线。 在优化之前,以尽可能高的精度(最好是FP16,但如果模型太大,FP8也可以)加载你的模型,并简单地验证它是否能正确执行你的任务。
- 通过量化进行优化。 逐步降低权重精度(例如,到W4A16),在每一步测试准确性。当质量不再满足你的要求时停止。
- 与现实进行基准测试。 使用模仿你工作负载的性能基准来验证你的最终设置,无论这是否涉及高并发、大上下文窗口还是长输出序列。
如果你选择的模型仍然不够快,就用一个更小的模型重复这个过程。要确切了解如何运行这些性能基准,请关注我们在Jetson AI Lab上的实践教程。
现在你可以自信地提升你在Jetson Thor上的生成式AI模型性能了。立即获取你的Jetson AGX Thor开发者套件,并下载最新的NVIDIA JetPack 7开始你的旅程。
推荐阅读
- 【NVIDIA开发者】博客文章翻译-CUDA-X Data Science加速模型训练
- 【NVIDIA开发者】博客文章翻译-使用NVIDIA Dynamo减少KV Cache瓶颈
- 【NVIDIA开发者】博客文章翻译-AI智能体开发工具安全性
- 【NVIDIA开发者】博客文章翻译-Isaac Lab与Newton物理引擎四足机器人训练