DeepSeek mHC: Hyper-Connections ograniczone rozmaitością

Tłumaczenie automatyczne

Ten artykuł został automatycznie przetłumaczony z angielskiego oryginału.

Współczesne uczenie głębokie opiera się na połączeniu rezydualnym. Ten wpis jest dla inżynierów, którzy znają blok Transformera i chcą wiedzieć, co mHC zmienia w ścieżce rezydualnej, dlaczego, ile to kosztuje i kiedy warto to wypróbować. Hyper-Connections (HC) badają inny wymiar architektury: poszerzają stan rezydualny do kilku współdziałających strumieni. Artykuł DeepSeek o Manifold-Constrained Hyper-Connections (mHC) analizuje, jak utrzymać stabilność takiego routingu przy większej skali treningu.

Zaczyna od standardowych połączeń rezydualnych, potem dodaje Hyper-Connections i niestabilność, którą powodują. Dalej opisuje ograniczenie mHC, krótkie demo w NumPy i koszt implementacji.


Dlaczego połączenia rezydualne działają

Problem głębokości

Dodawanie warstw może zwiększyć pojemność modelu, ale utrudnia też optymalizację i propagację sygnału. W zależności od inicjalizacji, normalizacji i architektury aktywacje w przejściu w przód lub gradienty w przejściu wstecz mogą maleć, rosnąć albo stać się źle uwarunkowane wraz z głębokością.

Rozwiązanie rezydualne

Artykuł o ResNet wprowadził proste rozwiązanie. Zamiast uczyć się bezpośredniego odwzorowania, uczymy się reszty, czyli różnicy względem tożsamości:

Blok rezydualny: wejście rozdziela się na gałąź z wagami, ReLU i wagami i skrót tożsamościowy, które spotykają się w operacji dodawania; strzałka wsteczna pokazuje, że gradient dociera do wejścia przez skrótBlok rezydualny: wejście rozdziela się na gałąź z wagami, ReLU i wagami i skrót tożsamościowy, które spotykają się w operacji dodawania; strzałka wsteczna pokazuje, że gradient dociera do wejścia przez skrót

Najważniejsza jest tu właściwość skrótu tożsamościowego. Gdy funkcja rezydualna F(x)F(x) zwraca zero, warstwa po prostu przepuszcza sygnał. Wynikają z tego dwie rzeczy:

  1. Bezpośredni składnik gradientu: propagacja wsteczna obejmuje ścieżkę przez składową tożsamościową.
  2. Proste odwzorowanie awaryjne: gałąź rezydualna może pozostać bliska zeru, gdy warstwa nie musi mocno zmieniać stanu.

To nie usuwa wszystkich problemów z optymalizacją, ale umożliwiło trenowanie znacznie głębszych sieci.


Jak normalizacja warstw zmienia ścieżkę rezydualną

Transformery dodały nową zmienną: gdzie umieścić normalizację warstw (Layer Normalization, LN). Od tego zależy, czy ścieżka rezydualna pozostaje tożsamością.

Po dwie warstwy Post-LN i Pre-LN: Post-LN umieszcza LayerNorm na strumieniu rezydualnym po każdym dodawaniu, Pre-LN umieszcza go wewnątrz gałęzi, więc strumień tylko dodajePo dwie warstwy Post-LN i Pre-LN: Post-LN umieszcza LayerNorm na strumieniu rezydualnym po każdym dodawaniu, Pre-LN umieszcza go wewnątrz gałęzi, więc strumień tylko dodaje

WariantPołożenie LNZaletaGłówne ograniczenie
Post-LNPo bloku rezydualnymSilny wkład głębokościTrudniejsza optymalizacja przy dużej głębokości
Pre-LNPrzed blokiem rezydualnymBardziej bezpośrednia ścieżka rezydualnaReprezentacje sąsiednich warstw mogą stawać się coraz bardziej podobne

