Ga naar inhoud

Automatische vertaling

Dit artikel is automatisch vertaald vanuit de oorspronkelijke Engelse versie.

Manifold-Constrained Hyper-Connections (mHC): Residuele schaling in DeepSeek uitgelegd

Moderne deep learning rust op de residual connection. Na een decennium waarin lagen steeds dieper werden gestapeld, stelden onderzoekers bij DeepSeek een andere vraag: wat als we in plaats daarvan breedte schalen? Hun antwoord, Manifold-Constrained Hyper-Connections (mHC), lost een al lang bestaand stabiliteitsprobleem bij breedteschaling op.

In deze post loop ik door de evolutie van basis-residuals naar mHC, en leg ik uit waarom elke stap nodig was en hoe DeepSeek's oplossing in de praktijk op schaal werkt.

TL;DR: Hyper-Connections breiden residual streams uit naar meerdere parallelle stromen voor snellere convergentie, maar breken de identity mapping die training stabiel houdt. mHC herstelt stabiliteit door mixing matrices te beperken tot de Birkhoff-polytoop (dubbel-stochastische matrices) met het differentieerbare Sinkhorn-Knopp-algoritme. Resultaat: 4 parallelle streams met slechts 6,7% trainingsoverhead.


Waarom residual connections werken

Voordat we ingaan op wat mHC oplost, moeten we begrijpen waarop het voortbouwt.

Het diepteprobleem

Meer lagen stapelen zou de capaciteit van een model moeten vergroten. In de praktijk worden zeer diepe netwerken moeilijker te trainen. De capaciteit is er wel. Het is gradient-based optimization die faalt: gradiënten verdwijnen (krimpen tot bijna nul) of exploderen (groeien onbegrensd) terwijl ze zich door veel lagen voortplanten.

De residual-oplossing

De ResNet-paper introduceerde een elegante oplossing. In plaats van een directe mapping te leren, leer je de residual, het verschil ten opzichte van identity:

Standaard residual connection

De truc is de identity shortcut. Wanneer de residualfunctie F(x) nul oplevert, wordt de laag een perfecte passthrough. Daar volgen twee consequenties uit:

  1. Gradient highway: Gradiënten stromen direct door de shortcut en omzeilen zo het verdwijnen van gradiënten.
  2. Eenvoudige optimalisatie: Als identity optimaal is, leert het netwerk simpelweg F(x) → 0.

Deze ene architecturale wijziging maakte netwerken met honderden lagen trainbaar.


De Transformer-complicatie: plaatsing van Layer Normalization

Transformers voegden een nieuwe variabele toe: waar plaats je Layer Normalization (LN)? Die keuze lijkt klein, maar is dat niet.

Post-LN vs Pre-LN trade-offs

Variant LN-plaatsing Voordeel Belangrijkste beperking
Post-LN Na residual block Hoge modelcapaciteit Gradient vanishing: LN in het hoofdpad herschaalt gradiënten per laag
Pre-LN Voor residual block Uitstekende stabiliteit Representation collapse: features worden vergelijkbaar over lagen heen

De architectuur ResiDual probeerde dit op te lossen met dubbele residual-paden, één Pre-LN voor stabiliteit en één Post-LN voor capaciteit. Nog steeds maar één residual stream. Wat als je meerdere parallelle streams kon hebben?


Hyper-Connections: de breedterevolutie

Hyper-Connections (HC) koos een andere route. Voeg niet alleen diepte toe, maar breid de breedte van de residual stream uit.

Hyper-Connections-architectuur

Wat is een "stream"?

In standaard transformers vormen de input-tokenembeddings één enkele \(d\)-dimensionale vector die de features van het token representeert. Deze enkele vectorsequentie is de "residual stream" die door elk blok loopt.

In Hyper-Connections is een stream één van de \(n\) parallelle instanties van deze toestand.

Hoe krijgen we die? Aan het begin van het netwerk wordt de initiële input-embedding \(n\) keer gerepliceerd (waarbij \(n\) de "expansion rate" is, typisch 4). De standaard \(d\)-dimensionale hidden state wordt een \(n \\times d\) "hyper hidden matrix".

