§1Ein Weg

Deine Arbeit und unsere sind dasselbe

matmulOp · eingebautuser/mira/rms-normOp · selbst erstelltEin Katalogdieselben PrüfungenDeine GPUgenau ein Weg
Abb. 1 — Ein Weg: ein eingebauter Op und ein selbst geschriebener Op landen im selben Katalog, bestehen dieselben Prüfungen und laufen auf dieselbe Art auf deiner GPU. Die Herkunft ist ein Metadatum; die Ausführung liest sie nie.

Die meisten Plattformen liefern zwei Sorten Code aus: ihren eigenen, ins Produkt kompiliert, und deinen, auf Abstand gehalten hinter einer Plug-in-Schnittstelle. Scellis liefert eine Sorte. Alles, was die Engine ausführen kann — inklusive allem, was wir selbst einbauen — ist Inhalt in einem Katalog: ein Weg hinein, dieselben Prüfungen, dieselbe Art zu laufen. Ein Op, den du schreibst, läuft exakt über den Weg eines eingebauten Ops; nichts in der Engine fragt, woher er kommt.

Diese Gleichheit ist strukturell, nicht kosmetisch — sie reicht bis in die Ausführung hinunter, und ein Builtin zu bevorzugen, gilt als Fehler und wird automatisch abgefangen wie jede andere Regression. Sichtbar unterscheidet sich nur die Kosmetik: ein user/-Präfix im Namen, ein Herkunfts-Chip auf der Karte. Wenn wir selbst einen Op hinzufügen, fügen wir ihn als Inhalt hinzu, nach denselben Regeln.

§2Was wir behalten

Drei Grammatiken, ein Prüfer, eine Referenz — mehr nicht

Was wir behaltenWas es regeltWas es dir freischaltet
Die Shape- & Signatur-SpracheWas ein Operator zusagt — Formen, Achsen, Reduktionen, ZahlentypenDeklariere jeden Operator; die Engine liest die Zusage generisch
Das Speicherlayout für GPU-KernelsWie ein Kernel an seine Daten kommt — Puffer, geteilter Zwischenspeicher, KonstantenGekachelte Matrixmultiplikationen, Reduktionen, Stencils — schreibbar, nicht reserviert
Die Art, Gradienten zu schreibenAbleitungsregeln als gewöhnliche zusammengesetzte GraphenJeder Gradient, den du per Komposition ausdrücken kannst, ist schreibbar
Der PrüferAlles Geschriebene — beim Erstellen und bei jeder ÄnderungDerselbe Prüfer sichert auch jedes Builtin ab
Die Referenz-ImplementierungWie Rechnen Vertrauen verdient — eine Referenz zum Nachrechnen, Toleranzen, GradientenprüfungenDein Kernel verdient genau denselben Nachweis wie unserer

Alles außerhalb dieser Tabelle ist Inhalt, den du schreiben kannst. Auch ein Op, den wir selbst hinzufügen, kommt als Inhalt herein, geprüft nach denselben Regeln.

Alles, was wir zurückhalten, passt in drei Grammatiken, die die Engine generisch liest. Eine Shape- und Signatur-Sprache sagt, was ein Operator zusagt: welche Formen er nimmt, welche Achsen er reduziert, welche Zahlentypen er akzeptiert. Ein Speicherlayout für GPU-Kernels beschreibt, wie ein Kernel an seine Daten kommt — eine gekachelte Matrixmultiplikation, eine Reduktion oder ein Stencil ist damit etwas, das du schreiben kannst, statt etwas, das uns vorbehalten bleibt. Und eine Art, Gradienten zu schreiben, macht eine Ableitungsregel zu einem gewöhnlichen zusammengesetzten Graphen, so ausdrucksstark wie jeder Vorwärtspfad. Alles, was in diesen dreien geschrieben wird, gehört dir.

Der Unterbau darunter wird genauso präzise offengelegt. Eine kleine Menge ist bewusst geschlossen — die Zahlentypen, die Formregeln, die Präzisionsstufen mit ihren Toleranzen, die Handvoll Kontrollflussformen. Darauf schreibst du jeden Op, jeden Kernel, jeden Gradienten; und wenn wirklich etwas Neues nötig ist — ein komplexer Zahlentyp, eine achte Art von Schleife — kommt es als additives, versioniertes Release der Engine, nie als eingebauter Inhalt und nie als Privileg, von dem wir dir nichts gesagt haben.

