p4
De engine achter Kvasir: een event-geadresseerd protocol waarin agents nodes bezitten, stage-servers lagen vasthouden, en plaatsing iets is wat een operator vastlegt in plaats van iets wat het netwerk raadt.
p4 draait één model over meerdere machines door het in stages te knippen — aaneengesloten plakken van zijn lagen — en elke stage een eigen proces te geven. Een agent bezit de nodes op een host: hij start stage-servers, routeert events ertussen en staat in voor hun levenscyclus. Er is geen scheduler die bepaalt waar iets heen gaat; een operator schrijft een placement plan, laadt het, en het netwerk serveert daarna precies dat.
Het verzoekpad door een p4-deployment.
browser / SDK → gateway :8791 # payment, settlement, the wallet app → bridge :19000 # OUTER: session, submit, gather → p4 agent # owns this host's nodes → stage servers # one process per layer slice
Een stage belt de agent van de volgende stage
Wanneer een stage zijn lagen af heeft, geeft hij het resultaat door aan de volgende stage door zijn eigen agent te vragen een verbinding te openen naar de agent van die stage, op het adres dat die agent adverteert. Het geadverteerde adres is daarom niet cosmetisch: het moet bereikbaar zijn vanaf elke andere host in de ring, en het hoort het snelste netwerk te noemen dat ze delen. Adverteer loopback en een ring van twee hosts belt stilletjes zichzelf.
Eén getal bindt een load samen
- De load generation wordt gekozen door wie laadt en wordt op exacte gelijkheid gecontroleerd bij elke sessie, inferentie, verrekening en unload. Hij wordt nergens op de machines vastgelegd, dus de lader schrijft hem naar schijf *voordat* het eerste commando vertrekt — zonder dat getal kan een geladen model niet eens meer worden afgebroken.
- De generation van een node en de load generation zijn hetzelfde getal. De adapter vergelijkt de bron-generation van een release-bon met de load waar die bij hoort en stopt de node wanneer ze verschillen, dus een ring die met twee verschillende getallen is geladen serveert één verzoek en verliest dan zijn kop.
- Een operationeel journaal is verplicht voordat een model überhaupt laadt: het is de toelatingsregistratie die een load replay-veilig maakt, geen debughulpmiddel.
Bewuste weglatingen
p4 past geen chat-template toe — het stuurt een ondoorzichtige prompt door en verwacht dat de aanroeper het beurtformaat van het model al heeft gerenderd. Het neemt geen plaatsingsbeslissingen. En het kent geen begrip van wie er betaald moet worden: stages rapporteren de tokenrijen die ze hebben gedraaid, en verrekening is andermans contract. Elk daarvan is een naad die Kvasir invult in de [bridge](/wiki/bridge), waardoor de engine smal genoeg blijft om upstream te kunnen volgen.
De agent en de native stage-server zijn één release. Een agent die uit een nieuwere tree is gebouwd faalt bij READY op een ontbrekende capaciteit in de HELLO van de stage-server — nadat het hele model is geladen. Bouw beide uit dezelfde checkout.