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, Glossar, öffnet in neuem Tab , über Positionen hinweg
  2. ein vorwärtsgerichtetes Netz, Glossar, öffnet in neuem Tab , 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, Glossar, öffnet in neuem Tab kaputt. Die Addition hat die lokale Ableitung 1, deshalb erreicht der Gradient, Glossar, öffnet in neuem Tab beide Zweige, ohne dass Autograd, Glossar, öffnet in neuem Tab 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, Glossar, öffnet in neuem Tab , 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, Glossar, öffnet in neuem Tab , 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, Glossar, öffnet in neuem Tab . 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, Glossar, öffnet in neuem Tab fügt keine hinzu.

Weiter

0.1.8. Vorwärtspass setzt Einbettung und Block zu den Logits, Glossar, öffnet in neuem Tab zusammen.