Der Test, an dem wir uns messen, ist bewusst kein Machine Learning. Ein Finite-Differenzen-Stencil, eine neue Statistik, ein Simulationsschritt muss über genau denselben Weg laufen — Ops, Kernels, Blöcke, Kontrollfluss, Typen — ohne dass irgendetwas aus der Trainingsmaschinerie beteiligt wäre. Die Regel ist unmissverständlich: Wenn du ohne uns keinen Laplace-Operator schreiben kannst, gehört das Fundament uns, nicht dir.

§3Stückliste

Die Builtins sind nur der Startbestand

NameArtHerkunftBestandene Messlatte
matmulOp + sein GPU-Kernelbuilt-ingeprüft · trifft die Referenz innerhalb der Toleranz
user/mira/rms-normOp + sein GPU-Kernelusergeprüft · trifft die Referenz innerhalb der Toleranz
training/optimizer/adamOptimizerbuilt-ingeprüft · jede Abhängigkeit auf eine exakte Version gepinnt
user/kav/adam-cautiousOptimizerusergeprüft · jede Abhängigkeit auf eine exakte Version gepinnt
training/loss/focalLossbuilt-ingeprüft · per Komposition differenzierbar
user/ada/quantile-huberLossusergeprüft · per Komposition differenzierbar

Eingebaute und Nutzerzeilen lesen sich identisch, weil sie identisch sind — ein Katalog, dieselben Prüfungen, eine Art zu laufen. Herkunft ist Darstellung; die Engine verzweigt nie danach.

Der eingebaute Katalog ist ein Startbestand, nie eine Obergrenze: Die Optimizer, Losses und Scheduler, mit denen das Produkt kommt, sind durch dieselbe Tür hereingekommen wie deine — geschrieben, geprüft, veröffentlicht, ausgeliefert. Und Schreiben ist eine vollwertige Oberfläche des Studios, keine Nur-Code-Luke: Beim Erstellen oder Bearbeiten liegt jedes Attribut offen, das die Sache unterstützt — von ihrer Signatur und der Art, wie sie streamt, bis zu Zitaten und Lizenz.

Lies die Liste unten in beide Richtungen. Eine eingebaute Zeile und eine Nutzerzeile derselben Art geben dieselbe Zusage, bestehen dieselben Prüfungen und laufen gleich; die Herkunftsspalte ist die einzige Zelle, die sich unterscheidet, und die Engine liest sie nie. Genau das heißt „erstklassig“ mechanisch — der Katalog hat keinen Dienstboteneingang.

§4Die Messlatte

Geschrieben heißt geprüft — in beide Richtungen

Alles, was du schreibst — jede Art von Sache, nicht nur Blöcke — besteht beim Erstellen und bei jeder Änderung dieselbe Prüfung. Dieselbe Prüfung sichert jedes Builtin ab, die Garantie gilt also in beide Richtungen: Deine Arbeit wird validiert wie unsere, und unsere ist nachweislich vollständig nach genau den Regeln, die für dich gelten. Fehlende Metadaten, ein nicht deklarierter Effekt, eine unvollständige Signatur — klar abgelehnt, egal wer es geschrieben hat.

Rechnen verdient sich Vertrauen, statt es zu behaupten. Ein Kernel, den du schreibst, wird mit einer schlichten Referenz-Implementierung gepaart, und der Nachweis, dass die GPU-Fassung diese Referenz trifft — innerhalb einer Toleranz, die du angibst — ist das, was andere ihm vertrauen lässt; auf deinem eigenen Gerät kannst du deinen ungeprüften Kernel jederzeit laufen lassen. Gradienten werden numerisch gegen deinen eigenen Vorwärtspfad geprüft, und selbst die Algebra, die du für eine Reduktion angibst, wird getestet, bevor sich etwas darauf verlässt.

