§ Plattform / Model View
Klapp das Modell auf.
Model View ist ein Vollbild-Editor für das Innere eines Modells — Layer, Verbindungen, Gruppen, Gewichte, Adapter und das ganze Trainings-Setup an einem Ort. Doppelklick auf einen Modell-Knoten, und er klappt in drei Ansichten einer einzigen Definition auf: eine Canvas zum Umverdrahten, ein Formular zum Feinjustieren und Code, den du lesen und vergleichen kannst.
Visuell entwerfen, als Code zurücklesen
Skizziere die Architektur auf der Canvas, justiere sie Feld für Feld im Formular, oder schreib sie als Code — eine kompakte, lesbare Modellsprache, die du reviewen, vergleichen und einer Kollegin schicken kannst. Die drei widersprechen sich nie, denn sie sind drei Ansichten einer Definition, nicht drei Kopien: Ändere einen Layer irgendwo, und die anderen beiden rendern in unter 16 ms aus denselben Daten neu. Vertippst du dich im Code bei einem Layer-Namen, schlägt der Parser den gemeinten vor.
Die Synchronisation ist ehrlich darin, was sie tragen kann und was nicht. Der Code hält die Bedeutung des Modells — Architektur und Trainingssemantik —, die Canvas hält das Layout. Ein Layout lässt sich in Text nicht ausdrücken; nach einer Codeänderung legt die Canvas das Modell deshalb neu aus, statt so zu tun, als hätte der Text sich gemerkt, wo jeder Kasten saß. Alles, was ausmacht, *was* das Modell ist, übersteht den Rundlauf; die Anordnung auf dem Schirm wird neu hergeleitet — und wir schreiben das hin, statt es dich entdecken zu lassen.
Jede Architektur, die du zeichnen kannst
| Familie | In Model View ausgedrückt als |
|---|---|
| MLP · CNN · ResNet · Transformer | Das Grundvokabular — Layer, Kanten, Gruppen; als Vorlagen bereit, zum Aufklappen und Ändern. |
| GAN | Zwei Netze plus der adversariale Trainingsmodus — die Abwechslung wird konfiguriert, nicht handcodiert. |
| Siamese | Eine Gruppe mit geteilten Gewichten: die gepaarten Layer halten einen Satz Gewichte und machen einen Optimizer-Schritt. |
| MoE | Experten-Gruppen hinter einer Routing-Schicht; datenabhängige Formen tragen einen deklarierten Worst Case. |
| RNN · LSTM · GRU | Eine Schleife über die Zeitachse — Kontrollfluss, den der Compiler versteht, kein Engine-Sonderfall. |
| GNN | Message Passing, ausgedrückt als gather-/scatter-förmige Layer über Knoten- und Kantendaten. |
| Multi-Task | Mehrere Köpfe, ein Multi-Objective-Trainingsmodus und ein Loss-Combiner, den du aus dem Katalog wählst. |
Mitgelieferte Familien, keine Obergrenze — Encoder-Decoder, VAE und Diffusion sind ebenfalls dabei, und alles, was sich über dieselben Strukturen ausdrücken lässt, ist abgedeckt. Was das mitgelieferte Set nicht kennt, baust du.
Unterstützte Architekturen sind ein Kriterium, keine Liste: Model View drückt alles aus, was sich als Layer, Kanten, Gruppen und Plugs formulieren lässt — plus einen Trainingsmodus. Die mitgelieferten Familien decken den Kanon ab, und jede ist gewöhnliche Struktur, nie ein in die Engine gelöteter Sonderfall. Ein GAN ist zwei Netze plus ein adversarialer Trainingsmodus; ein Siamese-Netz ist eine Gruppe mit geteilten Gewichten; ein rekurrentes Netz ist eine Schleife über die Zeitachse.
Du startest selten auf leerer Canvas: Die mitgelieferten Vorlagen klappen zu editierbaren Modellen auf, und ein Satz, der beschreibt, was du willst, gibt dir einen ersten Entwurf. Dieser Generator ist die eine Bearbeitung, die ein Sprachmodell aufruft — sein Ergebnis landet als gewöhnliche Änderungen, sodass Undo, Wiedergabe und Verlauf das Modell nie erneut aufrufen. Eine Familie, die das mitgelieferte Set nicht kennt, entsteht als Inhalt — nie als Lücke in der Engine.
Feintuning, das den Namen verdient
Öffne ein trainiertes Modell, friere ein, was du ihm glaubst, und adaptiere den Rest. Einfrieren geht Layer für Layer oder Gruppe für Gruppe; Adapter docken an, wo du sie brauchst — aus dem Katalog gewählt, statt in dein Trainingsskript geforkt. Layer können sich einen Satz Gewichte teilen und zusammen einen einzigen Optimizer-Schritt machen, und Lernraten-Gruppen lassen den Kopf ein anderes Tempo laufen als die Basis — so erledigen ein paar Millionen Parameter die Arbeit von hundertachtundzwanzig.
Nichts davon ist Modellen vorbehalten, die hier geboren wurden. Ein Checkpoint, der als safetensors oder ONNX über Daten & Konnektoren ankommt, öffnet sich auf derselben Oberfläche, und dieselbe Chirurgie treibt sein Feintuning. Während du änderst, wandern die Parameter- und Speicherzahlen mit dem Modell mit — gesamt, trainierbar, eingefroren und der Speicherbedarf, auf den du zusteuerst —, und der Trainings-Planer macht aus dieser Schätzung eine harte Prüfung, bevor der erste Schritt läuft.
Ein Compiler liest mit
| Was sie fängt | Wann | Ein-Klick-Fix |
|---|---|---|
| Zwei Layer, deren Formen nicht zusammenpassen | beim Verbinden | Die Einstellung des Layers ändern oder die Verbindung umlegen. |
| Eine Schleife, die nie ausführen könnte | beim Schließen | Die schließende Kante entfernen. |
| Ein Trainer konfiguriert, ohne dass ein Loss einen Output erreicht | vor dem Lauf | Einen Loss verbinden. |
| Zahlenformate, die über eine Verbindung hinweg nicht zusammenpassen | beim Verbinden | Die Einstellung an einem der Enden ändern. |
| Alles stromabwärts eines echten Fehlers | sofort | Den Ursprung reparieren; der Rest löst sich auf. |
Die Diagnosen sind Inhalt, keine hartkodierte Liste — ein Layer-Typ, den jemand anderes gebaut hat, bringt eigene Prüfungen und eigene Abhilfen über denselben Weg mit.
Jede Änderung prüft das Modell inkrementell nach — nur die geänderten Layer und was stromabwärts von ihnen liegt; so bleibt die Prüfung auch bei einem echten Modell unter 100 ms. Eine variable Batch-Größe wird verstanden statt angemeckert; nicht zusammenpassende Formen, hängende Verbindungen, Schleifen und ein Trainer ohne Loss tauchen alle auf — angepinnt an exakt den Layer und den Port, aus dem sie kommen. Und wenn ein echter Fehler Wellen schlägt, bleibt der Ursprung rot, während alles Stromabwärtige gelb wird: Du reparierst eine Sache, nicht dreißig.
Jede Diagnose bringt ihre Abhilfe mit: die schließende Kante entfernen, die fehlende Verbindung ziehen, die Einstellung korrigieren — ein Klick, angewendet über denselben Weg, mit dem du auch änderst; ein Fix ist also rückgängig machbar wie jede andere Änderung. Codes und Abhilfen sind Inhalt, keine hartkodierte Liste: Ein Layer-Typ, den jemand anderes gebaut hat, bringt seine eigenen Diagnosen und Abhilfen mit, und ein Typ, den noch niemand gesehen hat, rendert schlicht — nie ein Absturz.
Das ganze Trainings-Setup an einem Ort
Alles, was einen Trainingslauf formt, wird dort konfiguriert, wo das Modell lebt: Optimizer, Zeitplan, Losses an die Outputs verdrahtet, Epochen, Batch-Größe, Mixed Precision, Gradient Clipping, Metriken — ein Ort, nie über die App verstreute Einstellungen. Jede Auswahlliste wird vom Katalog gespeist: Die Optimizer-Liste ist das, was dein Katalog hält — die mitgelieferte Bandbreite steht bei Training — und eine Methode, die du selbst geschrieben hast, erscheint in derselben Liste wie die mitgelieferten.
Zwei Einstellungen verdienen einen eigenen Satz. Der Trainingsmodus ist offen — standard, adversarial, multi-objective oder einer, den du definierst — und wie exakt der Lauf reproduzieren muss, wird hier deklariert, pro Lauf: debug, prod oder fast, sichtbar und nie still für dich gewählt. Weil das Setup Teil des Modells ist, bleibt es an ihm: Teile das Modell, und sein Trainings-Setup kommt unversehrt an — die Person am anderen Ende drückt auf Start, so wie es der Trainings-Guide durchgeht.
Auch Training über viele Standorte wird hier eingerichtet
Wenn ein Modell von einer Gruppe von Geräten trainiert wird statt von einem, lebt das Rezept trotzdem in Model View. Ein Föderations-Abschnitt am Trainer hält die Strategie, wie das Gelernte der einzelnen Geräte zusammengeführt wird, die Regeln, wer mitmachen darf, und die Datenschutz-Regler: Gradient Clipping und Rauschen, mit einem live mitlaufenden (ε, δ)-Datenschutzbudget. Für jeden Pool jenseits deiner eigenen Geräte sind bilanzierte Differential Privacy und Clipping die stets aktive Untergrenze, kein optionales Extra; und Secure Aggregation wird vorab gegen Größe und Fluktuation der Gruppe geprüft — sie lehnt begründet ab, statt so zu tun als ob.
Das Rezept ist sauber davon getrennt, wo es läuft. Architektur, Trainings-Setup und Föderations-Strategie leben am Modell und wandern mit ihm; welche Gerätegruppe es tatsächlich ausführt — unter welchem Vertrauensregime, mit welchen Peers, nach welchem Zeitplan — gehört zum Pool, der es ausführt. Die Wissenschaft bleibt portabel, während jedes Deployment bei den Leuten bleibt, die es machen.
Jede Geste ist auch ein Befehl
Hinter jeder Aktion in Model View steht ein Befehl — einen Layer hinzufügen, zwei Ports verbinden, eine Gruppe einfrieren, den Zeitplan setzen — ein Befehl pro Aktion. Der Copilot benutzt genau diese: Bitte ihn, den Decoder umzubauen, und er wendet dieselben geprüften Änderungen an, die du klicken würdest — zugeordnet, vorher erfragt und einzeln rückgängig machbar. Dieselben Befehle sind die offene Schnittstelle; ein Skript ist hier also nie zweite Klasse.
Die Historie ist so geschnitten, wie du denkst. Model View führt drinnen einen eigenen Undo-Stapel, und beim Hinausgehen faltet sich die ganze Sitzung zu einem einzigen Eintrag in der Historie des Workflows — eine Modelländerung, egal wie viele Gesten sie brauchte. Gespeichert wird versioniert wie überall: Ein veröffentlichtes Modell ändert sich nie an Ort und Stelle — dein Speichern prägt die nächste Version, und bestehende Versionen bleiben genau so, wie sie waren; was an ihnen hängt, bedeutet weiter, was es bedeutete.