Aller au contenu

Traduction automatique

Cet article a été traduit automatiquement depuis la version originale en anglais.

Hyper-Connections contraintes par variété (mHC) : explication du scaling résiduel de DeepSeek

L’apprentissage profond moderne repose sur la connexion résiduelle. Après une décennie à empiler des couches toujours plus profondes, les chercheurs de DeepSeek ont posé une autre question : et si on augmentait plutôt la largeur ? Leur réponse, Manifold-Constrained Hyper-Connections (mHC), corrige un problème de stabilité de longue date lié au scaling en largeur.

Dans cet article, je vais parcourir l’évolution depuis les résiduels de base jusqu’à mHC, en expliquant pourquoi chaque étape était nécessaire et comment la solution de DeepSeek fonctionne réellement à grande échelle.

TL;DR : Les Hyper-Connections étendent les flux résiduels en plusieurs flux parallèles pour converger plus vite, mais cassent le mapping identité qui maintient la stabilité de l’entraînement. mHC rétablit cette stabilité en contraignant les matrices de mélange au polytope de Birkhoff (matrices doublement stochastiques) via l’algorithme différentiable de Sinkhorn-Knopp. Résultat : 4 flux parallèles pour seulement 6,7 % de surcoût à l’entraînement.


Pourquoi les connexions résiduelles fonctionnent

Avant d’aborder ce que mHC corrige, il faut comprendre sur quoi il s’appuie.

Le problème de la profondeur

Empiler davantage de couches devrait augmenter la capacité d’un modèle. En pratique, les réseaux très profonds deviennent plus difficiles à entraîner. La capacité est bien là. C’est l’optimisation par gradient qui échoue : les gradients disparaissent (se contractent vers zéro) ou explosent (croissent sans borne) à mesure qu’ils se propagent à travers de nombreuses couches.

La solution résiduelle

L’article ResNet a introduit une correction élégante. Au lieu d’apprendre un mapping direct, on apprend le résiduel, c’est-à-dire l’écart à l’identité :

Connexion résiduelle standard

L’astuce est le raccourci identité. Quand la fonction résiduelle F(x) renvoie zéro, la couche devient un passage direct parfait. Deux conséquences en découlent :

  1. Autoroute à gradients : les gradients circulent directement via le raccourci, en évitant leur disparition.
  2. Optimisation facile : si l’identité est optimale, le réseau apprend simplement F(x) → 0.

Ce seul changement architectural a rendu entraînables des réseaux de centaines de couches.


La complication des Transformers : placement de la Layer Normalization

Les Transformers ont ajouté une nouvelle variable : où placer la Layer Normalization (LN). La décision semble mineure, et elle ne l’est pas.

Compromis Post-LN vs Pre-LN

Variante Placement de LN Avantage Limitation principale
Post-LN Après le bloc résiduel Forte capacité Disparition des gradients : LN dans le chemin principal les rescale à chaque couche
Pre-LN Avant le bloc résiduel Excellente stabilité Effondrement de représentation : les features deviennent similaires entre couches

L’architecture ResiDual a tenté de résoudre ce problème avec des chemins résiduels duaux, l’un en Pre-LN pour la stabilité et l’autre en Post-LN pour la capacité. Mais on reste avec un seul flux résiduel. Et si l’on pouvait avoir plusieurs flux parallèles ?


Hyper-Connections : la révolution de la largeur

Les Hyper-Connections (HC) ont pris une autre direction. Au lieu d’ajouter seulement de la profondeur, elles étendent la largeur du flux résiduel.

Architecture Hyper-Connections

Qu’est-ce qu’un « flux » ?

Dans les transformers standard, les embeddings d’entrée des tokens forment un unique vecteur de dimension \(d\) représentant les features du token. Cette séquence de vecteurs unique constitue le « flux résiduel » qui traverse chaque bloc.

Dans Hyper-Connections, un flux est l’une des \(n\) instanciations parallèles de cet état.

Comment les obtient-on ? Au début du réseau, l’embedding d’entrée initial est répliqué \(n\) fois (où \(n\) est le « taux d’expansion », typiquement 4). L’état caché standard de dimension \(d\) devient une « hyper matrice cachée » de taille \(n \\times d\).

Ces \(n\) flux identiques traversent ensuite les couches du transformer, où ils sont agrégés, routés et étendus différemment par les mécanismes ci-dessous. Ils divergent donc immédiatement et capturent des trajectoires de représentation distinctes.

