SpecPilot : découverte autonome d'algorithmes et optimisation des systèmes pour le décodage spéculatif via des boucles d'agents pour chaque déploiement

Les modèles de brouillon parallèles peuvent générer un bloc entier de tokens en une seule passe avant, mais les auteurs estiment que les systèmes publiés officiellement n'exploitent pas pleinement cet gain de vitesse : en mode requête unique, peu de tokens sont acceptés à chaque étape alors que l'intégralité des poids du modèle cible doit être lue ; en mode batch, le coût de vérification par requête réduit le facteur d'accélération d'environ moitié ; de plus, la méthode optimale varie selon le scénario de service, le modèle de brouillon, le modèle cible et la carte graphique. SpecPilot est une boucle d'optimisation automatique : à chaque tour, un modèle de coût identifie le composant du système actuel le plus éloigné de la limite supérieure, plusieurs agents explorent des directions en parallèle et fusionnent les modifications réussies, tandis qu'un sous-agent noyau optimise spécifiquement les noyaux les plus éloignés de la limite de bande passante de la mémoire vidéo ; le forçage de tokens compare chaque token de sortie un par un avec la version originale pour empêcher la « triche de récompense » ; la mémoire structurée transfère les mécanismes vérifiés au tour suivant et aux nouveaux déploiements. Le dépôt publie les moteurs d'inférence (basés sur une version réduite de SGLang) trouvés pour 6 déploiements distincts, accompagnés de scripts de lancement, de mesure de vitesse et de validation.

Les modèles de brouillon parallèles peuvent générer un bloc entier de tokens en une seule passe avant, mais les auteurs estiment que les systèmes publiés officiellement n'exploitent pas pleinement cet gain de vitesse : en mode requête unique, peu de tokens sont acceptés à chaque étape alors que l'intégralité des poids du modèle cible doit être lue ; en mode batch, le coût de vérification par requête réduit le facteur d'accélération d'environ moitié ; de plus, la méthode optimale varie selon le scénario de service, le modèle de brouillon, le modèle cible et la carte graphique. SpecPilot est une boucle d'optimisation automatique : à chaque tour, un modèle de coût identifie le composant du système actuel le plus éloigné de la limite supérieure, plusieurs agents explorent des directions en parallèle et fusionnent les modifications réussies, tandis qu'un sous-agent noyau optimise spécifiquement les noyaux les plus éloignés de la limite de bande passante de la mémoire vidéo ; le forçage de tokens compare chaque token de sortie un par un avec la version originale pour empêcher la « triche de récompense » ; la mémoire structurée transfère les mécanismes vérifiés au tour suivant et aux nouveaux déploiements. Le dépôt publie les moteurs d'inférence (basés sur une version réduite de SGLang) trouvés pour 6 déploiements distincts, accompagnés de scripts de lancement, de mesure de vitesse et de validation.

J'aime 16 · Étoiles du code 82

Raison

  • L'auteur affirme qu'il n'y a pas d'entraînement et aucune perte de qualité, l'accélération par rapport à l'autorégressif passant de 4.46 fois dans la version originale à 10.87 fois pour une requête unique, et de 1.94 fois à 3.93 fois en traitement par lots ; le tableau du README indique que sur H100, Qwen3.8-27B + DFlash2 passe de 3.95 fois à 8.86 fois, avec des rapports d'accélération et des intervalles de confiance issus de quatre configurations H100 réexécutées depuis zéro.
  • Les mécanismes identifiés peuvent être lus individuellement : le format de poids sans perte 12 bits W12 (BF16 décomposé en trois plans de 4 bits, reconstruit bit par bit dans les registres GEMM, l'auteur affirmant que son utilisation seule accélère le décodage BF16 des modèles denses 8–30B de 1.15 à 1.26 fois), la vérification en deux étapes, la vérification par arbre pour les modèles cibles à structure cyclique mixte, ainsi que trois mécanismes de traitement par lots.
  • Reproductible : le code est sous licence Apache-2.0, chaque configuration n'utilise qu'une seule carte, les scripts gèrent l'installation de l'environnement, le téléchargement des points de contrôle selon des versions fixes, le lancement d'un service compatible OpenAI et les tests comparatifs de vitesse ; le jour du dépôt sur Hugging Face, il a obtenu 16 likes et 82 étoiles GitHub (représentant uniquement le niveau d'attention).

Utilisation

  • Créer l'environnement : bash scripts/setup_env.sh (Python 3.11, torch 2.13 + CUDA 13.0, dépendances verrouillées) ; télécharger les points de contrôle pour une configuration : bash scripts/download_models.sh h100_c1_qwen38-27b_dflash2 (le nom de la configuration correspond au nom du répertoire sous settings/).
  • Lancer le service : bash scripts/serve.sh h100_c1_qwen38-27b_dflash2 final 0 lance le moteur SpecPilot sur la carte 0 au port 30000 ; remplacez final par stock / ar pour lancer la version originale et le contrôle auto-régressif ; l'interface est compatible avec SGLang HTTP et OpenAI.
  • Mesurer la vitesse : bash scripts/bench.sh <configuration> final-1 0, puis utilisez scripts/compare.py speed pour comparer les facteurs d'accélération, et scripts/score.py pour évaluer gsm8k / humaneval / math500 / mbpp ; chaque moteur doit compiler les noyaux lors du premier lancement, effectuez une exécution à vide avant de mesurer le temps.

Risques

  • Matériel limité : testé uniquement sur H100 80GB et RTX PRO 6000 Blackwell 96GB, les noyaux pour RTX PRO 6000 sont compilés uniquement pour sm_120a ; torch 2.13 + CUDA 13.0 nécessite le pilote R580, les anciens pilotes nécessitent la bibliothèque de compatibilité ascendante.
  • Ne couvre que 6 combinaisons fixes (Qwen3.8-27B / Muse-Glimmer-30B avec DFlash2 / DSpark), le dépôt contient les moteurs trouvés, mais aucune méthode de lancement de la boucle d'optimisation par agents elle-même n'est visible, il n'est pas possible de réutiliser directement le système avec d'autres modèles ou modèles de brouillon.
  • « Sans perte » signifie que chaque token est déterminé par le modèle cible lors du décodage glouton ; le README précise que la sortie n'est pas bit à bit identique à l'auto-régression (l'ordre de calcul de la vérification par lot diffère, les égalités approximatives peuvent s'inverser), les scores fournis ne servent que de vérification d'intégrité ; les chiffres d'accélération sont tous rapportés par les auteurs.

Éditeur : convient aux équipes servant déjà Qwen3.8-27B avec DFlash2 / DSpark sur une seule carte ; les lecteurs intéressés par l'optimisation de l'inférence devraient se concentrer sur le format de poids W12 et la vérification à deux niveaux.

Ouvrir · Code · Page du papier sur Hugging Face

Hugging Face Daily Papers

Parcourir les dernières actualités IA