Deze \(n\) identieke streams gaan door de transformerlagen van het netwerk, waar ze door de mechanismen hieronder verschillend worden geaggregeerd, gerouteerd en uitgebreid. Daardoor divergeren ze direct en vangen ze verschillende representatiepaden.

Kernmechanismen

In plaats van één residual-pad houdt HC \(n\) parallelle streams in het hele netwerk in stand. In elk transformerblok draaien drie operaties, elk gestuurd door kleine leerbare gewichten:

  1. Aggregatie (\(H_{pre}\), pre-mapping): De \(n\) binnenkomende streams worden samengeperst tot één enkele vector voor het transformerblok met een leerbare matrix \(H_{pre}\). Elke stream wordt vermenigvuldigd met een leerbaar belanggewicht, dus dit werkt als een inputfilter.
  2. Expansie (\(H_{post}\), post-mapping): Na het kernblok van de transformer (Attention of MLP) wordt de output met een leerbare matrix \(H_{post}\) uitgezonden naar \(n\) afzonderlijke streams. Dit werkt als een output-gate, waarbij elke stream met een uniek leerbaar gewicht wordt geschaald.
  3. Mixing (inter-stream routing): De nieuw uitgebreide streams worden samengevoegd met de originele residual streams. Een leerbare \(n \\times n\) "feature router"-matrix (\(\\mathbf{H}^{res}\)) bepaalt hoe informatie uit elke stream in de andere doorvloeit, zodat features kruisbestuiven vóór de volgende laag.

De mixing matrix H is de verkeersregelaar: hij routeert features tussen streams op basis van geleerde patronen. Informatie stroomt veel rijker dan via één enkel residual-pad.

De resultaten

HC-prestaties

HC convergeert ongeveer 1,8× sneller dan standaard residuals. De parallelle streams geven gradiënten meer paden en laten het netwerk meer diverse representaties behouden.

De keerzijde

Er is een cruciaal probleem: HC is instabiel op schaal.


Waarom Hyper-Connections stukgaan

De flexibiliteit die HC krachtig maakt, is ook wat het breekt. Het vernietigt de identity mapping die residuals überhaupt trainbaar maakt.

HC-instabiliteitsprobleem

De wiskunde van instabiliteit

In standaard residuals:

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

Wanneer \(F(x) \\rightarrow 0\), is dit identity: \(x_{l+1} = x_l\). Het signaal gaat onveranderd door.

In Hyper-Connections bevat het residual-pad een matrixvermenigvuldiging:

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

Over L lagen wordt het signaal:

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

Als waarden in H ook maar iets afwijken van 1.0, dan leidt dit product tot:

  • Explosie: waarden > 1.0 stapelen exponentieel op.
  • Verdwijnen: waarden < 1.0 vervallen exponentieel.

Het DeepSeek-team mat dit met "Amax Gain Magnitude", die de maximale verhouding tussen output- en inputsignaalgrootte over alle lagen volgt. In standaard HC loopt dit in diepe netwerken op tot ~3000. Op dat punt is training niet langer haalbaar.

De grondoorzaak: verlies van identity

Het kernprobleem: onbeperkte matrices kunnen elke waarde aannemen (negatieve getallen, grote magnitudes, alles). We hebben een manier nodig om ze in de "goed gedragen" verzameling te houden, waar ze signaalenergie behouden zoals identity dat doet.


De mHC-oplossing: geometrische constraints

Het inzicht van mHC is dat je flexibele routing en stabiliteit kunt hebben als je de mixing matrices beperkt tot een specifieke wiskundige structuur: de Birkhoff-polytoop, de verzameling van alle dubbel-stochastische matrices, waarbij elke rij en kolom optelt tot 1 en alle elementen niet-negatief zijn.

De mHC-oplossing

De drie constraints

mHC beperkt de mixing matrix H^res zodat die dubbel-stochastisch is: alle entries niet-negatief, en elke rij en kolom telt exact op tot 1. Dat dwingt tegelijk drie eigenschappen af:

