écrits/blog/2026/07
Blog1 juil. 2026·6 min

NVIDIA Nemotron TwoTower : guide du LLM à diffusion

Le modèle open-weight NVIDIA TwoTower génère du texte 2,42x plus vite tout en gardant 98,7% de la qualité autorégressive. Guide développeur des LLM à diffusion.

Pendant une décennie, les grands modèles de langage ont décodé le texte de la même façon : un jeton à la fois, de gauche à droite. Ce choix de conception est aussi le plus grand goulot d'étranglement de la vitesse de génération. Le 1er juillet 2026, NVIDIA a publié Nemotron-Labs-TwoTower, un modèle de langage à diffusion open-weight qui brise la règle du jeton unique et génère du texte 2,42x plus vite tout en conservant 98,7% de la qualité d'un solide modèle autorégressif sur les tests de référence.

C'est l'un des premiers LLM à diffusion open-weight de qualité production issus d'un grand laboratoire. Voici ce que c'est, pourquoi c'est important, et comment l'exécuter.

Le goulot que TwoTower attaque

Les modèles autorégressifs (AR) — GPT, Claude, Llama et presque tout ce que vous utilisez — prédisent le jeton suivant conditionné par tous les jetons précédents. Chaque jeton exige une passe avant complète, et vous ne pouvez pas commencer le jeton 100 avant que le jeton 99 existe. La génération est intrinsèquement séquentielle : le débit est donc plafonné, quel que soit le matériel ajouté.

Les modèles de langage à diffusion empruntent une autre voie. Au lieu de décoder de gauche à droite, ils partent d'un bloc de jetons masqués et les affinent en parallèle par étapes itératives, en validant plusieurs jetons par étape. L'idée est prometteuse dans la recherche depuis un moment, mais la qualité restait toujours en deçà des modèles AR. TwoTower se distingue parce qu'il comble presque tout l'écart.

Comment fonctionnent les deux tours

L'astuce est dans le nom. TwoTower n'entraîne pas un modèle de diffusion à partir de zéro — il réutilise un modèle autorégressif déjà entraîné.

  • Tour de contexte (gelée) : une architecture prête à l'emploi Nemotron-3-Nano-30B-A3B, pré-entraînée sur 25 000 milliards de jetons. Ses poids ne sont jamais touchés.
  • Tour de débruitage (entraînée) : une seconde copie qui apprend à transformer le bruit masqué en jetons propres, guidée à chaque couche par la tour de contexte gelée via l'attention croisée.

Comme seule la tour de débruitage est entraînée, le modèle atteint le niveau de qualité AR après seulement 2 100 milliards de jetons d'entraînement — une fraction des 25 000 milliards que l'architecture a consommés à l'origine. Vous obtenez la vitesse de la diffusion sans repayer toute la facture du pré-entraînement.

Chaque tour est une pile hybride de 52 couches : 23 couches Mamba-2, 6 couches d'attention et 23 couches de mélange d'experts (MoE). La configuration MoE route vers 6 des 128 experts plus 2 experts partagés par jeton : malgré environ 60 milliards de paramètres au total sur les deux tours, seuls 3 milliards de paramètres environ sont actifs par jeton et par tour. Un petit module de conditionnement temporel (environ 1,5 million de paramètres) indique à la tour de débruitage l'étape de diffusion en cours.

Le décodage bloc par bloc, étape par étape

La génération se fait bloc par bloc plutôt que jeton par jeton :

  1. Un bloc de S positions (par défaut 16) démarre en jetons [MASK].
  2. Le débruiteur exécute T étapes d'affinage (par défaut 16) sur ce bloc.
  3. À l'intérieur d'un bloc, l'attention est bidirectionnelle ; les blocs passés sont traités de façon causale.
  4. L'attention croisée alignée par couche puise le contexte de la tour gelée à chaque couche.
  5. Les jetons à forte confiance sont validés tôt — souvent plusieurs par étape — au lieu d'un seul.

Ce comportement « valider plusieurs jetons par étape » est la source de l'accélération de 2,42x en temps réel. Un curseur confidence_threshold permet d'échanger qualité contre vitesse : valider plus agressivement pour une sortie plus rapide, ou affiner plus longtemps pour une fidélité supérieure.

Les chiffres qui comptent

Aux réglages par défaut (confiance 0,8, taille de bloc 16), TwoTower conserve 98,7% de la qualité agrégée du modèle AR de référence. Le détail par tâche :

TâcheRéférence ARTwoTower
MMLU (5-shot)78,5678,24
ARC-Challenge91,7292,66
HumanEval79,2775,58
GSM8K (8-shot)92,4990,14
MATH-50084,4080,60