ResiDual łączy ścieżkę rezydualną podobną do Post-LN z drugą ścieżką, która sumuje wyjścia bloków. Ich reprezentacje są dodawane na wyjściu modelu. Artykuł o HC wychodzi od tego samego kompromisu i czyni siły połączeń uczonymi, w wielu strumieniach.


Hyper-Connections dodają równoległe strumienie rezydualne

Hyper-Connections (HC) rozszerzają szerokość strumienia rezydualnego zamiast dodawać głębokość.

Co oznacza strumień

W standardowym Transformerze każdy token ma dd-wymiarowy stan, który przechodzi przez kolejne bloki. Na początku sieci HC replikuje wejściowy embedding nn razy, gdzie nn to „współczynnik rozszerzenia”, zwykle równy 4. dd-wymiarowy stan ukryty staje się macierzą n×dn \times d, czyli „hiperukrytą macierzą”.

W Hyper-Connections strumień to jedna z tych nn równoległych kopii stanu.

Kopie zaczynają identycznie, a potem się rozchodzą, gdy uczone mapy odczytują strumienie, zapisują do nich i je mieszają. Artykuł interpretuje je jako wiele wzorców połączeń w głębi sieci; nie wymaga, by każdy strumień zyskał stałą rolę zrozumiałą dla człowieka.

Główne mechanizmy

Zamiast jednej ścieżki rezydualnej HC utrzymuje nn równoległych strumieni płynących przez całą sieć. W każdym bloku transformera działają trzy operacje, każda sterowana małymi uczonymi wagami:

  1. Odczyt (Hpre\mathcal{H}^{pre}): agreguje nn strumieni do dd-wymiarowego wejścia, które przyjmuje blok uwagi lub blok feed-forward.
  2. Zapis (Hpost\mathcal{H}^{post}): odwzorowuje wyjście tego bloku z powrotem na aktualizacje nn strumieni.
  3. Mieszanie (Hres\mathcal{H}^{res}): stosuje rezydualną mapę n×nn \times n do nadchodzących strumieni przed dodaniem aktualizacji bloku.

W HC każda mapa to uczona część statyczna (bias) plus składnik zależny od wejścia, przepuszczony przez tanh⁡\tanh, więc jej elementy mogą mieć dowolny znak. Artykuł o HC nazywa wersję ze składnikami zależnymi od wejścia dynamicznym HC (DHC); DHC×4 oznacza DHC z czterema strumieniami. Mapa rezydualna jest częścią krytyczną dla stabilności, bo jest mnożona wielokrotnie wraz z głębokością.

Razem te trzy mapy dają aktualizację warstwy (równanie 3 z artykułu mHC, które zapisuje szerokość jako CC):

xl+1=Hlresxl+Hlpost⊤ F(Hlprexl)x_{l+1} = \mathcal{H}^{res}_l x_l + \mathcal{H}^{post\top}_l \, \mathcal{F}(\mathcal{H}^{pre}_l x_l)

Tutaj xlx_l to macierz strumieni n×dn \times d, Hlpre\mathcal{H}^{pre}_l i Hlpost\mathcal{H}^{post}_l mają wymiar 1×n1 \times n, a Hlres\mathcal{H}^{res}_l ma wymiar n×nn \times n. Pierwszy składnik to ścieżka rezydualna. Drugi to aktualizacja bloku: odczyt, obliczenie, zapis. Dla n=1n = 1 i wszystkich trzech map równych 1 równanie redukuje się do standardowego połączenia rezydualnego xl+1=xl+F(xl)x_{l+1} = x_l + \mathcal{F}(x_l).

Rysunek przedstawia tę aktualizację dla czterech strumieni: odczyt, obliczenie i zapis nad strumieniami, mieszanie 4 × 4 na strumieniach oraz dodawanie na każdym strumieniu.

