Rechnen lassen, ohne GPU zu besitzen
Dein vorhandener OpenAI-Code läuft gegen ein Dutzend Anbieter, wenn du eine einzige Zeile änderst.
Meilenstein Dieselbe Chat-Anfrage läuft einmal über den Standard-Anbieter und einmal über einen europäischen - der Unterschied im Code ist ein Suffix hinter dem Modellnamen.
Ein Modell auf deinem Laptop ist ehrlich, aber langsam. Eine eigene GPU ist schnell, aber teuer und steht die meiste Zeit still. Dazwischen liegt der Weg, den fast alle gehen: Rechenzeit mieten, sekundenweise.
Hugging Face bietet dafür zwei sehr verschiedene Dinge an, und der Unterschied ist wichtig genug, um ihn vorweg zu sagen.
Inference Providers ist ein Gateway. Du schickst eine Anfrage an eine Adresse, und Hugging Face leitet sie an einen von einem Dutzend Rechenanbietern weiter. Nichts läuft dabei bei Hugging Face selbst. Abgerechnet wird nach verbrauchter Rechenzeit, ohne Aufschlag.
Inference Endpoints ist eigene, gemietete Hardware. Ein Modell, eine Maschine, deine Wahl von Anbieter und Region, stundenweise abgerechnet - auch wenn sie nichts tut.
Das erste ist der Prototypen-Weg, das zweite der Betriebs-Weg.
Schritt 1 - Eine Zeile ändern
Das Gateway spricht das OpenAI-Protokoll. Wenn du irgendwo OpenAI-Code liegen
hast, brauchst du genau eine Änderung: die base_url.
pip install -U openai
export HF_TOKEN=hf_... # dein Token aus Kapitel 02# router.py
import os
from openai import OpenAI
client = OpenAI(
base_url="https://router.huggingface.co/v1",
api_key=os.environ["HF_TOKEN"],
)
antwort = client.chat.completions.create(
model="openai/gpt-oss-120b",
messages=[{"role": "user", "content": "Nenne drei Vorteile von Parquet gegenüber CSV."}],
)
print(antwort.choices[0].message.content)
python router.pyDa rechnet gerade ein 120-Milliarden-Parameter-Modell für dich, und dein Rechner hat dabei nichts getan außer eine HTTPS-Anfrage zu stellen.
Schritt 2 - Den Anbieter wählen
Interessant wird es beim Modellnamen. Er kann ein Suffix tragen:
model="openai/gpt-oss-120b" # Voreinstellung des Hubs
model="openai/gpt-oss-120b:groq" # dieser Anbieter, ausdrücklich
model="openai/gpt-oss-120b:fastest" # der gerade schnellste
Hinter dem Doppelpunkt steht der Anbieter. Über ein Dutzend sind angebunden -
Cerebras, Groq, Together, Fireworks, Nebius, Novita, Replicate, Cohere,
SambaNova, Scaleway und andere, dazu hf-inference, der hauseigene. Auf der
Modellseite steht rechts, welche Anbieter dieses Modell bedienen.
Das ist mehr als ein Schalter für Geschwindigkeit. Es ist die Stelle, an der du bestimmst, wo deine Daten verarbeitet werden - und damit der Übergang zum nächsten Abschnitt.
Schritt 3 - Wo landen deine Daten?
Für alles, was mit personenbezogenen Daten arbeitet, ist das die einzige Frage, die zählt. Es gibt drei ehrliche Antworten, und sie unterscheiden sich stark.
Selbst betrieben. Modell auf eigener Hardware, mit transformers, vLLM,
llama.cpp oder TGI. Die Daten verlassen deine Infrastruktur nicht. Das ist die
beste Position und die einzige, die ohne Vertragswerk auskommt. Preis: Du
kümmerst dich um alles.
Inference Endpoints in einer EU-Region. Dedizierte, gemanagte Maschinen mit
wählbarem Anbieter und wählbarer Region; die EU-Option ist derzeit AWS
eu-west-1 in Irland. Zertifiziert, mit Auftragsverarbeitung, private
Netzanbindung möglich. Das ist der übliche Kompromiss, wenn man nicht selbst
betreiben will.
Inference Providers. Deine Anfrage geht an einen Partner weiter, und dessen Datenschutzerklärung gilt zusätzlich zu der von Hugging Face. Hier hilft die Anbieterwahl: Scaleway ist ein französischer, europäischer Anbieter im Gateway.
model="…:scaleway" # dieselbe Anfrage, europäische Verarbeitung
Für den EU AI Act ist noch etwas anderes relevant: Wer ein Modell einsetzt, hat andere Pflichten als wer es baut - aber Transparenz darüber, was du verwendest, gehört in beiden Fällen dazu. Die Model Card aus Kapitel 01 ist auch dafür das Werkzeug.
Schritt 4 - Wenn aus dem Prototyp Betrieb wird
Sobald Anfragen regelmäßig kommen, wird das Gateway zur falschen Wahl: keine garantierte Kapazität, kein fester Anbieter, keine Region-Zusage. Dann nimmst du einen Inference Endpoint.
Das ist ein Modell auf einer Maschine, die dir für die Dauer gehört. Du wählst Modell, Cloud-Anbieter, Region und Hardware; du bekommst eine eigene URL, ebenfalls OpenAI-kompatibel. Los geht es ab wenigen Cent pro Stunde für CPU; GPU-Stufen beginnen bei etwa 0,50 $ pro Stunde und reichen weit nach oben (Stand August 2026).
Das wichtigste Merkmal heißt Scale to Zero: Kommt eine Weile keine Anfrage - voreingestellt sind 15 Minuten -, fährt der Endpunkt auf null Repliken herunter und kostet nichts mehr. Die nächste Anfrage weckt ihn, und die wartet dann auf den Kaltstart. Für Lastprofile mit Lücken ist das der Unterschied zwischen 40 $ und 400 $ im Monat; für einen Dienst, bei dem die erste Anfrage schnell sein muss, ist es die falsche Einstellung.
Endpunkte lassen sich auch aus Code verwalten - anlegen, pausieren,
skalieren - über huggingface_hub. Das ist der Weg, wenn ein Endpunkt zu einem
nächtlichen Batch-Lauf gehört und tagsüber nicht existieren soll.
Die Entscheidungshilfe
| Lage | Weg |
|---|---|
| Ausprobieren, gelegentliche Anfragen | Inference Providers, Guthaben |
| Prototyp mit europäischer Verarbeitung | Inference Providers mit :scaleway |
| Regelmäßige Last, EU-Datenstandort nötig | Inference Endpoint, AWS eu-west-1, Scale to Zero |
| Datensouveränität ist die Anforderung | selbst betreiben |
| Dauerlast, eigene Hardware vorhanden | selbst betreiben (vLLM oder TGI) |
Welche Engine dafür in Frage kommt und was sie unterscheidet, steht im Baustein Inferenz-Engines.
Der Meilenstein
Ein Skript, das dieselbe Frage zweimal stellt: einmal ohne Suffix, einmal mit
:scaleway oder einem anderen ausdrücklich gewählten Anbieter. Beide Antworten
werden ausgegeben, zusammen mit der Dauer.
import os, time
from openai import OpenAI
client = OpenAI(base_url="https://router.huggingface.co/v1",
api_key=os.environ["HF_TOKEN"])
frage = [{"role": "user", "content": "Ein Satz: Was ist Scale to Zero?"}]
for modell in ["openai/gpt-oss-120b", "openai/gpt-oss-120b:fastest"]:
start = time.time()
r = client.chat.completions.create(model=modell, messages=frage)
print(f"{modell}: {time.time() - start:.1f}s")
print(r.choices[0].message.content, "\\n")
Der Nachweis ist nicht die Antwort, sondern der Diff: Zwischen den beiden Aufrufen liegt ein Suffix, und dahinter liegt ein anderes Rechenzentrum.