Mécanismes de base

Au lieu d’une seule voie résiduelle, HC maintient \(n\) flux parallèles à travers tout le réseau. À chaque bloc transformer, trois opérations s’exécutent, chacune contrôlée par de petits poids appris :

  1. Agrégation (\(H_{pre}\), pre-mapping) : les \(n\) flux entrants sont compressés en un seul vecteur pour le bloc transformer, via une matrice apprenable \(H_{pre}\). Chaque flux est multiplié par un poids d’importance appris, ce qui en fait un filtre d’entrée.
  2. Expansion (\(H_{post}\), post-mapping) : après le bloc transformer central (Attention ou MLP), sa sortie est diffusée dans \(n\) flux distincts via une matrice apprenable \(H_{post}\). Cela agit comme une porte de sortie, chaque flux étant mis à l’échelle par un poids appris propre.
  3. Mélange (routage inter-flux) : les flux nouvellement étendus fusionnent avec les flux résiduels d’origine. Une matrice apprenable \(n \\times n\) de « routeur de features » (\(\\mathbf{H}^{res}\)) décide comment l’information de chaque flux se propage dans les autres, ce qui fertilise les features entre elles avant la couche suivante.

La matrice de mélange H joue le rôle de contrôleur de trafic : elle route les features entre les flux selon des motifs appris. L’information circule de manière bien plus riche qu’au travers d’une unique voie résiduelle.

Les résultats

Performances de HC

HC converge environ 1,8× plus vite que les résiduels standard. Les flux parallèles offrent davantage de chemins aux gradients et permettent au réseau de conserver des représentations plus diverses.

Le piège

Il y a un problème critique : HC est instable à grande échelle.


Pourquoi Hyper-Connections se casse

La flexibilité qui fait la force de HC est aussi ce qui le fait échouer. Elle détruit le mapping identité qui rend les résiduels entraînables au départ.

Problème d’instabilité de HC

Les maths de l’instabilité

Dans les résiduels standard :

\[x_{l+1} = x_l + F(x_l)\]

Quand \(F(x) \\rightarrow 0\), on retrouve l’identité : \(x_{l+1} = x_l\). Le signal traverse sans modification.

Dans Hyper-Connections, le chemin résiduel inclut une multiplication matricielle :

\[x_{l+1} = \\mathbf{H}^{res}_l \\cdot x_l + \\dots\]

Sur L couches, le signal devient :

\[x_L = \\mathbf{H}^{res}_L \\times \\mathbf{H}^{res}_{L-1} \\times \\dots \\times \\mathbf{H}^{res}_1 \\times x_0\]

Si les valeurs de H s’écartent même légèrement de 1,0, ce produit :

  • Explose : les valeurs > 1,0 se composent de manière exponentielle.
  • Disparaît : les valeurs < 1,0 décroissent exponentiellement.

L’équipe DeepSeek a mesuré cela avec l’« Amax Gain Magnitude », qui suit le ratio maximal entre l’amplitude du signal de sortie et celle du signal d’entrée sur l’ensemble des couches. Dans HC standard, cette valeur atteint ~3000 dans les réseaux profonds. À ce stade, l’entraînement n’est plus viable.

La cause racine : perte de l’identité

Le problème central : des matrices non contraintes peuvent prendre n’importe quelle valeur (nombres négatifs, grandes amplitudes, tout). Il faut un moyen de les maintenir dans un ensemble « bien comporté », où elles préservent l’énergie du signal comme le fait l’identité.


La solution mHC : contraintes géométriques

L’idée clé de mHC est qu’on peut avoir à la fois un routage flexible et de la stabilité si l’on contraint les matrices de mélange à une structure mathématique précise : le polytope de Birkhoff, l’ensemble de toutes les matrices doublement stochastiques, où chaque ligne et chaque colonne somme à 1 et où tous les éléments sont non négatifs.

La solution mHC

Les trois contraintes

mHC contraint la matrice de mélange H^res à être doublement stochastique : toutes les entrées sont non négatives, chaque ligne et chaque colonne somment exactement à 1. Cela impose trois propriétés à la fois :

Contrainte Règle Pourquoi c’est important
Positivité Tous les éléments > 0 Empêche l’oscillation de signe qui déstabilise les gradients
Somme des lignes = 1 Chaque ligne somme à 1,0 Normalise la contribution en sortie ; aucun flux ne domine
Somme des colonnes = 1 Chaque colonne somme à 1,0 Normalise la distribution d’entrée ; tous les flux contribuent équitablement