Jedna warstwa Hyper-Connections z czterema strumieniami: mapa odczytu sumuje strumienie na wejściu bloku uwagi lub FFN, mapa zapisu przekazuje jego wyjście do dodawania na każdym strumieniu, a mieszanie 4 × 4 łączy każdy strumień wejściowy z każdym strumieniem wyjściowymJedna warstwa Hyper-Connections z czterema strumieniami: mapa odczytu sumuje strumienie na wejściu bloku uwagi lub FFN, mapa zapisu przekazuje jego wyjście do dodawania na każdym strumieniu, a mieszanie 4 × 4 łączy każdy strumień wejściowy z każdym strumieniem wyjściowym

Co raportuje artykuł o HC

Artykuł o HC raportuje 1,8× szybszą zbieżność dla konfiguracji OLMoE-1B-7B DHC×4 względem jej bazowego modelu, a także poprawę wyników na zadaniach końcowych po przetworzeniu 500B elementów typu token (sekcja 1). To jedna oceniona konfiguracja, a nie ogólny mnożnik prędkości dla czterech strumieni.


Dlaczego nieograniczone HC może stać się niestabilne

Artykuł o mHC raportuje niestabilność, gdy nieograniczone HC skaluje się do konfiguracji 27B: strata treningowa gwałtownie rośnie około kroku 12k, razem ze skokiem normy gradientu (sekcja 3.1). Te same nieograniczone mapy, które dają HC elastyczność, usuwają też gwarantowaną ścieżkę tożsamościową, dzięki której sieci rezydualne łatwo się trenuje.

Problem mapy złożonej

W standardowym połączeniu rezydualnym:

xl+1=xl+F(xl)x_{l+1} = x_l + F(x_l)

Gdy F(x)→0F(x) \rightarrow 0, jest to tożsamość: xl+1=xlx_{l+1} = x_l. Sygnał przechodzi bez zmian.

W Hyper-Connections składnik rezydualny powyższej aktualizacji jest iloczynem macierzy, Hlresxl\mathcal{H}^{res}_l x_l. Gdy śledzimy tylko tę ścieżkę przez LL warstw, sygnał przyjmuje postać:

xL=HLresHL−1res⋯H1res x0x_L = \mathcal{H}^{res}_L \mathcal{H}^{res}_{L-1} \cdots \mathcal{H}^{res}_1 \, x_0

Zachowanie zależy od macierzy złożonej, a nie od tego, czy pojedyncze elementy leżą powyżej, czy poniżej 1. Jeśli mapy stale rozciągają ten sam kierunek o więcej niż 1, iloczyn rośnie wykładniczo z głębokością. Jeśli stale go skracają, sygnał zanika. Ujemne elementy mogą też znosić sygnały.

Artykuł o mHC mierzy to wzmocnienie za pomocą Amax Gain Magnitude: maksymalnej bezwzględnej sumy wierszy dla propagacji w przód i sumy kolumn dla propagacji wstecz w złożonej mapie rezydualnej. W eksperymencie HC 27B jego szczyt zbliża się do 3000 i zbiega się z niestabilnym zachowaniem treningu (sekcja 3.1).

Wykres zestawia trzy wartości z artykułu na jednej osi logarytmicznej: 1 dla standardowego połączenia rezydualnego, około 1,6 dla mHC (ograniczonej wersji opisanej dalej) i około 3000 dla nieograniczonego HC. Znacznik pod osią pokazuje 1.160≈3001.1^{60} \approx 300 z przykładu powyżej.

Wykres słupkowy w skali logarytmicznej szczytowego złożonego wzmocnienia rezydualnego przy 27B: 1 dla standardowego połączenia rezydualnego, około 1,6 dla mHC, około 3000 dla HC, ze znacznikiem przy około 300 dla sześćdziesięciu warstw, z których każda rozciąga o 1,1Wykres słupkowy w skali logarytmicznej szczytowego złożonego wzmocnienia rezydualnego przy 27B: 1 dla standardowego połączenia rezydualnego, około 1,6 dla mHC, około 3000 dla HC, ze znacznikiem przy około 300 dla sześćdziesięciu warstw, z których każda rozciąga o 1,1

