Ein Modell, das Firmenbeschreibungen einem Katalog von rund 900 Tätigkeiten zuordnet. Klingt nach einer überschaubaren Aufgabe. Ist es auch, bis man anfängt zu rechnen.
Die Aufgabe
Eine Firma beschreibt in ein paar Sätzen, was sie macht. Das Modell soll sagen, welche der 900 Tätigkeiten aus dem Katalog dazu passen. Nicht eine, oft mehrere. Und die Beschreibungen sind so, wie Menschen schreiben: unvollständig, mit Fachbegriffen, manchmal in drei Sprachen gleichzeitig.
900 Kategorien heisst: Viele davon liegen sehr nah beieinander. Der Unterschied zwischen zwei Tätigkeiten ist manchmal ein einziges Wort. Genau da werden Modelle unsicher.
Wie das Modell aufgebaut ist
Wir haben es nicht einem einzigen Modell überlassen. Das funktioniert bei 900 Klassen schlecht.
Die Embeddings suchen aus den 900 die zwanzig oder dreissig Kandidaten heraus, die inhaltlich nah dran sind. Das ist schnell und billig. Das LLM entscheidet dann zwischen diesen Kandidaten. Das ist langsamer und teurer, aber es sieht nur noch die Fälle, bei denen es wirklich um Nuancen geht.
Und der Feedback-Loop sammelt alles, was falsch lief. Das sind unsere wertvollsten Daten. Nicht die 49'000 Beispiele, die richtig waren. Die tausend, die es nicht waren.
Rechnen wir mal
Bis das Modell brauchbar war, haben wir 30 bis 50 Trainingsläufe gebraucht. Jeder Lauf mit rund 50'000 Beispielen, ein bis zwei Stunden auf einer A100 oder H100.
Bei rund 3 Dollar pro GPU-Stunde sind das 150 bis 250 Dollar reine Rechenzeit für die Entwicklung. Im Betrieb trainieren wir monatlich nach, das kostet nochmal ein paar Dutzend Dollar pro Jahr.
Fakt ist: Das ist nichts. Die Rechenzeit ist bei so einem einzigen Modell nicht das Problem.
Wo das Geld wirklich hingeht
Das Problem sind die 50'000 Beispiele.
Die muss jemand sammeln. Prüfen, ob die Zuordnung stimmt. Mit synthetischen Daten erweitern, damit auch seltene Kategorien genug Beispiele haben. Mit Hard Negatives ergänzen, also mit Fällen, die ähnlich aussehen, aber in eine andere Kategorie gehören. Und nach jedem Trainingslauf neu bewerten: Ist die neue Version wirklich besser als die alte, oder nur anders?
Ein Teil davon läuft über LLM-APIs. Synthetische Beispiele erzeugen, Zuordnungen vorschlagen, Fehler markieren. Das kostet pro Durchgang schnell einen vierstelligen Betrag. Deutlich mehr als das Training selbst.
Jemand muss wissen, dass „Sanitärinstallation" und „Heizungsbau" zwei verschiedene Tätigkeiten sind, obwohl dieselbe Firma oft beides macht. Jemand muss entscheiden, was passiert, wenn eine Beschreibung in keine Kategorie passt. Das ist Domainwissen, und es ist der teuerste Teil des ganzen Projekts.
Was ich daraus mitnehme
Wenn mich heute jemand fragt, was ein Modell kostet, frage ich zurück: Wer versteht die Daten?
Nicht: Welche GPU brauchen wir. Nicht: Welches Framework. Sondern: Wer sitzt daneben und sagt, ob die Antwort richtig ist? Und wie oft müssen wir das machen, bis es gut genug ist?
Die Antwort auf diese Fragen bestimmt den Preis. Alles andere ist ein Rundungsfehler.
150 Dollar für die GPU. Ein vierstelliger Betrag für die API. Und das Teuerste ist der Mensch, der die 900 Kategorien im Kopf hat. So sieht ein „kleines" Modell wirklich aus.
Geschrieben von mir. Die Gedanken, die Werte, die Learnings, die Fehler: alles meins. Grammatik und Rechtschreibung korrigiert unser eigenes Twin-Modell, das auf meinen Texten trainiert ist. Manchmal bleibt ein Hüpfer drin. Das ist dann auch von mir.