Constraint Regel Waarom dit belangrijk is
Positiviteit Alle elementen > 0 Voorkomt de signaaloscillatie die gradiënten destabiliseert
Rijsom = 1 Elke rij telt op tot 1.0 Normaliseert outputbijdrage; geen enkele stream domineert
Kolomsom = 1 Elke kolom telt op tot 1.0 Normaliseert inputverdeling; alle streams dragen eerlijk bij

De kritieke uitkomst: Energy In = Energy Out. Signaalgrootte blijft behouden diep in het netwerk, wat het exponentiële explosieprobleem elimineert.

Deze constraint heeft ook nuttige wiskundige consequenties:

  1. Spectral norm ≤ 1: De spectrale norm (grootste singuliere waarde) begrenst signaalversterking. Dubbel-stochastische matrices zijn wiskundig niet-uitdijend.
  2. Gesloten onder vermenigvuldiging: De compositie van dubbel-stochastische matrices levert opnieuw een dubbel-stochastische matrix op.
  3. Gewogen middeling: De operatie wordt een convexe combinatie (een gewogen gemiddelde waarbij de gewichten optellen tot 1) van de inputs, wat de totale signaalgrootte behoudt.

Het Sinkhorn-Knopp-algoritme

De uitdaging: hoe dwing je een leerbare matrix af om dubbel-stochastisch te zijn en houd je die tegelijk differentieerbaar? Het Sinkhorn-Knopp-algoritme doet dat. Het is een iteratieve projectie die in slechts een paar stappen convergeert naar een dubbel-stochastische vorm.

Sinkhorn-algoritme in detail

Een walkthrough met een concreet voorbeeld:

Stap 1: Positiviteit. Pas exp() toe op ruwe gewichten zodat alle elementen strikt positief zijn:

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

Stap 2: Rijnormalisatie. Deel elke rij door de som van die rij:

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

Stap 3: Kolomnormalisatie. Deel elke kolom door de som van die kolom:

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

Stap 4: Itereren. Herhaal stappen 2-3 gedurende t_max iteraties (typisch 20) tot convergentie.

Het hele proces is differentieerbaar, dus gradiënten stromen er tijdens training doorheen. Sinkhorn-Knopp is ook goedkoop en voegt minimale overhead toe aan de trainingsloop.

Initialisatie is ook belangrijk.

Verfijningen in initialisatie

Om training stabiel te laten starten:

  • Sigmoid in plaats van Tanh: Coëfficiënten blijven niet-negatief en begrensd (0 tot 1).
  • Scalaire vermenigvuldiger 2: Sigmoid geeft bij initialisatie ~0.5 terug. Vermenigvuldigen met 2 geeft een initieel gewicht van ~1.0, wat overeenkomt met identity-gedrag.

Volledige mHC-architectuur

Alles bij elkaar:

Volledige mHC-architectuur

De flow door elk blok:

  1. Input: \(n\) parallelle residual streams komen de laag binnen.
  2. Aggregatie (\(H_{pre}\)): De \(n\) streams worden gecombineerd tot één vector via een gewogen som met de matrix \(H_{pre}\). In mHC zijn deze aggregatiegewichten lokaal beperkt (\(\\sigma(\\cdot)\)) zodat ze niet-negatief zijn, wat onnatuurlijke schaling en destructieve interferentie voorkomt.
  3. Computation: Het standaard Transformer-blok (Attention of MLP) verwerkt de enkele geaggregeerde vector.
  4. Expansie (\(H_{post}\)): De enkele output van het blok wordt uitgezonden en opgeschaald naar \(n\) afzonderlijke update-streams met de matrix \(H_{post}\), die eveneens beperkt is tot niet-negatieve waarden.
  5. Mixing (\(H_{res}\) routing): De streams delen informatie via een \(n \\times n\) mixing matrix \(\\mathbf{H}^{res}\). In mHC is deze matrix strikt beperkt tot de Birkhoff-polytoop (dubbel-stochastisch), zodat signaalenergie behouden blijft.
  6. Output: De geüpdatete \(n\) streams gaan door naar de volgende laag zonder te exploderen of te verdwijnen.