Cel projektowy jest więc węższy niż wymuszanie, by każda mapa była tożsamością: pozwolić na mieszanie między strumieniami, ograniczając jednocześnie wzmocnienie przy składaniu.


Ograniczenie mHC

mHC zachowuje routing między strumieniami, ale ogranicza każdą rezydualną macierz mieszania do wielościanu Birkhoffa, czyli zbioru macierzy podwójnie stochastycznych. Taka macierz ma nieujemne elementy, a suma każdego jej wiersza i każdej kolumny wynosi jeden.

Rysunek szkicuje ścieżkę rezydualną każdego z projektów omawianych w tym artykule i porównuje je. Wiersz wzmocnienia pokazuje szczytowe wzmocnienie złożone, które artykuł o mHC podaje dla modelu 27B. Dla n=1n=1 i wszystkich map równych 1 HC i mHC sprowadzają się do standardowego połączenia rezydualnego.

Standardowe połączenie rezydualne, HC i mHC obok siebie: szkic każdej ścieżki rezydualnej, a następnie szerokość strumienia, mieszanie między strumieniami, mapy odczytu i zapisu oraz największe wzmocnienie przy 27BStandardowe połączenie rezydualne, HC i mHC obok siebie: szkic każdej ścieżki rezydualnej, a następnie szerokość strumienia, mieszanie między strumieniami, mapy odczytu i zapisu oraz największe wzmocnienie przy 27B

Co gwarantuje podwójna stochastyczność

Rysunek sprawdza trzy warunki na dwóch macierzach 3×3 z przykładu Sinkhorna poniżej: nieograniczonych logitach AA, które łamią wszystkie trzy, oraz AA po 20 iteracjach Sinkhorna, które spełnia wszystkie trzy. Tabela podaje konsekwencję każdego warunku.

Dwie macierze 3×3 z sumami wierszy i kolumn: logity A mają trzy ujemne elementy, a sumy wierszy 2,4, −0,8 i 0,5; po 20 iteracjach Sinkhorna każdy element jest nieujemny, a każdy wiersz i każda kolumna sumuje się do 1,000Dwie macierze 3×3 z sumami wierszy i kolumn: logity A mają trzy ujemne elementy, a sumy wierszy 2,4, −0,8 i 0,5; po 20 iteracjach Sinkhorna każdy element jest nieujemny, a każdy wiersz i każda kolumna sumuje się do 1,000

OgraniczenieKonsekwencja
NieujemnośćWspółczynniki o przeciwnych znakach nie znoszą się
Suma wiersza = 1Stały sygnał w strumieniach pozostaje stały
Suma kolumny = 1Globalna średnia po strumieniach jest zachowana

Nieujemność wraz z sumami wierszy równymi jeden sprawia, że każde wyjście jest kombinacją wypukłą strumieni wejściowych. Ograniczenie zachowuje średnią po strumieniach, a nie długość wektora: macierz podwójnie stochastyczna może uśredniać strumienie względem siebie.

Wynikają z tego jeszcze trzy własności (sekcja 4.1):

  1. Norma spektralna ≤ 1: norma spektralna to największy współczynnik, przez który macierz może rozciągnąć dowolny wektor. Ograniczenie równe jeden oznacza, że rezydualna mapa routingu nie może wzmocnić normy euklidesowej.
  2. Domknięcie ze względu na mnożenie: iloczyn macierzy podwójnie stochastycznych pozostaje podwójnie stochastyczny, więc ograniczenie przetrwa składanie przez kolejne warstwy.
  3. Mieszanie wypukłe: zgodnie z twierdzeniem Birkhoffa-von Neumanna mapa leży w powłoce wypukłej macierzy permutacji.

Rzutowanie Sinkhorna-Knoppa