Le résultat critique : Énergie en entrée = énergie en sortie. L’amplitude du signal est préservée profondément dans le réseau, ce qui élimine le problème d’explosion exponentielle.

Cette contrainte a aussi des conséquences mathématiques utiles :

  1. Norme spectrale ≤ 1 : la norme spectrale (plus grande valeur singulière) borne l’amplification du signal. Les matrices doublement stochastiques sont mathématiquement non expansives.
  2. Fermeture par multiplication : composer des matrices doublement stochastiques donne une autre matrice doublement stochastique.
  3. Moyenne pondérée : l’opération devient une combinaison convexe (une moyenne pondérée dont les poids somment à 1) des entrées, ce qui préserve l’amplitude totale du signal.

L’algorithme de Sinkhorn-Knopp

Le défi : comment forcer une matrice apprenable à être doublement stochastique tout en restant différentiable ? L’algorithme de Sinkhorn-Knopp le permet. C’est une projection itérative qui converge vers une forme doublement stochastique en seulement quelques étapes.

Algorithme de Sinkhorn en détail

Voici un déroulé avec un exemple concret :

Étape 1 : positivité. On applique exp() aux poids bruts afin que tous les éléments soient strictement positifs :

Raw Matrix           →    Positive Matrix
[-0.5  2.1  0.8]          [0.6   7.9   2.2]  Σ=10.7
[ 1.3 -4.0  1.9]    exp   [3.7   0.02  6.7]  Σ=10.4
[ 0.1  0.6 -0.2]    →     [1.1   1.8   0.8]  Σ=3.7

Étape 2 : normalisation par ligne. On divise chaque ligne par sa somme :

Positive Matrix      →    Row Normalized
[0.6   7.9   2.2]         [0.25  0.65  0.10]  Σ=1.0
[3.7   0.02  6.7]   /row  [0.35  0.01  0.64]  Σ=1.0
[1.1   1.8   0.8]    →    [0.30  0.45  0.25]  Σ=1.0
                           Σ=0.9 Σ=1.1 Σ=0.99  ← columns not yet =1

Étape 3 : normalisation par colonne. On divise chaque colonne par sa somme :

Row Normalized       →    Doubly Stochastic
[0.25  0.65  0.10]        [0.28  0.45  0.27]  Σ=1.0
[0.35  0.01  0.64]  /col  [0.40  0.09  0.51]  Σ=1.0
[0.30  0.45  0.25]   →    [0.32  0.46  0.22]  Σ=1.0
                           Σ=1.0 Σ=1.0 Σ=1.0  ← converges in few iterations

Étape 4 : itération. On répète les étapes 2-3 pendant t_max itérations (typiquement 20) jusqu’à convergence.

L’ensemble du processus est différentiable, donc les gradients circulent pendant l’entraînement. Sinkhorn-Knopp est aussi peu coûteux et ajoute un surcoût minimal à la boucle d’entraînement.

L’initialisation compte aussi.

Ajustements d’initialisation

Pour démarrer l’entraînement de manière stable :

  • Sigmoid plutôt que Tanh : les coefficients restent non négatifs et bornés (de 0 à 1).
  • Multiplicateur scalaire de 2 : à l’initialisation, Sigmoid renvoie ~0,5. Multiplier par 2 donne un poids initial de ~1,0, ce qui correspond au comportement identité.

Architecture complète de mHC

En réunissant le tout :

Architecture complète de mHC

Le flux dans chaque bloc :

  1. Entrée : \(n\) flux résiduels parallèles entrent dans la couche.
  2. Agrégation (\(H_{pre}\)) : les \(n\) flux sont combinés en un seul vecteur via une somme pondérée utilisant la matrice \(H_{pre}\). Dans mHC, ces poids d’agrégation sont localement contraints (\(\\sigma(\\cdot)\)) à être non négatifs, ce qui évite les mises à l’échelle non naturelles et les interférences destructrices.
  3. Calcul : le bloc Transformer standard (Attention ou MLP) traite le vecteur agrégé unique.
  4. Expansion (\(H_{post}\)) : l’unique sortie du bloc est diffusée et mise à l’échelle vers \(n\) flux de mise à jour distincts via la matrice \(H_{post}\), qui est elle aussi contrainte à être non négative.
  5. Mélange (routage \(H_{res}\)) : les flux partagent l’information via une matrice de mélange \(n \\times n\) \(\\mathbf{H}^{res}\). Dans mHC, cette matrice est strictement contrainte au polytope de Birkhoff (doublement stochastique), ce qui conserve l’énergie du signal.
  6. Sortie : les \(n\) flux mis à jour passent à la couche suivante sans exploser ni disparaître.