Het belangrijkste verschil met standaard HC: elke mixing- en aggregatieoperatie loopt via een Sinkhorn-constraint of vergelijkbare normalisatie. Dat houdt het signaal stabiel over honderden lagen.


Infrastructuur: hoe je het praktisch maakt

Uitbreiden naar n=4 streams creëert echte overhead. Elke stream heeft eigen geheugen nodig, en Sinkhorn voegt 20 iteraties per laag toe. Het DeepSeek-team omzeilde dit met verschillende optimalisaties.

Kernel fusion

Met TileLang fuseerden ze Sinkhorn-iteraties met mixed-precision-vermenigvuldigingen tot gespecialiseerde CUDA-kernels. Dat vermindert round-trips naar high-bandwidth memory (HBM), wat op moderne hardware meestal de echte bottleneck is.

Selective recomputation

Het opslaan van elke tussentoestand van Sinkhorn voor backpropagation zou het geheugengebruik laten exploderen. Daarom doet mHC het volgende:

  • Tussenliggende activaties vrijgeven na de forward pass.
  • Ze on-the-fly opnieuw berekenen tijdens de backward pass.

Een aangepast DualPipe-schema overlapt die herberekening met gradient communication, zodat de kosten van recomputation grotendeels verborgen blijven.

Resultaten

Met deze optimalisaties draait expansion rate n=4 met slechts 6,7% trainingsoverhead ten opzichte van de baseline. Complexe topologische routing is praktisch op schaal.


Empirische validatie

Vertalen de theoretische garanties zich ook echt naar concrete verbeteringen?

De ruwe trainingsdynamiek is duidelijk. Zonder constraints zien diepe netwerken met standaard Hyper-Connections hun signaalgrootte (Amax Gain) oplopen tot ongeveer 3.000, met zware instabiliteit en frequente loss spikes. Met de dubbel-stochastische constraint afgedwongen houdt mHC Amax Gain tijdens de hele training rond ~1.6.

Maar stabiliteit is irrelevant als de modelprestatie verslechtert. Om de representatiecapaciteit te testen, evalueerde het team een mHC-27B-model (gebouwd op de DeepSeek-V3-architectuur) tegenover zowel standaard ResNet- als ongeconstrueerde HC-baselines. Op reasoning-benchmarks zoals GSM8K en MATH wint mHC consistent. De prestatiewinst van parallelle stream-routing is echt, en met Sinkhorn-constraints kun je deze zeer brede residual-paden eindelijk trainen zonder dat de trainingsrun uit elkaar valt.


Trade-offs en aandachtspunten

mHC is geen gratis lunch. Drie punten zijn het vermelden waard:

  1. Computational overhead: 6,7% is klein voor wat je ervoor terugkrijgt, maar het blijft extra kosten vergeleken met standaard residuals.
  2. Implementatiecomplexiteit: Je kunt dit niet in plain PyTorch schrijven en verwachten dat het snel is. De lage overhead vereist custom, fijn afgestemde CUDA-kernels.
  3. Sterke inductive bias: De dubbel-stochastische constraint dwingt strikte signaalconservering af. Als jouw taak echt signaalversterking dieper in het netwerk nodig heeft, werkt deze constraint je actief tegen.

Belangrijkste conclusies

  1. Residual connections werken dankzij identity mapping: het vermogen om signalen onveranderd door te geven.
  2. Hyper-Connections schalen breedte in plaats van diepte, wat snellere convergentie via multi-stream-routing mogelijk maakt.
  3. De flexibiliteit van HC vernietigt identity mapping, wat in diepe netwerken tot signaalexplosie leidt.
  4. mHC beperkt mixing matrices tot de Birkhoff-polytoop, wat wiskundig stabiliteit garandeert.
  5. Sinkhorn-Knopp maakt de constraint differentieerbaar, waardoor end-to-end-training mogelijk wordt.
  6. Infrastructureel werk (kernel fusion, selective recomputation) is wat het geheel praktisch maakt.

Voor practitioners: als je tegen limieten van diepteschaling aanloopt en toegang hebt tot custom kernel development, dan is mHC een principiële manier om capaciteit via breedte te schalen en training stabiel te houden.


Referenties