Uczone logity rezydualne są nieograniczone. mHC najpierw stosuje do nich funkcję wykładniczą, by otrzymać macierz dodatnią, a potem na przemian normalizuje kolumny i wiersze. Przy dostatecznej liczbie iteracji ten proces Sinkhorna-Knoppa zbliża się do macierzy podwójnie stochastycznej; artykuł używa 20 iteracji jako praktycznego, przybliżonego, różniczkowalnego rzutowania, a nie dokładnego ograniczenia.

Rysunek wykonuje pierwszą iterację na przykładzie 3×3 poniżej krok po kroku, a potem pokazuje największy błąd sum kolumn w ciągu 20 iteracji.

Przykład 3×3: dzielenie exp(A) przez sumy kolumn sprawia, że kolumny sumują się do 1, ale wiersze nie; dzielenie przez sumy wierszy naprawia wiersze i psuje kolumny; wykres logarytmiczny pokazuje największy błąd sum kolumn spadający z 12% po iteracji 1 do około 4 × 10⁻¹¹ po iteracji 20Przykład 3×3: dzielenie exp(A) przez sumy kolumn sprawia, że kolumny sumują się do 1, ale wiersze nie; dzielenie przez sumy wierszy naprawia wiersze i psuje kolumny; wykres logarytmiczny pokazuje największy błąd sum kolumn spadający z 12% po iteracji 1 do około 4 × 10⁻¹¹ po iteracji 20

Dla surowych logitów AA procedura wygląda tak:

S = exp(A)
repeat 20 times:
    S = S / column_sum(S)
    S = S / row_sum(S)
return S

Przykład 3×3 pokazuje, co znaczy „przybliżone”. Jeden przebieg ustala sumy wierszy, bo wiersze normalizuje się na końcu, ale sumy kolumn pozostają odchylone nawet o 12%. Dwadzieścia przebiegów sprowadza obie do 1,000 z dokładnością do trzech miejsc po przecinku.

Raw logits A           [[-0.5,   2.1,   0.8  ],
                        [ 1.3,  -4.0,   1.9  ],
                        [ 0.1,   0.6,  -0.2  ]]

S = exp(A)             [[ 0.607, 8.166, 2.226],
                        [ 3.669, 0.018, 6.686],
                        [ 1.105, 1.822, 0.819]]

After 1 pass           [[ 0.097, 0.705, 0.198],
(columns, then rows)    [ 0.497, 0.001, 0.501],
                        [ 0.435, 0.386, 0.178]]
                       row sums     1.000 1.000 1.000
                       column sums  1.030 1.092 0.877

After 20 passes        [[ 0.102, 0.653, 0.244],
                        [ 0.457, 0.001, 0.542],
                        [ 0.441, 0.346, 0.213]]
                       row and column sums 1.000

Poniższy skrypt sprawdza twierdzenie, na którym opiera się cała metoda. Mnoży 60 losowych macierzy mieszania 4×4, raz używanych bezpośrednio, tak jak robiłoby to HC, i raz po Sinkhornie, tak jak robi to mHC, a następnie wypisuje wzmocnienie Amax każdego iloczynu.

import numpy as np

rng = np.random.default_rng(0)
n, layers = 4, 60

def sinkhorn(logits, iters=20):
    s = np.exp(logits)
    for _ in range(iters):
        s = s / s.sum(axis=0, keepdims=True)  # columns sum to 1
        s = s / s.sum(axis=1, keepdims=True)  # rows sum to 1
    return s

def amax_gain(m):
    return max(np.abs(m).sum(axis=1).max(), np.abs(m).sum(axis=0).max())

hc, mhc = np.eye(n), np.eye(n)
for _ in range(layers):
    a = np.eye(n) + 0.3 * rng.standard_normal((n, n))
    hc = a @ hc
    mhc = sinkhorn(a) @ mhc

print(f"HC  Amax gain: {amax_gain(hc):.1f}")
print(f"mHC Amax gain: {amax_gain(mhc):.1f}")

