Veröffentlicht am

Die Entmystifizierung von DeepSeek-V3: Eine Analyse seiner revolutionären KI-Architektur

14 min read
Autoren
  • Profile picture of aithemes.net
    Name
    aithemes.net
    Twitter

Einführung

DeepSeek-V3 stellt einen bedeutenden Fortschritt im Bereich der großen Sprachmodelle (LLMs) dar. Entwickelt von DeepSeek-AI, nutzt dieses Modell die Mixture-of-Experts (MoE) Architektur, um unvergleichliche Leistung zu bieten und gleichzeitig die Effizienz sowohl im Training als auch in der Inferenz aufrechtzuerhalten. Mit insgesamt 671 Milliarden Parametern und 37 Milliarden aktivierten pro Token ist DeepSeek-V3 darauf ausgelegt, komplexe Aufgaben mit bemerkenswerter Genauigkeit zu bewältigen.

Dieser Beitrag bietet eine detaillierte Durchsicht der Architektur von DeepSeek-V3 und erklärt seine Schlüsselkomponenten Schritt für Schritt. Jeder Abschnitt zerlegt die zugrunde liegenden Mechanismen und präsentiert die mathematischen Formulierungen, die ihre Funktionalität definieren. Die Erklärungen basieren auf dem offiziellen technischen Bericht zu DeepSeek-V3, der als primäre Informationsquelle der Autoren des Modells dient. Sie können das vollständige Papier hier einsehen: DeepSeek-V3 Technischer Bericht. Am Ende werden Sie ein klares Verständnis dafür haben, wie DeepSeek-V3 Effizienz, Skalierbarkeit und Inferenzoptimierung erreicht.

Architektur und Innovationen

DeepSeek-V3 führt mehrere Innovationen ein, die Effizienz, Skalierbarkeit und Genauigkeit verbessern. Die wichtigsten architektonischen Fortschritte umfassen:

  1. Multi-head Latent Attention – Reduziert die Inferenzkosten und verbessert die Aufmerksamkeits-Effizienz.
  2. DeepSeekMoE – Eine verfeinerte Mixture-of-Experts (MoE) Architektur, die die Spezialisierung der Experten und das Lastenbalancing verbessert.
  3. Auxiliary-Loss-Free Load Balancing – Eine neuartige Expertenauswahlstrategie, die die Notwendigkeit eines Hilfsverlusts beseitigt und eine stabile und effiziente Nutzung der Experten gewährleistet.
  4. Complementary Sequence-Wise Auxiliary Loss – Eine leichte Verlustfunktion, die lokale Ungleichgewichte innerhalb einer einzelnen Sequenz verhindert.
  5. Node-Limited Routing – Optimiert die Verteilung der Experten über die Rechenknoten, um die Kommunikationskosten zu reduzieren.
  6. No Token-Dropping Strategy – Gewährleistet eine stabile Token-Retention während des Trainings und der Inferenz.
  7. Multi-Token Prediction – Verbessert die Token-Darstellungen während des Trainings und kann für spekulatives Decoding in der Inferenz verwendet werden.

Jede dieser Komponenten trägt zur state-of-the-art Leistung von DeepSeek-V3 bei und erhält gleichzeitig die rechnerische Effizienz.

DeepSeek-V3 Modellarchitektur

DeepSeek-V3 Modellarchitektur. Quelle DeepSeek-V3 Technischer Bericht

Multi-head Latent Attention

Multi-head Latent Attention (MLA) ist ein Grundpfeiler der Architektur von DeepSeek-V3. Dieser Mechanismus ermöglicht es dem Modell, Informationen effizienter zu verarbeiten, indem es sich auf die relevantesten Teile der Eingabedaten konzentriert. MLA reduziert den Rechenaufwand und erhält gleichzeitig eine hohe Genauigkeit, was es ideal für groß angelegte Sprachmodelle macht.