Le compromis avoisine 1,3% de qualité pour 2,42x de vitesse. Les connaissances générales (MMLU) et les tâches de raisonnement léger (ARC) bougent à peine ; le code et les maths difficiles encaissent le plus gros, ce qui est attendu — ce sont les tâches les moins tolérantes à un jeton validé trop tôt.

L'exécuter

TwoTower est publié sous licence NVIDIA Nemotron Open Model License (usage commercial autorisé) sur Hugging Face. Le modèle complet à deux tours nécessite 2 GPU d'environ 59 Go chacun en BF16 ; un mode AR seul tourne sur un unique GPU de 80 Go.

Chargez le modèle et placez chaque tour sur son propre appareil :

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
 
model_name = "nvidia/Nemotron-Labs-TwoTower-30B-A3B-Base-BF16"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
)
 
# Une tour par GPU
model.place_towers_on_devices("cuda:0", "cuda:1")
model.eval()

Générez maintenant avec le décodage par diffusion parallèle bloc par bloc :

prompt = "France is a country "
inputs = tokenizer(prompt, return_tensors="pt").to("cuda:0")
 
outputs = model.generate_mask_diffusion(
    inputs["input_ids"],
    max_new_tokens=128,
    block_size=16,          # positions affinees ensemble
    steps_per_block=16,     # iterations d'affinage
    mask_token_id=3,
    temperature=0.1,
    confidence_threshold=0.8,  # plus bas = plus rapide, plus haut = plus sur
    eos_token_id=tokenizer.eos_token_id,
)
 
text = tokenizer.decode(
    outputs[0][inputs["input_ids"].shape[1]:],
    skip_special_tokens=True,
)
print(text)

La version expose trois modes d'inférence pour comparer les compromis sur votre matériel :

  • generate_mask_diffusion() — la voie rapide, parallèle et bloc par bloc.
  • generate_mock_ar() — deux tours, un jeton par étape (une référence de vitesse honnête).
  • generate_ar() — la tour de contexte gelée seule, sur un seul GPU.

Un conseil de réglage pratique : montez confidence_threshold vers 0,9 et augmentez steps_per_block pour le code et les maths, où un jeton erroné validé tôt coûte cher. Pour le chat, les résumés et la rédaction, des seuils plus bas libèrent l'essentiel de la vitesse avec une perte à peine visible.

Pourquoi cela compte pour les développeurs de la région MENA

Deux forces rendent un modèle rapide et open-weight comme celui-ci stratégiquement intéressant pour les équipes en Tunisie, en Arabie saoudite et dans la région élargie.

D'abord, le coût d'inférence est la facture récurrente, pas l'entraînement. Un gain de débit de 2,42x sur le même matériel signifie sensiblement le même volume servi sur moins d'accélérateurs — une réponse directe à la pénurie de GPU et aux contraintes d'énergie que subissent les centres de données régionaux. Le décodage par diffusion transforme la puissance de calcul disponible en vitesse plutôt que d'exiger davantage de silicium.

Ensuite, les poids ouverts signifient que l'auto-hébergement est un vrai recours. Les modèles de pointe hébergés étant de plus en plus soumis à des contrôles d'exportation et à des approbations client par client, un modèle sous licence permissive que vous pouvez télécharger, auditer et exécuter à l'intérieur de votre périmètre de confiance n'est plus un simple bonus — c'est une stratégie de résilience. TwoTower est une option open-weight sérieuse qui se trouve être rapide.

Le basculement plus large

TwoTower ne remplacera pas votre endpoint AR de production dès demain. Il exige deux GPU, la qualité du code et des maths baisse légèrement, et l'écosystème d'outils autour des LLM à diffusion est jeune. Mais c'est une preuve qui compte : vous pouvez greffer un décodeur à diffusion entraîné sur une architecture gelée déjà pré-entraînée et acheter une accélération de 2,4x pour environ 1% de qualité — sans réentraîner la partie coûteuse.

Si la prochaine génération de modèles ouverts livre un point de contrôle AR et un débruiteur à diffusion assorti, « à quelle vitesse pouvez-vous décoder » cesse d'être une propriété figée de l'architecture pour devenir un curseur que vous ajustez par charge de travail. C'est l'avenir intéressant que TwoTower dessine.


Lectures liées sur noqta.tn : Auto-héberger des LLM avec Ollama, guide de service vLLM en production, et NVIDIA Nemotron 3 Ultra open weights.

Sources : MarkTechPost, arXiv 2606.26493, fiche du modèle Hugging Face, NVIDIA Nemotron 3.