Dla ziarna 0 skrypt wypisuje 1906.8 dla HC i 1.0 dla mHC. Każda losowa macierz jest bliska tożsamości, więc żadna z nich osobno nie wygląda na dużą. Artykuł mierzy dla mHC w modelu 27B około 1,6, a nie 1,0. Używa tylko 20 iteracji, więc wytrenowane macierze nie są dokładnie podwójnie stochastyczne, a małe błędy rosną z kolejnymi warstwami, ale pozostają ograniczone (sekcja 5.4).

Iteracje Sinkhorna są różniczkowalne, ale nie są darmowe. mHC opiera się na połączonym kernelu przejścia w przód i własnym kernelu przejścia wstecz, który przelicza pośrednie stany normalizacji na układzie.

Szczegóły parametryzacji

  • Mapa rezydualna: zastosowanie funkcji wykładniczej i normalizacja Sinkhorna dają w przybliżeniu podwójnie stochastyczną Hres\mathcal{H}^{res}.
  • Mapy odczytu i zapisu: mHC zastępuje tanh⁡\tanh z HC funkcją sigmoidalną: Hpre=σ(H~pre)\mathcal{H}^{pre}=\sigma(\tilde{\mathcal{H}}^{pre}) i Hpost=2σ(H~post)\mathcal{H}^{post}=2\sigma(\tilde{\mathcal{H}}^{post}). Obie mapy są nieujemne, co usuwa znoszenie się współczynników dodatnich i ujemnych (sekcje 4.1 i 4.2). Wagi odczytu leżą w przedziale (0, 1), a wagi zapisu w (0, 2). Zerowy logit daje wagę zapisu 2σ(0)=12\sigma(0) = 1, czyli wagę, której używa standardowe dodawanie rezydualne. Artykuł nie podaje powodu użycia czynnika 2.

Kompletna architektura mHC

Rysunek pokazuje jedną warstwę mHC wraz z parametryzacją każdej mapy. Ma te same dwie ścieżki co blok HC; zmienia się tylko sposób parametryzacji każdej mapy.

Jedna warstwa mHC z czterema strumieniami: te same ścieżki co w HC, z sigmoidalną mapą odczytu, mapą zapisu z podwojoną sigmoidą i mieszaniem 4 × 4 rzutowanym przez SinkhornaJedna warstwa mHC z czterema strumieniami: te same ścieżki co w HC, z sigmoidalną mapą odczytu, mapą zapisu z podwojoną sigmoidą i mieszaniem 4 × 4 rzutowanym przez Sinkhorna

W kategoriach równania aktualizacji:

  1. Wejście: do warstwy wchodzi nn równoległych strumieni rezydualnych xlx_l.
  2. Ścieżka bloku: mapa odczytu σ(H~pre)\sigma(\tilde{\mathcal{H}}^{pre}) łączy strumienie w jedno dd-wymiarowe wejście. Blok uwagi lub MLP je przetwarza. Mapa zapisu 2σ(H~post)2\sigma(\tilde{\mathcal{H}}^{post}) zamienia wyjście na aktualizacje nn strumieni.
  3. Ścieżka rezydualna: w przybliżeniu podwójnie stochastyczna Hres\mathcal{H}^{res} miesza nadchodzące strumienie.
  4. Dodawanie: obie ścieżki są sumowane do xl+1x_{l+1}, które trafia do następnej warstwy.

Tylko rezydualna mapa mieszania używa rzutowania Sinkhorna. Mapy odczytu i zapisu używają parametryzacji nieujemnych. Ta różnica ma znaczenie, bo gwarancja złożenia z artykułu dotyczy Hres\mathcal{H}^{res}.


Infrastruktura wymagana dla raportowanego narzutu

Cztery strumienie zwiększają liczbę dostępów do pamięci dla stanu rezydualnego, pamięć na aktywacje i komunikację w potoku. Wynik czasowy z artykułu zależy od trzech wspólnie zaprojektowanych zmian, opisanych poniżej.

Fuzja kernelów

