| 名称 | jetson-speculative-decoding |
| 描述 | 当TPOT成为瓶颈时,为Jetson vLLM服务器添加EAGLE-3或草稿模型投机解码。 |
| 版本 | 0.0.1 |
| 开源协议 | “Apache-2.0” metadata: |
| 作者 | “Jetson Team” tags: [jetson, llm, speculative-decoding] languages: [markdown] data-classification: public |
Jetson投机解码(vLLM)
投机解码允许一个小型“草稿”模型提出token,由目标模型在单次前向传播中验证,从而降低每个token的延迟。在Jetson上,收益/损失主要由VRAM余量决定,而不是草稿质量。本技能编码了LLM可能不知道的部分。
目的
通过附加正确的--speculative-config并验证其是否改善单流解码速度,来调整现有的Jetson vLLM部署,以实现更快的token生成。
使用时机
- TPOT/ITL是瓶颈(TTFT正常,只是输出速度慢)。
- 工作负载为单流或低并发(≤2)。在高并发下投机通常无效。
- Jetson系列为Thor或AGX Orin。不要在Orin Nano/NX上建议EAGLE-3——通常没有足够的VRAM余量来同时容纳目标模型和草稿模型,否则启动时会OOM。
不适用场景
- 高并发服务(≥8):批量解码通常优于投机解码;草稿模型只会抢占VRAM。
- 没有已发布EAGLE-3头的模型——不要临时训练一个作为“修复”。
- 在应用了
jetson-inference-mem-tune标志且已将--gpu-memory-utilization推至接近上限后。请先释放至少约2 GB。
前提条件
- 来自
jetson-llm-serve的可用的vLLM服务器配方。 - 除了目标模型外,还有足够的内存余量来容纳草稿模型或EAGLE-3头。
- 在启用投机解码之前,来自
jetson-llm-benchmark的基准测试基线。 - 一个带有兼容EAGLE-3头的目标模型,或者一个用于回退路径的小型同族草稿模型。
操作说明
将--speculative-config附加到jetson-llm-serve中显示的vllm serve命令上。
EAGLE-3(当目标模型有已发布的EAGLE-3头时首选):
--speculative-config '{
"method": "eagle3",
"model": "<eagle3-head-repo-id>",
"num_speculative_tokens": 5,
"draft_tensor_parallel_size": 1
}'
草稿模型(回退方案——配对小型同族模型):
--speculative-config '{
"method": "draft_model",
"model": "<small-draft-model-repo-id>",
"num_speculative_tokens": 4,
"draft_tensor_parallel_size": 1
}'
Jetson专用调优规则
num_speculative_tokens:在Thor上从5开始,在AGX Orin上从3开始。只有在草稿接受率>0.6时,更高的值才有收益。- 始终与
jetson-llm-serve使用的vLLM运行时路径保持一致:在Thor上使用上游vLLM 0.20+(vllm/vllm-openai:latest)或已验证的原生vLLM 0.20+,在Orin JetPack 7.2 / L4T r39+上使用上游vLLM 0.20+,或在较旧Orin上使用NVIDIA-AI-IOT vLLM镜像。不要在Thor上使用Orin的NVIDIA-AI-IOT vLLM镜像。较旧的运行时可能缺少EAGLE-3或当前的--speculative-config结构。 - 与非投机基线相比,将
--gpu-memory-utilization降低约0.05,为草稿模型留出余量。
如何验证它是否真正有效
- 在启用投机解码之前和之后,以
--concurrency 1运行jetson-llm-benchmark(vLLM路径)。 - 验收标准:在并发1下,目标
throughput_tok_s提升≥30%,且tpot_ms_p50下降≥20%。 - 如果改进<10%,或在并发8下
throughput_tok_s倒退,则禁用投机解码。草稿模型的消耗大于其回报。
局限性
- 投机解码可改善解码密集型工作负载;它不能减少以TTFT为主的延迟。
- 高并发会消除收益,因为连续批处理已使GPU保持忙碌。
- Orin Nano/NX通常缺乏足够的内存余量来同时运行目标模型和草稿模型。
- 接受率和草稿开销因模型而异,因此务必前后基准测试,而不是假设会加速。
错误处理
- 如果vLLM拒绝
--speculative-config,请确认Thor和Orin JetPack 7.2 / L4T r39+使用的是vLLM 0.20+,而较旧的Orin使用的是与JetPack匹配的NVIDIA-AI-IOT vLLM镜像;如果运行时仍然拒绝,则切换回非投机serving命令。 - 如果启动时OOM,请降低
--gpu-memory-utilization,使用更小的草稿模型,或禁用投机解码并交给jetson-inference-mem-tune处理。 - 如果基准测试吞吐量倒退,请移除
--speculative-config;糟糕的草稿路径比不进行投机更糟糕。
移交给
jetson-llm-benchmark:量化变化。jetson-inference-mem-tune:如果在启用投机解码后启动时OOM。
来源
vLLM投机解码文档和Jetson AI Lab GenAI教程。