In-Flight-Ring

Eine Pipeline, die nie leerläuft: Mehrere Anfragen belegen gleichzeitig verschiedene Stages, keine Stage wartet also auf die vor ihr.

Kvasir bedient ein Modell als Pipeline aus Stages, von denen jede eine zusammenhängende Scheibe seiner Layer hält. Eine Stage rechnet ihre Layer und reicht die Grenze weiter — einen Hidden State, keine Gewichte. Keine Stage hält das ganze Modell, und im Datenpfad sitzt nichts in der Mitte: Die Bridge reicht am Kopf ein und liest am Ende aus, während die Stages einander ihre Ergebnisse über ihre eigenen Agents übergeben.

Der In-Flight-Teil

Warum eine leerlaufende Pipeline die Maschine verschwendet

Beendet eine Pipeline erst eine Anfrage, bevor sie die nächste zulässt, ist in jedem Moment jede Stage bis auf eine untätig — ein Vier-Stage-Ring läuft mit einem Viertel seiner Hardware. Das In-Flight-Design hält mehrere Anfragen gleichzeitig in Bewegung: Während Stage 3 eine Anfrage dekodiert, prefillt Stage 0 bereits eine andere. Stages melden, wie lange sie einen Batch gehalten haben und wie lange sie nichts einzureichen hatten — ein ausgehungerter Ring sieht also anders aus als ein gesättigter.

Vier Stages, drei Anfragen, ein Zeitpunkt.

           stage 0        stage 1        stage 2        stage 3
           layers 0-11    12-22          23-33          34-44

request A                                              decode
request B                 decode
request C  prefill

boundaries pass →  agent to agent, never through the caller
Zugehörigkeit

Was ein Batch genau ist

Zeilen aus verschiedenen Anfragen werden in einen physischen Batch gepackt, und genau diese Zusammensetzung wird an jede nachgelagerte Stage weitergereicht, statt pro Hop neu entschieden zu werden. Das ist es, was einen Prefill und mehrere Decodes einen einzigen Durchlauf teilen lässt, und deshalb ist die Größe eines Batches eine Eigenschaft des Loads: Der Plan legt die Zeilen- und Micro-Batch-Breiten vorab fest, und diese Breiten bestimmen das größte Ergebnis, das eine Stage je zurückgeben kann.

Eine Pipeline braucht mindestens zwei Stages. Eine Ein-Stage-Pipeline wird rundheraus abgelehnt — Kopf und Ende sind verschiedene Rollen, und ein einzelner Node, der beide zusammenfallen lässt, ist eine andere Engine, kein kleinerer Ring.

Der Ring ist der Latenz-Pfad, und seine Körnung ist eine Layer. Experten-Sharding beseitigt diesen Boden, indem es innerhalb einer Layer schneidet, und dockt an dasselbe Serving-Gewebe an.