Implementacja łączy operacje, które współdzielą dostęp do pamięci, tam gdzie to właściwe używa mieszanej precyzji, a większość własnych kerneli implementuje w TileLang. Pętla Sinkhorna i jej własne przejście wsteczne działają w dedykowanych kernelach, co ogranicza ruch w pamięci i narzut uruchamiania.

Selektywne ponowne obliczanie

nn strumieni zwiększa pamięć na aktywacje (sekcja 4.3.2). Zamiast przechowywać każdy wynik pośredni, mHC:

  • Zwalnia pośrednie aktywacje własnych kerneli po przejściu w przód.
  • Przelicza je w przejściu wstecz, bez ponownego uruchamiania bloku uwagi lub FFN.
  • Przechowuje wejście rozszerzonych strumieni każdej grupy kolejnych warstw i wyjście bloku uwagi lub FFN każdej warstwy. Artykuł dopasowuje te grupy do etapów potoku.

Rozszerzony harmonogram DualPipe nakłada na siebie części komunikacji, ponownego obliczania i pracy warstw na granicach etapów potoku. Osiągnięte nakładanie jest specyficzne dla tego systemu treningowego.

Raportowany wynik systemowy

W wielkoskalowej konfiguracji artykułu współczynnik rozszerzenia n=4n=4 dodaje 6,7% czasu treningu względem jego bazowego modelu (sekcja 4.3). To wynik systemowy, a nie narzut zwykłej implementacji we frameworku.


Co ustalają eksperymenty

Autorzy trenują warianty MoE inspirowane DeepSeek-V3 o rozmiarach 3B, 9B i 27B (sekcja 5.3). Przy 27B mHC pokonuje standardowy model rezydualny we wszystkich ośmiu raportowanych testach końcowych i pokonuje HC w siedmiu z ośmiu (tabela 4). HC jest nieznacznie lepsze w MATH (26,4 wobec 26,0). To własne eksperymenty pretrainingu zespołu, który proponuje metodę, więc niezależna replikacja i porównania na innych architekturach pozostają otwarte.


Kiedy warto wypróbować mHC

Wyniki artykułu wskazują trzy warunki:

  • Trenujesz od zera. mHC zmienia architekturę, a artykuł ocenia ją tylko w pretrainingu. Jeśli nie, pomiń mHC.
  • Potrzebujesz większej szerokości rezydualnej niż jeden strumień. Już używasz HC lub planujesz to robić i widzisz skoki straty albo rosnące aktywacje i normy gradientów przy zwiększaniu głębokości lub rozmiaru. Jeśli wystarczy jeden strumień, zostań przy standardowym połączeniu rezydualnym.
  • Możesz wykonać pracę systemową albo zaakceptować większy koszt. Wartość 6,7% wymaga połączonych kerneli i zmian w harmonogramie potoku. Zwykła implementacja we frameworku będzie kosztować więcej. Jeśli nie możesz wykonać tej pracy, mHC w zwykłym kodzie jest możliwe, ale najpierw zmierz narzut.

Pozostają trzy pytania:

  1. Narzut systemowy: raportowany narzut to zoptymalizowany wynik z artykułu; inny runtime, topologia urządzeń lub kształt modelu mogą dać inny koszt.
  2. Tendencja do uśredniania: podwójna stochastyczność zachowuje średnią po strumieniach i zapobiega rozszerzaniu przez Hres\mathcal{H}^{res}, ale może wygładzać różnice między strumieniami. Aktualizacja bloku nadal zmienia całą reprezentację.
  3. Zakres dowodów: najmocniejsze dowody dotyczą pretrainingu modeli językowych w architekturach MoE inspirowanych DeepSeek-V3. Ten artykuł nie ustala jeszcze uogólnienia na inne rodziny modeli.

mHC to obiecujący sposób badania szerszej topologii rezydualnej przy zachowaniu dobrze uwarunkowanej, powtarzanej mapy rezydualnej. Czy warto ją stosować w innym modelu, zależy od niezależnie potwierdzonych zysków jakości i kosztu odtworzenia jej stosu systemowego.


Referencje