Bearbeiten ist das Geschwister des Schreibens. Builtins ändern sich nie — eines zu „bearbeiten“ heißt, eine eigene Kopie zu forken — während deine eigenen Dinge an Ort und Stelle bearbeitet werden, über denselben geprüften Weg, der sie erzeugt hat. Und Vertrauen wird unabhängig davon verdient, wer etwas geschrieben hat: Dinge klettern anhand von Belegen von unverified über community und verified bis official — von Nutzern geschriebene Arbeit kann also genau dasselbe Abzeichen tragen wie unsere.

§5Komposition & Wiederverwendung

Importieren und nutzen — wie eine Bibliothek

Dein Opruft auf, was im Katalog liegtuser/ada/quantile@1matmul@4Feste Versionenmatmul@4 · 9f3a…user/ada/quantile@1 · c41d…scellis.com/studio?repro=8f2ac1
Abb. 2 — Importieren und nutzen: Beide Aufrufe in deinem Op lösen auf eine exakte Version und einen Inhalts-Hash auf, und die Zustimmung wird für das gesamte Set auf einmal eingeholt. Ein Link führt genau dieses Set erneut aus.

In allem, was du schreibst — einem Op, einem Block, der Referenz eines Kernels, dem Eingang eines Konnektors — rufst du andere Dinge aus dem Katalog auf, wie du eine importierte Bibliothek nutzen würdest, und die Imports schreiben sich selbst: Der Prüfer liest deine Aufrufstellen und hält fest, wovon du abhängst; ein sichtbares Abhängigkeits-Panel *ist* die Import-Anweisung — zieh etwas hinein, und die Verbindung steht. Aufruf für Aufruf steht es im Guide: eigene Erweiterungen schreiben.

Jeder Aufruf löst auf eine exakte Version und einen exakten Inhalts-Hash auf — nie auf „was gerade am neuesten ist“ — also ist, was du zusammensetzt, per Konstruktion reproduzierbar und läuft offline; ein Link führt genau dieses Set erneut aus. Effekte reichen durch: Eine „pure“ Hilfsfunktion kann keinen Netzaufruf über eine Abhängigkeit einschmuggeln, denn die Zustimmung wird für das gesamte Set auf einmal eingeholt. Und Namen lassen sich nicht fälschen — ein von jemand anderem geschriebener Op namens relu überschattet nie das eingebaute relu.

Ein Pack aus dem Marketplace ist sofort live, und was darin steckt, kannst du auf der Stelle aufrufen — installieren, dann aufrufen, so wie du eine Bibliothek in ein Notebook ziehst. Was davon abhängt, bleibt auf genau die Version gepinnt, die es aufgelöst hat: Eine Änderung stromaufwärts verändert nie, was du schon gebaut hast, und ein Update ist eine Entscheidung, die du triffst — nie etwas, das dir passiert.

§6Das Schwungrad

Veröffentlichen, ohne dass irgendwer irgendwas neu baut

Vor dem Veröffentlichen läuft eine Probe: Sind alle Versionen gepinnt, liegt der Nachweis vor, sind die Effekte deklariert, sind die Metadaten vollständig, hat alles Öffentliche eine Lizenz? Ausgeliefert wird ein signiertes, versioniertes Pack; wer es installiert, prüft zuerst seinen Hash, und es ist bei ihm live, ohne dass die App neu gebaut wird — bei dir und bei allen anderen.

Deshalb ist eine fehlende Integration nie etwas, worauf du bei uns wartest. Das eingebaute Konnektor-Set ist bewusst klein: Der nächste Konnektor, das nächste Format, die nächste Trainingsmethode ist einen Nachmittag Arbeit entfernt — veröffentlicht und auffindbar am selben Tag. Mehr Menschen, die schreiben, heißt: mehr, was die Plattform kann; wir pflegen drei Grammatiken, einen Prüfer und eine Referenz. Die Schleife — schreiben, prüfen, veröffentlichen, entdecken, ausführen — ist dein Startpunkt, keine Roadmap.

Veröffentlichen ist auch kein Fire-and-forget. Ein Sicherheitshinweis oder eine Abkündigung zu einer veröffentlichten Version erreicht alle, die darauf gepinnt sind, und Forks tragen ihre Herkunft und ihre Lizenz mit sich — was du aus dem Katalog nimmst, ist also eine Einladung zum Weiterbauen und keine Sackgassen-Kopie.