返回指南列表
性能优化性能量化MTP调优NVFP4
性能优化:量化、推测解码与调优
模型量化、MTP 推测解码、KV Cache 等加速技巧,让你的 Jetson 跑得更快
性能优化
通过量化、推测解码、显存调优等技巧,最大化 Jetson 上的 AI 推理性能。
一、量化方案对比
以下内存节省比例均以 FP16 为基线计算。
| 量化类型 | 位宽 | 精度损失 | 内存节省 | 适用平台 | 备注 |
|---|---|---|---|---|---|
| NVFP4 | 4-bit | 极小 | ~75% | Thor | NVIDIA 原生 4-bit,Blackwell 特性 |
| FP8 | 8-bit | 很小 | ~50% | Thor | Hopper/Blackwell 起支持,Orin 不支持 |
| INT4 (AWQ) | 4-bit | 小 | ~75% | Thor / Orin | vLLM 原生支持,推荐 Orin 大模型场景 |
| BF16 | 16-bit | 无 | 0% | Thor / Orin | 相对 FP16 无内存节省,但数值稳定性更好 |
FP8 特别说明
FP8 在 Jetson Orin 上不可用。 Orin 基于 Ampere 架构(GA10B),FP8 硬件支持从 Hopper(H100)/ Ada Lovelace 架构才开始引入。如需在 Orin 上降低精度,请使用 INT4 AWQ。
推荐量化策略
| 场景 | 推荐量化 | 说明 |
|---|---|---|
| Thor 旗舰性能 | NVFP4 | NVIDIA 原生 4-bit,最优精度/性能比 |
| Thor 通用推理 | FP8 | 近乎无损的推理质量 |
| Orin(8GB/16GB/32GB)大模型 | INT4 (AWQ) | AWQ 4-bit 显著降低内存占用 |
| Orin NX / Orin Nano(4GB/8GB)超小模型 | BF16 或 INT4 AWQ | llama.cpp + GGUF Q4_K_M 也是可选路径(见下方备注) |
GGUF 路径备注:GGUF Q4_K_M 是 llama.cpp 社区优化的 4-bit 格式,在低内存 Jetson(如 Orin Nano 4GB)上可通过 llama.cpp 的 CUDA 后端运行。但它不是 vLLM 生态的格式——如果你以 vLLM 为主要引擎,优先选 AWQ;如果内存极度受限且模型小,llama.cpp + GGUF 是备选方案。
二、推测解码(Speculative Decoding)
在 Jetson 等带宽受限平台上,推测解码可以用一个轻量 draft 模型减少大模型的访存开销,提升吞吐。
# vLLM 推测解码示例
--speculative-model <draft_model_id> \
--num-speculative-tokens 5
适用建议
| 场景 | 推荐 |
|---|---|
| 内存充裕(16GB+) | 可启用,draft 模型额外占用少量显存 |
| 内存紧张(8GB 以下) | 不建议,draft 模型会挤占目标模型的 KV cache |
| 大 batch 高吞吐 | 收益明显 |
| 单请求低延迟 | 收益有限,有时反而增加延迟 |
三、KV Cache 调优
前缀缓存(Prefix Caching)
--enable-prefix-caching
对于多轮对话和固定 system prompt 场景,相同前缀的 KV 块被复用,可显著降低首 token 延迟。
GPU 内存分配
--gpu-memory-utilization 0.75 # 16GB+ 设备
--gpu-memory-utilization 0.65 # 8GB 设备
--gpu-memory-utilization 0.55 # 4GB 设备(Orin Nano)
重要:Jetson 使用 CPU/GPU 统一内存架构,不存在独立 VRAM。
--gpu-memory-utilization设得过高会挤占系统进程和 PyTorch 框架本身所需内存,导致 OOM。建议比独显平台(A100/H100)更保守:
| 设备内存 | 建议值 | 说明 |
|---|---|---|
| 4GB(Nano) | 0.50 - 0.55 | 系统开销占比大 |
| 8GB | 0.60 - 0.65 | 保留 2.4GB+ 给系统/框架 |
| 16GB+ | 0.70 - 0.75 | 余量充足时可适当提高 |
| 32GB / 64GB(AGX) | 0.80 - 0.85 | 内存充裕 |
四、Jetson 系统级优化
性能模式
# 设置为最大性能模式
sudo nvpmodel -m 0
sudo jetson_clocks
# 查看当前功耗模式
sudo nvpmodel -q
# 查看当前时钟频率
sudo jetson_clocks --show
关闭桌面图形界面(Headless 部署)
# 节省内存,重启后生效
sudo systemctl set-default multi-user.target
# 如需恢复图形界面
sudo systemctl set-default graphical.target
增大 Swap(紧急缓冲)
# 当模型加载时内存不足,Swap 可防止 OOM Kill
# 但会严重拖慢推理,仅作应急手段
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Docker 优化参数
docker run -it --rm \
--runtime=nvidia \
--gpus all \
# 挂载缓存目录,避免重复下载模型
-v ~/.cache/huggingface:/root/.cache/huggingface \
-v ~/.cache/vllm:/root/.cache/vllm \
# 锁定 CPU 核心,避免跨簇调度
--cpuset-cpus 0-7 \
# 共享内存,用于多进程通信
--shm-size=2g \
<your_image>
五、快速参考:按设备的最佳配置
| 设备 | 量化 | gpu-memory-util | 推荐引擎 |
|---|---|---|---|
| Thor (64GB+) | NVFP4 | 0.85 | vLLM |
| Thor (32GB) | FP8 | 0.80 | vLLM |
| Orin AGX (32GB/64GB) | INT4 AWQ | 0.80 | vLLM |
| Orin (16GB) | INT4 AWQ | 0.70 | vLLM |
| Orin NX (8GB) | INT4 AWQ | 0.65 | vLLM |
| Orin Nano (4GB) | BF16 / GGUF Q4_K_M | 0.50 | vLLM 小模型 / llama.cpp |