Warum das Modell auf einer anderen Maschine läuft
Auf der Maschine, die diese Seite ausliefert, läuft kein Sprachmodell. Die Überblicke werden auf einem zweiten Gerät berechnet, das sich Aufträge abholt, rechnet und die Sätze zurückbringt.
Der Grund ist Arithmetik. Ein 3B-Modell belegt über ein Gigabyte Arbeitsspeicher und braucht Sekunden je Antwort. Die schwerste Datenbankabfrage dieser ganzen Anwendung liegt bei 581 Millisekunden. Beides auf dieselbe Platine zu setzen heißt, dass die Zählerbilder von 379.000 Zählern hinter einem Textgenerator warten — und sie sind das eigentliche Produkt.
Was das kostet und was es einbringt
Es kostet eine zweite Maschine und eine Schlange. Aufträge werden höchstens zwanzig auf einmal herausgegeben; die Schlange hat eine Obergrenze, und ist sie voll, entsteht nichts Neues mehr — die schon geschriebenen Sätze bleiben sichtbar. Ein Überblick, der eine Woche alt ist, ist in Ordnung. Ein fehlender Überblick ist in Ordnung. Eine Statistikseite, die langsam ist, weil auf derselben Platine etwas anderes nachdenkt, ist es nicht.
Eingebracht wird, dass der Zählpfad nie eine Maschine mit etwas Unvorhersehbarem teilt. Ein Zählerbild zu zeichnen ist eine kleine, beschränkte Menge Arbeit. Text zu erzeugen ist es nicht: die gemessene Spanne für einen Satz liegt hier zwischen 5,4 und 54,3 Sekunden, ein Faktor zehn zwischen dem schnellen und dem langsamen Fall, und nichts davon kann der Pi vorher sehen.
Was dabei das Haus verlässt
Das ist der Teil, der entschieden sein musste, bevor irgendetwas gebaut wurde, denn es ist der Teil, den man hinterher nicht mehr reparieren kann.
Die zweite Maschine bekommt nur Zahlen, die auf der Statistikseite des Zählers ohnehin öffentlich stehen, und nur von Zählern, deren Statistikseite überhaupt öffentlich ist — nicht privat, nicht mit Passwort. Der Worker erfährt nichts, was ein Besucher dieser Seite nicht auch lesen könnte, indem er sie öffnet.
Das ist keine glückliche Nebenwirkung davon, wie der Code geraten ist. Die Kandidatenabfrage filtert danach, und ohne diesen Filter wäre die ganze Funktion die Weitergabe fremder Daten an ein zweites Gerät. Es gibt keine Fassung von „wir gehen sorgsam damit um", die so gut ist wie: nicht schicken.
Die allgemeine Form
Zwei Regeln sind dabei herausgekommen, die mehr wert sind als die Funktion selbst.
Unbeschränkte Arbeit gehört nicht auf den beschränkten Pfad. Alles, dessen Laufzeit man nicht auf eine Größenordnung genau vorhersagen kann, gehört nicht auf die Maschine, die in Millisekunden antworten muss. Nicht „meistens geht das schon" — der langsame Fall ist der, auf den es ankommt, und er kommt immer.
Entscheide, was hinausgehen darf, bevor du entscheidest, was du baust. Wäre die Antwort gewesen „der Worker braucht auch die privaten Zähler", dann wäre die richtige Reaktion nicht gewesen, die Übertragung abzusichern. Sie wäre gewesen, dass die Funktion private Zähler nicht abdeckt — und genau das tut sie.