AI-generated image
AI

Wie aus einer Tabelle ein AI-Inference-Router wurde

3 Min. Lesezeit

Ich bin eher zufällig auf Spot-Pricing für AI-Compute gestoßen. Und habe dann natürlich einen Service daraus gebaut.

Die Kurzfassung: GPU-Preise schwanken enorm zwischen Anbietern. Gleiches Modell, gleicher Output, unterschiedliche Kosten je nach Zeitpunkt und Anbieter. Eine H100 kostet bei einem Anbieter gerade $2,10/Stunde. Dieselbe GPU bei einem anderen: $3,80/Stunde. Morgen sehen die Zahlen wieder anders aus.

Das habe ich auf die harte Tour gelernt. Ich hatte AIVory Guard bei einem einzelnen Anbieter laufen, den ich ausgewählt hatte, weil er zum Zeitpunkt meiner Recherche am günstigsten war. Einen Monat später war die Rechnung 40% höher als erwartet. Die Preise hatten sich verschoben und ich hatte es nicht gemerkt.

Also habe ich eine Tabelle geöffnet. Alle Anbieter aufgelistet, ihre Preise, Latenz, Uptime. Zum neuen günstigsten gewechselt. Die Rechnung ging runter. Für etwa eine Woche.

Die Tabelle war am Dienstag korrekt und am Freitag falsch. GPU-Spotpreise bewegen sich wie Strommärkte. Anbieter haben ungenutzte Kapazität zwischen Reservierungen und verkaufen sie mit Rabatt, manchmal 60% unter On-Demand. Aber der Preis schwankt mit der Nachfrage, und nicht alle Anbieter haben ihre Spitzen zur gleichen Zeit.

Von der Tabelle zum Router

Ich habe ein Script geschrieben, das stündlich Preise geprüft und den günstigsten ausgewählt hat. Dann habe ich Health Checks hinzugefügt, weil der günstigste Anbieter auch der war, der am häufigsten ausfiel. Dann kamen Latenz-Filter dazu, weil manche Anbieter schnell, aber weit weg sind. Dann automatisches Failover, weil wenn ein Anbieter mitten im Request ausfällt, man woanders nochmal probieren muss, nicht warten.

Ab diesem Punkt war es kein Script mehr. Es war ein Service. Eine Zeile im Code ändern - die API Base URL - und der Router schickt jeden Request an den Anbieter, der gerade am günstigsten ist, Kapazität hat und die Latenz-Anforderungen erfüllt. Wir nennen es Smart Inference.

Die Routing-Entscheidung dauert etwa 50ms. Das ist der Overhead. Für Echtzeit-Chat spürbar. Für Batch-Verarbeitung, Content-Generierung, Hintergrund-Jobs ist es nichts.

Die Schwierigkeit war nicht das Routing

Die Routing-Logik war überschaubar. Die Schwierigkeit war das Health Monitoring.

GPU-Anbieter fallen aus. Sie erreichen Kapazitätsgrenzen. Sie haben Wartungsfenster, die sie auf Twitter ankündigen statt über ihre API. Ein Anbieter hat sechs Stunden lang 200 OK mit leeren Antworten zurückgegeben, bevor wir es gemerkt haben. Ein anderer hat Requests still in eine Warteschlange geschoben - die Antwort kam, irgendwann, nach 45 Sekunden Wartezeit.

Also haben wir Health Checks gebaut, die alle 60 Sekunden echte Inference-Requests senden. Kleine, ein paar Tokens. Wir messen echte Antwortzeit, echte Output-Qualität, echte Fehlerraten. Ein Anbieter, der langsamer wird, bekommt niedrigere Priorität, bevor er komplett ausfällt.

Die andere Schwierigkeit: Preisdaten. Nicht jeder Anbieter veröffentlicht Echtzeit-Spotpreise über eine API. Manche aktualisieren ihre Preisseite einmal am Tag. Manche verhandeln individuelle Raten. Am Ende haben wir Scraper gebaut, API-Zugang verhandelt und in manchen Fällen einfach unsere eigenen Abrechnungsdaten überwacht, um aktuelle Raten abzuleiten.

Wo es nicht funktioniert

Fine-tuned Models sind an einen Anbieter gebunden. Wenn du bei Lambda fine-tuned hast, kannst du nicht zu CoreWeave routen - die haben deine Weights nicht. Wir können zwischen Anbietern routen, die dasselbe Base-Modell hosten, nicht Custom Weights.

Latenz-kritische Endpoints mit Sub-100ms-Anforderungen brauchen eine dedizierte Instanz nahe an den Usern. Der 50ms Routing-Overhead plus mögliches geografisches Routing macht das ungeeignet.

Anbieter-spezifische Features - Structured Output, erweiterte Context Windows, bestimmte Function-Calling-Implementierungen - brechen, wenn du weg vom Anbieter routest, der sie anbietet.

Die Zahlen

Bei gemischten Workloads liegen die durchschnittlichen Einsparungen bei 30-40% gegenüber einem einzelnen Anbieter. Bei Batch-lastigen Workloads mit flexibler Latenz haben wir bis zu 55% gesehen.

Der Service läuft auf Prepaid-Credits. Kein Abo, kein Minimum. Du lädst Credits auf und wir ziehen zum tatsächlichen Spot-Preis plus einer kleinen Routing-Gebühr ab. Wenn du es ausprobieren willst - aivory.net/smart-inference. Eine Zeile ändern. Guck dir die Rechnung nach einer Woche an.

Wie immer halte ich euch auf dem Laufenden ;)