Schritt-für-Schritt-Erklärung

  • (a) Projektion des Eingabetokens hth_t auf den latenten Vektor ctkvc_t^{kv}

    • Das Eingabetoken zum Zeitpunkt tt wird als htRdh_t \in \mathbb{R}^{d} bezeichnet. Hier hat hth_t die gleiche Dimension dd wie der verborgene Zustand des Modells.
    • Es wird in einen latenten Vektor ctkvc_t^{kv} mit einer viel kleineren Dimension dcd_c (wobei dcdh×nhd_c \ll d_h \times n_h) projiziert: ctkv=WDQhtc_t^{kv} = W^{DQ} h_t
    • Hier ist WDQRdc×dW^{DQ} \in \mathbb{R}^{d_c \times d} eine gelernt Projektionsmatrix, die die Dimensionalität von hth_t reduziert.
    • Der latente Vektor ctkvc_t^{kv} speichert komprimierte Informationen, die zur Berechnung der Schlüssel- und Wert-Darstellungen im Aufmerksamkeitsmechanismus verwendet werden.
  • (b) Berechnung des Schlüsselvektors durch Hochskalierung vom latenten Vektor

    • Der Schlüsselvektor wird berechnet, indem er von der latenten Vektordimension dcd_c auf die volle Aufmerksamkeitsdimension dh×nhd_h \times n_h hochskaliert wird: ktc=WUkctkvk_t^c = W^{U_k} c_t^{kv}
    • Hier ist WUkR(dh×nh)×dcW^{U_k} \in \mathbb{R}^{(d_h \times n_h) \times d_c} eine gelernt Projektionsmatrix, die ctkvc_t^{kv} in die vollständige Schlüsselrepräsentation ktck_t^c erweitert.
    • Dies stellt sicher, dass ktck_t^c die gleiche Dimensionalität wie die Schlüssel in der Multi-Head Attention (MHA) hat.
  • (c) Projektion und RoPE-Kodierung des Eingabetokens

    • Das Eingabetoken hth_t wird zuerst von der Dimension dd auf dhRd_h^R unter Verwendung einer gelernten Projektionsmatrix projiziert: ktr=WQRhtk_t^r = W^{QR} h_t
    • Hier ist WQRRdhR×dW^{QR} \in \mathbb{R}^{d_h^R \times d} eine gelernt Projektionsmatrix mit der Größe dhR×dd_h^R \times d.
    • Der projizierte Vektor ktrk_t^r wird dann unter Verwendung von Rotary Positional Embeddings (RoPE) an der Token-Position tt kodiert: ktrope=RoPE(ktr)k_t^{rope} = \text{RoPE}(k_t^r)
    • Der RoPE-kodierte Schlüssel ktropek_t^{rope} wird konkatenisiert mit den Schlüsselvektoren jedes Kopfes, um sicherzustellen, dass der gleiche positionskodierte Schlüssel über alle Köpfe hinweg geteilt wird.
    • Nach der Konkatenation erhalten wir den endgültigen pro-Kopf Schlüsselvektor ktik_t^i für jeden Aufmerksamkeitskopf ii mit der Dimensionalität: ktiR(dh+dhR)k_t^i \in \mathbb{R}^{\left(d_h + d_h^R\right)}
  • (d) Berechnung des Wertvektors durch Hochskalierung vom latenten Vektor

    • Der Wertvektor wird berechnet, indem er vom latenten Vektor ctkvc_t^{kv} mit der Dimension dcd_c auf die volle Aufmerksamkeitsdimension dh×nhd_h \times n_h hochskaliert wird: vt=WUVctkvv_t = W^{UV} c_t^{kv}
    • Hier ist WUVR(dh×nh)×dcW^{UV} \in \mathbb{R}^{(d_h \times n_h) \times d_c} eine gelernt Projektionsmatrix.
    • Dies stellt sicher, dass vtv_t die gleiche Dimensionalität wie die Werte in der Multi-Head Attention (MHA) hat.
  • (e) Berechnung des Abfragevektors mit niedrigrangiger Kompression

    • Die Aufmerksamkeitsabfrage wird unter Verwendung einer niedrigrangigen Kompression berechnet, indem hth_t zuerst in einen latenten Raum mit der Dimension dcd_c' (wobei dcdh×nhd_c' \ll d_h \times n_h) herunterprojiziert wird: ctq=WDQhtc_t^q = W^{DQ} h_t
    • Hier ist WDQRdc×dW^{DQ} \in \mathbb{R}^{d_c' \times d} eine gelernt Herunterprojektionsmatrix, und der latente Vektor ctqc_t^q hat die Dimension: ctqRdcc_t^q \in \mathbb{R}^{d_c'}
    • Die Abfrage wird dann mit einer gelernten Hochprojektionsmatrix wieder hochskaliert: qtc=WUQctqq_t^c = W^{UQ} c_t^q
    • Hier ist WUQR(dh×nh)×dcW^{UQ} \in \mathbb{R}^{(d_h \times n_h) \times d_c'} eine gelernt Hochprojektionsmatrix, die spezifisch für Abfragen ist und sich von der für Schlüssel und Werte verwendeten unterscheidet.
    • RoPE-Kodierung wird auf den projizierten Abfragevektor an der Token-Position tt angewendet: qtR=RoPE(WQRctq)q_t^{R} = \text{RoPE}(W^{QR} c_t^q)
    • Hier ist WQRR(dhR×nh)×dcW^{QR} \in \mathbb{R}^{(d_h^R \times n_h) \times d_c'} eine gelernt Projektionsmatrix mit der Größe (dhR×nh)×dc(d_h^R \times n_h) \times d_c'.
    • Schließlich wird die RoPE-kodierte Abfrage mit dem hochskalierten Abfragevektor konkatenisiert, um den endgültigen pro-Kopf Abfragevektor zu bilden: qt,i=[qt,ic;qt,iR]q_{t,i} = [q_{t,i}^{c}; q_{t,i}^{R}]
    • Die resultierende Dimensionalität jedes pro-Kopf Abfragevektors ist: qt,iR(dh+dhR)q_{t,i} \in \mathbb{R}^{\left(d_h + d_h^R\right)}
  • (f) Berechnung der Aufmerksamkeitsausgabe

    • Die endgültige Aufmerksamkeitsausgabe wird unter Verwendung der Abfragen, Schlüssel und Werte berechnet: ot,i=j=1tSoftmax ⁣(qt,iTkj,idh+dhR)vj,ico_{t,i} = \sum_{j=1}^{t} \operatorname{Softmax}\!\left( \frac{q_{t,i}^T k_{j,i}}{\sqrt{d_h + d_h^R}} \right) v_{j,i}^{c}
    • Hier gilt für jeden Kopf ii:
      • Die Abfrage qt,iRdh+dhRq_{t,i} \in \mathbb{R}^{d_h + d_h^R}.
      • Der Schlüssel kj,iRdh+dhRk_{j,i} \in \mathbb{R}^{d_h + d_h^R}.
      • Der Wert vj,icRdhv_{j,i}^{c} \in \mathbb{R}^{d_h}.
      • Die Ausgabe ot,iRdho_{t,i} \in \mathbb{R}^{d_h}.
    • Die Ähnlichkeit zwischen Abfrage und Schlüssel wird durch den Faktor dh+dhR\sqrt{d_h + d_h^R} (die Dimension von qt,iq_{t,i} und kj,ik_{j,i}) skaliert, bevor die Softmax angewendet wird.
    • Die Ausgaben aller nhn_h Köpfe werden in einen einzigen Spaltenvektor zusammengeführt: [ot,1,ot,2,,ot,nh]Rdh×nh\bigl[\, o_{t,1},\, o_{t,2},\, \dots,\, o_{t,n_h} \,\bigr] \in \mathbb{R}^{d_h \times n_h} der dh×nhd_h \times n_h Einträge hat.
    • Der endgültige verborgene Ausgabestatus wird berechnet als: ut=WO[ot,1,ot,2,,ot,nh]Rdu_t = W^O \,\bigl[\, o_{t,1},\, o_{t,2},\, \dots,\, o_{t,n_h} \,\bigr] \in \mathbb{R}^{d}
    • Hier ist WORd×(dhnh)W^O \in \mathbb{R}^{d \times (d_h \cdot n_h)} die gelernte Ausgabepunktionsmatrix.
    • Die endgültige Ausgabe utu_t ist ein Spaltenvektor mit dd Einträgen, d.h. utRdu_t \in \mathbb{R}^{d}.

DeepSeekMoE

DeepSeekMoE ist eine spezialisierte Mixture of Experts (MoE) Architektur, die in DeepSeek-V3 für Feed-Forward-Netzwerke (FFNs) verwendet wird. Im Vergleich zu traditionellen MoE-Architekturen wie GShard führt DeepSeekMoE eine feinere Expertenzuweisung ein, bei der einige Experten als gemeinsame fungieren.

Schritt-für-Schritt-Erklärung

  • (a) FFN-Berechnung für jedes Token

    • Lassen Sie den FFN-Eingang des tt-ten Tokens utRdu_t \in \mathbb{R}^{d} sein, wobei dd die verborgene Dimension ist.
    • Die Ausgabe wird berechnet als: htRd=ut+i=1NsFFNi(s)(ut)+i=1Nrgi,tFFNi(r)(ut)h'_t \in \mathbb{R}^{d} = u_t + \sum_{i=1}^{N_s} \text{FFN}_i^{(s)}(u_t) + \sum_{i=1}^{N_r} g_{i,t} \text{FFN}_i^{(r)}(u_t)
    • Hier:
      • NsN_s und NrN_r bezeichnen die Anzahl der gemeinsamen und gerouteten Experten.
      • FFNi(s)():RdRd\text{FFN}_i^{(s)}(\cdot): \mathbb{R}^{d} \to \mathbb{R}^{d} repräsentiert den ii-ten gemeinsamen Experten.
      • FFNi(r)():RdRd\text{FFN}_i^{(r)}(\cdot): \mathbb{R}^{d} \to \mathbb{R}^{d} repräsentiert den ii-ten gerouteten Experten.
      • gi,tg_{i,t} ist der Gate-Wert für den ii-ten Experten.
      • Sowohl utu_t als auch hth'_t haben die gleiche verborgene Dimension dd.
  • (b) Normalisierung des Gate-Wertes

    • Die Gate-Werte gi,tg_{i,t} werden über die aktivierten Experten normalisiert: gi,t=gi,tj=1Nrgj,tg_{i,t} = \frac{g'_{i,t}}{\sum_{j=1}^{N_r} g'_{j,t}}
    • wobei gi,tg'_{i,t} der ursprüngliche Gate-Score ist.
  • (c) Top-K Expertenauswahl

    • Jedes Token wird den Top KrK_r Experten mit den höchsten Affinitätscores zugewiesen: gi,t={si,t,si,tTopk({sj,t1jNr},Kr)0,sonstg'_{i,t} = \begin{cases} s_{i,t}, & s_{i,t} \in \text{Topk}(\{s_{j,t} \mid 1 \leq j \leq N_r\}, K_r) \\ 0, & \text{sonst} \end{cases}
    • Der Affinitätswert si,ts_{i,t} bestimmt die Routing-Wahrscheinlichkeit.
  • (d) Berechnung der Token-zu-Experten-Affinität

    • Der Token-zu-Experten-Affinitätswert wird gegeben durch: si,t=Sigmoid(utei)s_{i,t} = \text{Sigmoid}(u_t^\top e_i) Die Sigmoid-Funktion ist eine mathematische Funktion, die definiert ist als σ(x)=11+ex\sigma(x) = \frac{1}{1 + e^{-x}}, die jede reelle Zahl in einen Bereich zwischen 0 und 1 abbildet, häufig verwendet für Wahrscheinlichkeitsabschätzungen und Aktivierungen in neuronalen Netzen.
    • Der Schwerpunkt wird berechnet als: ei=1BitBiute_i = \frac{1}{|B_i|} \sum_{t \in B_i} u_t
    • Hier:
      • eie_i ist der Schwerpunktvektor des ii-ten gerouteten Experten.
      • BiB_i ist die Menge der Tokens, die in einem bestimmten Batch an den Experten ii geroutet werden.
      • Bi|B_i| ist die Anzahl der Tokens, die dem Experten ii zugewiesen sind.
      • Der Schwerpunkt eie_i wird während des Trainings gelernt, um Experten für verschiedene Arten von Tokens zu spezialisieren.
      • Während der Inferenz bleibt eie_i fest und wird nur für Routing-Entscheidungen verwendet.

Auxiliary-Loss-Free Load Balancing

Für Mixture of Experts (MoE) Modelle kann eine unausgeglichene Expertenlast zu Routing-Kollaps führen, was die rechnerische Effizienz in Experten-parallelen Architekturen verringert. Konventionelle Lösungen verwenden Hilfsverluste, um die Tokenverteilung auszugleichen, aber große Hilfsverluste können die Modellleistung beeinträchtigen. Um diese Kompromisse zu vermeiden, führt DeepSeek-V3 eine hilfsverlustfreie Lastenausgleichsstrategie ein, die dynamisch einen Bias-Term bib_i für jeden Experten anpasst. Dieser Bias wird zu den Affinitätswerten si,ts_{i,t} hinzugefügt, um die Expertenauswahl zu bestimmen.

Schritt-für-Schritt-Erklärung

  • (a) Expertenauswahl mit Bias-Anpassung

    • Jeder Experte hat einen Bias-Term bib_i, der zu dem ursprünglichen Affinitätswert si,ts_{i,t} vor dem Routing hinzugefügt wird: gi,t={si,t,si,t+biTopk({sj,t+bj1jNr},Kr)0,sonstg'_{i,t} = \begin{cases} s_{i,t}, & s_{i,t} + b_i \in \text{Topk}(\{s_{j,t} + b_j \mid 1 \leq j \leq N_r\}, K_r) \\ 0, & \text{sonst} \end{cases}
    • Hier:
      • si,ts_{i,t} ist der ursprüngliche Token-zu-Experten-Affinitätswert.
      • bib_i ist ein Bias-Term, der dem Experten ii zugewiesen ist.
        • bib_i wird während des Trainings gelernt, um die Nutzung der Experten auszugleichen.
        • Während der Inferenz bleibt bib_i fest und wird nur für Routing-Entscheidungen verwendet.
      • Die Top-KrK_r Funktion wählt die KrK_r Experten mit den höchsten angepassten Werten aus.
  • (b) Bias-Term wird nur für Routing verwendet

    • Der Bias-Term beeinflusst nicht die FFN-Berechnung.
    • Er wird nur verwendet, um die Wahrscheinlichkeiten der Expertenauswahl anzupassen.
  • (c) Dynamische Bias-Aktualisierung zur Lastenausgleichung

    • Am Ende jedes Trainingsschrittes wird der Bias-Term bib_i basierend auf der Expertenlast aktualisiert:
      • Wenn der Experte ii überlastet ist, wird bib_i um einen Faktor von γ\gamma verringert.
      • Wenn der Experte ii unterlastet ist, wird bib_i um einen Faktor von γ\gamma erhöht.
    • Hier:
      • γ\gamma ist ein Hyperparameter für die Bias-Aktualisierungsrate, der steuert, wie schnell bib_i angepasst wird.

Complementary Sequence-Wise Auxiliary Loss

Obwohl DeepSeek-V3 hauptsächlich auf eine hilfsverlustfreie Strategie für den Lastenausgleich setzt, führt es einen komplementären sequenzweisen Ausgleichsverlust ein, um extreme Ungleichgewichte innerhalb einer einzelnen Sequenz zu verhindern. Dies stellt sicher, dass die Nutzung der Experten über die Tokens in einer Sequenz hinweg ausgeglichen bleibt.

Der sequenzweise Ausgleichsverlust wird definiert als:

LBal=αi=1NrfiPi\mathcal{L}_{\text{Bal}} = \alpha \sum_{i=1}^{N_r} f_i P_i

wobei α\alpha ein Hyperparameter für den Ausgleich ist, der in DeepSeek-V3 einen extrem kleinen Wert zugewiesen bekommt.

Schritt-für-Schritt-Erklärung

  • (a) Berechnung des Expertenlastanteils fif_i

    • Der Anteil der Tokens, die dem Experten ii innerhalb einer Sequenz zugewiesen sind, wird berechnet als: fi=NrKrTt=1T1(si,tTopk({sj,t1jNr},Kr))f_i = \frac{N_r}{K_r T} \sum_{t=1}^{T} \mathbb{1} \left( s_{i,t} \in \text{Topk}(\{s_{j,t} \mid 1 \leq j \leq N_r\}, K_r) \right)
    • Hier:
      • NrN_r ist die Anzahl der gerouteten Experten.
      • KrK_r ist die Anzahl der aktivierten Experten pro Token.
      • TT ist die Sequenzlänge, die die Anzahl der Tokens darstellt.
      • 1()\mathbb{1}(\cdot) ist die Indikatorfunktion, die 1 zurückgibt, wenn der Experte ii zu den Top-KrK_r ausgewählten Experten für das Token tt gehört.
  • (b) Normalisierter Expertenwahrscheinlichkeitswert si,ts'_{i,t}

    • Der normalisierte Token-zu-Experten-Gate-Wert wird berechnet als: si,t=si,tj=1Nrsj,ts'_{i,t} = \frac{s_{i,t}}{\sum_{j=1}^{N_r} s_{j,t}}
    • Hier:
      • si,ts_{i,t} ist der ursprüngliche Token-zu-Experten-Gate-Wert.
      • Der Nenner stellt sicher, dass die Gate-Werte über alle gerouteten Experten hinweg auf 1 summiert werden.
  • (c) Berechnung der durchschnittlichen Expertennutzung PiP_i

    • Die durchschnittliche Wahrscheinlichkeit, dass der Experte ii über die Sequenz hinweg ausgewählt wird, ist: Pi=1Tt=1Tsi,tP_i = \frac{1}{T} \sum_{t=1}^{T} s'_{i,t}
    • Dies stellt den durchschnittlichen normalisierten Gate-Wert für den Experten ii über alle Tokens in der Sequenz dar.
  • (d) Wie der sequenzweise Ausgleichsverlust verwendet wird

    • LBal\mathcal{L}_{\text{Bal}} bestraft Ungleichgewichte in der Nutzung der Experten innerhalb einer Sequenz.
    • Er wird nur während des Trainings angewendet und nicht in der Inferenz.
    • Er passt das Routing sanft an, um kurzfristige Überlastungen der Experten zu verhindern.
    • Der Hyperparameter α\alpha sorgt für minimale Störung des Hauptverlusts.

Node-Limited Routing

DeepSeek-V3 verwendet während des Trainings Node-Limited Routing, um die Kommunikationskosten in MoE-Modellen zu reduzieren. Jedes Token wird an höchstens MM Knoten geroutet, die basierend auf der Summe der höchsten KrM\frac{K_r}{M} Affinitätswerte unter den Experten auf jedem Knoten ausgewählt werden. Diese Einschränkung gewährleistet ein effizientes Lastenbalancing, während nahezu eine vollständige Berechnung-Kommunikationsüberlappung aufrechterhalten wird, was die Trainingseffizienz optimiert.

No Token-Dropping

Aufgrund seines effektiven Lastenbalancings lässt DeepSeek-V3 keine Tokens während des Trainings oder der Inferenz fallen. Das Modell erhält eine stabile Nutzung der Experten, und spezifische Bereitstellungsstrategien für die Inferenz gewährleisten ein ausgewogenes Token-Routing.

Multi-Token Prediction

DeepSeek-V3 führt Multi-Token Prediction (MTP) ein, ein Trainingsziel, das den Vorhersagebereich auf mehrere zukünftige Tokens pro Position erweitert. Dieser Ansatz verbessert die Trainingseffizienz und verbessert die Token-Darstellungen für eine bessere Vorhersage zukünftiger Tokens.

DeepSeek-V3 Multi-Token Prediction (MTP) Implementierung

DeepSeek-V3 Multi-Token Prediction (MTP) Implementierung. Quelle DeepSeek-V3 Technischer Bericht

Schritt-für-Schritt-Erklärung

  • (a) MTP-Module

    • MTP wird unter Verwendung von DD sequentiellen Modulen implementiert, die jeweils ein zusätzliches Token vorhersagen.
    • Jedes (k)(k)-te MTP-Modul besteht aus:
      • Einem gemeinsamen Ausgabekopf OutHead()\text{OutHead}(\cdot).
      • Einem Transformer-Block TRMk()\text{TRM}_k(\cdot).
      • Einer Projektionsmatrix MkRd×2dM_k \in \mathbb{R}^{d \times 2d}.
    • Bei der Vorhersagetiefe kk wird die Darstellung des Tokens tit_i berechnet, indem die vorherige Tiefenrepräsentation hik1h_i^{k-1} des (i)(i)-ten Tokens mit der Einbettung des (i+k)(i+k)-ten Tokens kombiniert wird: hik=Mk[RMSNorm(hik1);RMSNorm(Emb(ti+k))]h_i^{k'} = M_k \left[ \text{RMSNorm}(h_i^{k-1}); \text{RMSNorm}(\text{Emb}(t_{i+k})) \right]
    • Hier:
      • MkM_k ist eine gelernt Projektionsmatrix.
      • hik1h_i^{k-1} ist die verborgene Darstellung der vorherigen Tiefe.
      • Emb(ti+k)\text{Emb}(t_{i+k}) ist die Einbettung des zukünftigen Tokens an der Position (i+k)(i+k).
      • RMSNorm wird zur Normalisierung verwendet, um die Aktivierungen ohne Mittelwertsubtraktion zu stabilisieren.
    • Die transformierte Darstellung wird durch einen Transformer-Block verarbeitet: h1:Tkk=TRMk(h1:Tkk)h_{1:T-k}^k = \text{TRM}_k(h_{1:T-k}^{k'}) wobei TT die Eingabesequenzlänge darstellt und i:ji:j die Slicing-Operation (einschließlich beider Grenzen) bezeichnet.
    • Schließlich berechnet der gemeinsame Ausgabekopf die Wahrscheinlichkeitsverteilung für das kk-te zusätzliche Vorhersagetoken: pi+k+1k=OutHead(hik)p^k_{i+k+1} = \text{OutHead}(h_i^{k}) wobei pi+k+1kRVp^k_{i+k+1} \in \mathbb{R}^{V} ist, wobei VV die Größe des Wortschatzes ist. Der Ausgabekopf OutHead()\text{OutHead}(\cdot) ordnet die Darstellung linear den Logits zu und wendet anschließend die Softmax()(\cdot)-Funktion an, um die Vorhersagewahrscheinlichkeiten des kk-ten zusätzlichen Tokens zu berechnen.
  • (b) MTP-Trainingsziel

    • Für jede Vorhersagetiefe wird ein Kreuzentropieverlust LMTPk\mathcal{L}^{k}_{\text{MTP}} berechnet: LMTPk=CrossEntropy(P2+k:T+1k,t2+k:T+1)=1Ti=2+kT+1logpik[ti],\mathcal{L}^{k}_{\text{MTP}} = \text{CrossEntropy}(P^k_{2+k:T+1}, t_{2+k:T+1}) = - \frac{1}{T} \sum_{i=2+k}^{T+1} \log p^k_i[t_i],
    • wobei TT die Eingabesequenzlänge darstellt, tit_i das Ground-Truth-Token an der ii-ten Position repräsentiert und pik[ti]p^k_i[t_i] die vorhergesagte Wahrscheinlichkeit von tit_i ist, die vom kk-ten MTP-Modul gegeben wird.
    • Die MTP-Verluste werden über alle Tiefen gemittelt und mit einem Gewichtungsfaktor λ\lambda skaliert, um den Gesamt-MTP-Verlust LMTP\mathcal{L}_{\text{MTP}} zu erhalten, der als zusätzliches Trainingsziel dient: LMTP=λDk=1DLMTPk.\mathcal{L}_{\text{MTP}} = \frac{\lambda}{D} \sum_{k=1}^{D} \mathcal{L}^{k}_{\text{MTP}}.
  • (c) MTP in der Inferenz

    • MTP wird während des Trainings verwendet, um die Token-Darstellungen zu verbessern.
    • Während der Inferenz sind MTP-Module deaktiviert, und nur das Hauptmodell wird für die Token-Vorhersage verwendet.
    • MTP kann auch für Token-Spekulation umfunktioniert werden, um die Decodierungseffizienz zu verbessern.

Wichtige Erkenntnisse

  • Effiziente Aufmerksamkeit mit MLA: Reduziert den Speicherbedarf, indem latente Raumprojektionen verwendet werden, um Schlüssel- und Wertdimensionen zu verkleinern, mit potenziellen Rechenersparnissen durch die Arbeit mit kleineren Darstellungen.
  • Stabiles Expertenrouting mit DeepSeekMoE: Implementiert hilfsverlustfreies Lastenbalancing, um Routing-Kollaps zu verhindern und eine effiziente Spezialisierung der Experten zu gewährleisten. Verwendet einen bias-adjustierten Auswahlmechanismus, um eine gleichmäßige Token-zu-Experten-Verteilung aufrechtzuerhalten und die Stabilität des Modells zu verbessern, ohne zusätzliche Rechenlast einzuführen.
  • Kein Token-Dropping: Gewährleistet eine stabile Token-Retention während des Trainings und der Inferenz, um eine Verschlechterung der Sequenzverarbeitung zu vermeiden.
  • Multi-Token Prediction verbessert das Training: Verbessert die Token-Darstellungen und die Lerneffizienz, indem das Vorhersageziel über das nächste Token hinaus erweitert wird.

DeepSeek-V3 stellt einen großen Fortschritt sowohl in der Trainingseffizienz als auch in der Inferenzskalierbarkeit dar und setzt einen neuen Standard für Sprachmodelle der nächsten Generation.

Quelle(n)


Hat Ihnen dieser Beitrag gefallen? Fanden Sie sie aufschlussreich? Hinterlassen Sie gerne einen Kommentar unten, um Ihre Gedanken zu teilen oder Fragen zu stellen. Ein GitHub-Konto ist erforderlich, um an der Diskussion teilzunehmen.

Wenn Sie die mathematische Analyse von LLM-Architekturen wertvoll fanden und mehr Beiträge sehen möchten, die ihre inneren Abläufe im Detail erkunden, lassen Sie es uns wissen.