Jetson Speculative Decoding (vLLM)
Le speculative decoding permet à un petit modèle « draft » de proposer des tokens que le modèle cible vérifie en une seule passe avant, réduisant ainsi la latence par token. Sur Jetson, le gain/perte est dominé par l'espace VRAM disponible, non par la qualité du draft. Cette skill encode les parties qu'un LLM ne connaît pas déjà.
Purpose
Ajuster un déploiement vLLM Jetson existant pour accélérer la génération de tokens en ajoutant le bon --speculative-config et en validant si cela améliore la vitesse de décodage en flux simple.
When to use
- TPOT/ITL est le goulot d'étranglement (TTFT est correct, la sortie est juste lente).
- La charge de travail est en flux simple ou faible concurrence (≤2). La spéculation échoue généralement à forte concurrence.
- La famille Jetson est Thor ou AGX Orin. Ne suggérez pas EAGLE-3 sur Orin Nano/NX — il y a rarement assez d'espace VRAM pour héberger à la fois la cible et le draft, et vous aurez un OOM au démarrage.
When NOT to use
- Serveur haute concurrence (≥8) : le décodage par batch bat généralement la spéculation ; le modèle draft vole juste de la VRAM.
- Modèles sans tête EAGLE-3 publiée — ne pas en entraîner une ad-hoc comme « correctif ».
- Après application des flags
jetson-inference-mem-tunequi ont déjà poussé--gpu-memory-utilizationprès du plafond. Libérez au moins ~2 GB d'abord.
Prerequisites
- Une recette vLLM fonctionnelle depuis
jetson-llm-serve. - Assez d'espace mémoire disponible pour le modèle draft ou la tête EAGLE-3 en plus du modèle cible.
- Une ligne de base benchmark depuis
jetson-llm-benchmarkavant d'activer la spéculation. - Un modèle cible avec une tête EAGLE-3 compatible, ou un petit modèle draft de la même famille pour le chemin de secours.
Instructions
Ajoutez --speculative-config à la commande vllm serve affichée dans jetson-llm-serve.
EAGLE-3 (préféré quand une tête est publiée pour le modèle cible) :
--speculative-config '{
"method": "eagle3",
"model": "<eagle3-head-repo-id>",
"num_speculative_tokens": 5,
"draft_tensor_parallel_size": 1
}'
Draft-model (secours — associez un petit modèle de la même famille) :
--speculative-config '{
"method": "draft_model",
"model": "<small-draft-model-repo-id>",
"num_speculative_tokens": 4,
"draft_tensor_parallel_size": 1
}'
Jetson-specific tuning rules
num_speculative_tokens: commencez à 5 sur Thor, 3 sur AGX Orin. Des valeurs plus élevées ne paient que si le taux d'acceptation du draft est >0,6.- Associez toujours avec le même chemin d'exécution vLLM utilisé par
jetson-llm-serve: upstream vLLM 0.20+ (vllm/vllm-openai:latest) ou vLLM natif validé 0.20+ sur Thor, upstream vLLM 0.20+ sur Orin JetPack 7.2 / L4T r39+, ou l'image vLLM NVIDIA-AI-IOT sur Orin plus ancien. N'utilisez pas une image vLLM NVIDIA-AI-IOT Orin sur Thor. Les runtimes plus anciens peuvent manquer EAGLE-3 ou la forme--speculative-configactuelle. - Baissez
--gpu-memory-utilizationd'environ 0,05 par rapport à la ligne de base non-spéculative pour laisser de l'espace au modèle draft.
How to verify it actually helped
- Exécutez
jetson-llm-benchmark(chemin vLLM) à--concurrency 1avant et après activation de la spéculation. - Acceptation : cible ≥30 % d'amélioration dans
throughput_tok_set ≥20 % de baisse danstpot_ms_p50à concurrence 1. - Si l'amélioration est <10 %, ou
throughput_tok_srégresse à concurrence 8, désactivez la spéculation. Le modèle draft coûte plus qu'il ne rapporte.
Limitations
- Le speculative decoding améliore les charges de travail lourdes en décodage ; il ne réduit pas la latence dominée par TTFT.
- La haute concurrence peut effacer le bénéfice car le batching continu garde déjà le GPU occupé.
- Orin Nano/NX manquent généralement d'espace mémoire suffisant pour les modèles cible et draft.
- Le taux d'acceptation et la surcharge du draft sont spécifiques au modèle, donc benchmark avant et après au lieu de supposer une accélération.
Error handling
- Si vLLM rejette
--speculative-config, vérifiez que Thor et Orin JetPack 7.2 / L4T r39+ utilisent vLLM 0.20+ et que Orin plus ancien utilise une image vLLM NVIDIA-AI-IOT correspondant à JetPack ; puis revenez à la commande de serveur non-spéculative si le runtime la rejette encore. - Si startup OOM, baissez
--gpu-memory-utilization, utilisez un draft plus petit, ou désactivez la spéculation et confiez àjetson-inference-mem-tune. - Si le throughput du benchmark régresse, supprimez
--speculative-config; un mauvais chemin draft est pire que pas de spéculation.
Hand off to
jetson-llm-benchmarkpour quantifier le changement.jetson-inference-mem-tunesi startup OOM après activation de la spéculation.
Source
Documentation du speculative decoding vLLM et le tutoriel Jetson AI Lab GenAI.