07.10.2026 · Signal Titans Editorial
PyTorch modernise les Table Batched Embeddings avec des noyaux FBTriton
PyTorch remplace ses modèles CUDA par des noyaux FBTriton en Python pour les Table Batched Embeddings, améliorant les performances mémoire.

PyTorch a modernisé sa pile d'opérateurs Table Batched Embedding (TBE) en remplaçant ses anciens modèles C++ CUDA par des noyaux FBTriton écrits en Python. Les opérateurs TBE effectuent la recherche et le regroupement d'embeddings rares sur plusieurs tables de caractéristiques lors de lancements GPU unifiés, constituant une charge de travail essentielle pour les systèmes de recommandation à grande échelle déployés sur des milliers de GPU fragmentés.
Gains de performances pour les passes avant et arrière
Lors de bancs de test couvrant 307 configurations de shards sur des accélérateurs Nvidia GB200 avec des poids FP16 et l'optimiseur exact row-wise Adagrad, l'implémentation TBE sous Triton a obtenu une accélération médiane de 1,28× sur la passe avant par rapport aux noyaux CUDA standard. Ce gain de performance provient d'un accès mémoire optimisé pendant les passes arrière. Alors que CUDA TBE passe à une synchronisation de type CTA (cooperative thread array) dès que la longueur de segment atteint 32 recherches par ligne, FBTriton maintient un traitement en flux continu jusqu'à une longueur de 256. Cette modification structurelle a permis à FBTriton d'atteindre un débit mémoire de 3 948 Go/s, contre 678 Go/s pour CUDA à empreinte mémoire équivalente.
Changements architecturaux et classification sur GPU
Afin d'éliminer le surcoût de synchronisation hôte-dispositif causé par les lectures du CPU, FBTriton conserve les données de classification des charges de travail directement sur le GPU. Le pipeline utilise des compteurs atomiques et des sommes préfixes au sein des blocs de calcul pour diviser les longueurs de lignes dépendantes des données en tronçons fixes de 256 recherches, sans déclencher de synchronisation de flux au niveau du CPU.
La mise à jour ajoute une vérification des limites intégrée optionnelle, offrant jusqu'à 1,24× d'accélération lors des passes de validation sur Nvidia B200. De plus, un chemin optionnel dans le module principal déplace le tri d'index et le codage par plages vers la passe avant. Sur de grandes configurations B200, ce transfert a réduit la latence d'exécution combinée des passes avant et arrière de 79,537 ms à 66,183 ms, soit une réduction de latence de 16,8 %. FBTriton intègre également des fonctionnalités matérielles spécifiques aux architectures Nvidia Blackwell, notamment le vol de travail matériel, des barrières de synchronisation à l'échelle du composant et des réductions atomiques en masse TMA.
Efficacité pour les développeurs et cas d'usage particuliers
En basculant les opérations rares avant et arrière vers Python, PyTorch réduit le surcoût de maintenance par rapport aux implémentations CUDA fondées sur des modèles Jinja, tout en standardisant la logique des noyaux sur les architectures GPU AMD, Hopper et Blackwell.
FBTriton ne surpasse pas l'ancien code CUDA sur l'ensemble des charges de travail évaluées. Sur les 307 shards testés, CUDA a conservé une vitesse d'exécution supérieure sur 11 configurations à séquences courtes où la longueur des segments reste inférieure à 4 recherches par ligne, l'allocation de type warp par ligne de CUDA permettant de mieux atténuer la latence des charges dépendantes sur les petits lots.
Illustration éditoriale générée par IA ; ce n’est pas une photographie documentaire.