Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

0.1.7. Block

Block

Ein Block ist eine Schicht. Layer.block führt zwei Teilnetze nacheinander aus:

  1. kausale Mehrkopf-Attention, über Positionen hinweg
  2. ein vorwärtsgerichtetes Netz, nur über die Koordinaten dieser Position

Um jedes Teilnetz liegt dieselbe Form:

Strom = Strom + Teilnetz(RMSNorm(Strom))

saved hält die Skalare des Stroms fest, bevor das Teilnetz sie ersetzt. Die Addition benutzt diese festgehaltenen Knoten. Würde man den Strom mit sich selbst addieren, wäre die Residualverbindung kaputt. Die Addition hat die lokale Ableitung 1, deshalb erreicht der Gradient beide Zweige, ohne dass Autograd die Residualverbindung als Sonderfall kennt.

RMSNorm

Vor jedem Teilnetz und einmal auf der Summe aus Token- und Positionszeile, noch vor der Schichtschleife:

ms = (Summe der Quadrate) / 16
Faktor = (ms + 1e-5) ^ -0.5
y[d] = x[d] * Faktor

Es gibt keinen gelernten Faktor und kein Abziehen des Mittelwerts. 1e-5 hält die Wurzel von null fern. Auch bei einer einzigen Schicht bleiben alle drei Stellen stehen: die Summe der Einbettung, die Norm vor der Attention, die Norm vor dem vorwärtsgerichteten Netz.

Vorwärtsgerichtetes Netz

FC1 hat die Form 64×16, FC2 die Form 16×64. Dazwischen liegt ReLU, koordinatenweise max(0, Wert). Bei genau 0 ist die lokale Ableitung 0. Die 64 Zwischenwerte sind Aktivierungen, keine Parameter. Ohne ReLU ließen sich die beiden linearen Abbildungen zusammenfalten. Die Aufweitung auf 64 und die Rückprojektion auf 16 machen das Delta wieder addierbar zum Strom.

Die Referenz hat Layers = 1. Die Schleife ist trotzdem da. Jede Schicht hat eigene Matrizen und einen eigenen Cache. Eine zweite Schicht würde die Schlüssel der ersten nicht lesen. Der Namensgenerator kann mit -layers weitere Blöcke stapeln. Jeder weitere Block fügt bei dieser Breite 3072 Parameter hinzu.

Die sechs Matrizen sind die Parameter des Blocks. RMSNorm fügt keine hinzu.

Weiter

0.1.8. Vorwärtspass setzt Einbettung und Block zu den Logits zusammen.