La différence clé avec HC standard : chaque opération de mélange et d’agrégation passe par une contrainte de type Sinkhorn ou une normalisation similaire. C’est ce qui maintient le signal stable sur des centaines de couches.


Infrastructure : le rendre praticable

Étendre à n=4 flux crée un vrai surcoût. Chaque flux a besoin de sa propre mémoire, et Sinkhorn ajoute 20 itérations par couche. L’équipe DeepSeek a contourné cela avec plusieurs optimisations.

Fusion de kernels

Avec TileLang, ils ont fusionné les itérations de Sinkhorn avec des multiplications en précision mixte dans des kernels CUDA spécialisés. Cela réduit les allers-retours vers la mémoire à haute bande passante (HBM), qui constitue généralement le vrai goulot d’étranglement sur le matériel moderne.

Recomputation sélective

Stocker tous les états intermédiaires de Sinkhorn pour la rétropropagation ferait exploser la mémoire. À la place, mHC :

  • Libère les activations intermédiaires après le passage forward.
  • Les recalcule à la volée pendant le passage backward.

Une version modifiée de DualPipe chevauche cette recomputation avec la communication des gradients, de sorte que le coût de recomputation est en grande partie masqué.

Résultats

Avec ces optimisations, un taux d’expansion n=4 ne coûte que 6,7 % de surcoût à l’entraînement par rapport à la baseline. Un routage topologique complexe devient praticable à grande échelle.


Validation empirique

Est-ce que les garanties théoriques se traduisent réellement par des gains concrets ?

La dynamique brute de l’entraînement est nette. Sans contraintes, les réseaux profonds utilisant Hyper-Connections standard voient leur amplitude de signal (Amax Gain) exploser jusqu’à environ 3 000, avec une forte instabilité et des pics de loss fréquents. Avec la contrainte doublement stochastique appliquée, mHC maintient l’Amax Gain autour de ~1,6 tout au long de l’entraînement.

Mais la stabilité ne suffit pas si les performances du modèle se dégradent. Pour tester la capacité de représentation, l’équipe a évalué un modèle mHC-27B (construit sur l’architecture DeepSeek-V3) face à des baselines ResNet standard et HC non contrainte. Sur des benchmarks de raisonnement comme GSM8K et MATH, mHC l’emporte de façon systématique. Les gains de performance dus au routage à flux parallèles sont réels et, avec les contraintes Sinkhorn, on peut enfin entraîner ces voies résiduelles très larges sans que l’entraînement ne s’effondre.


Compromis et points d’attention

mHC n’est pas gratuit. Trois points méritent d’être signalés :

  1. Surcoût de calcul : 6,7 % est faible au vu du gain, mais cela reste un coût supplémentaire par rapport aux résiduels standard.
  2. Complexité d’implémentation : on ne peut pas écrire cela en PyTorch pur et espérer de bonnes performances. Le faible surcoût exige des kernels CUDA personnalisés et finement optimisés.
  3. Biais inductif fort : la contrainte doublement stochastique impose une conservation stricte du signal. Si votre tâche nécessite réellement une amplification du signal plus profondément dans le réseau, cette contrainte ira activement contre cela.

Points clés à retenir

  1. Les connexions résiduelles fonctionnent grâce au mapping identité : la capacité à faire passer les signaux sans modification.
  2. Les Hyper-Connections augmentent la largeur plutôt que la profondeur, ce qui permet une convergence plus rapide via un routage multi-flux.
  3. La flexibilité de HC détruit le mapping identité, ce qui provoque une explosion du signal dans les réseaux profonds.
  4. mHC contraint les matrices de mélange au polytope de Birkhoff, ce qui garantit mathématiquement la stabilité.
  5. Sinkhorn-Knopp rend cette contrainte différentiable, ce qui permet un entraînement end-to-end.
  6. Le travail d’infrastructure (fusion de kernels, recomputation sélective) rend l’ensemble réellement praticable.

Pour les praticiens : si vous atteignez les limites du scaling en profondeur et que vous avez accès au développement de kernels personnalisés, mHC fournit une méthode rigoureuse pour augmenter la capacité via la largeur tout en gardant un entraînement stable.


Références