
LLM Fine-Tuning für Einsteiger 2026 – LoRA & QLoRA
LLM Fine-Tuning für Einsteiger 2026: LoRA & QLoRA Schritt für Schritt erklärt – Hardware, Kosten, Code-Beispiele und fertige Trainings-Setups.
OpenAI Whisper ist seit 2022 Open Source und hat sich bis 2026 zum De-facto-Standard für Speech-to-Text entwickelt. Die Cloud-Preise sind allerdings nicht gesunken: OpenAI verlangt weiterhin 0,006 USD pro Minute für whisper-1 und gpt-4o-transcribe — das sind 0,36 USD pro Stunde Audio. Bei 1.000 Stunden Material im Monat landen Sie bei 360 USD, ohne Datenhoheit und ohne Kontrolle über Latenz oder Modellversion.
Self-Hosting lohnt sich 2026 in fast allen Szenarien: Ein dedizierter GPU-Server bei Hetzner kostet rund 184 EUR im Monat und schafft mit large-v3-turbo und Batch-Inferenz mehrere tausend Stunden Audio monatlich. Der Break-even liegt bei etwa 500 Stunden pro Monat — darunter ist die Cloud günstiger, darüber ist Self-Hosting um den Faktor 10 bis 15 billiger.
Dazu kommen Argumente, die sich nicht in Euro messen lassen: DSGVO-Konformität bei Arzt-, Anwalts- oder Personalgesprächen, keine Rate-Limits, keine Modell-Deprecations, eigene Diarisierung und die Möglichkeit, fein-getunte Modelle (Fine-Tuning auf Fachvokabular) einzusetzen.
Dieser Guide zeigt konkret, welche Modelle 2026 relevant sind, welche Hardware Sie brauchen, wie Sie faster-whisper und whisper.cpp installieren, eine OpenAI-kompatible API in Docker betreiben und was das Ganze real kostet.
Die Modellfamilie hat sich seit large-v3 deutlich verändert. large-v3-turbo (Oktober 2024) reduziert den Decoder von 32 auf 4 Layer, behält aber den Encoder — das Ergebnis ist 6- bis 8-mal schneller bei nahezu identischer Qualität. distil-large-v3 und distil-large-v3.5 sind destillierte Varianten mit 756M Parametern, die vor allem für Streaming interessant sind.
| Modell | Parameter | VRAM (fp16) | RTF (RTX 4090, batched) | WER Deutsch (Common Voice) |
|---|---|---|---|---|
| tiny | 39 M | ~1 GB | 0,005 | ~22 % |
| base | 74 M | ~1 GB | 0,008 | ~16 % |
| small | 244 M | ~2 GB | 0,012 | ~12 % |
| medium | 769 M | ~5 GB | 0,03 | ~8,5 % |
| large-v3 | 1.550 M | ~10 GB | 0,06 | ~5,5 % |
| large-v3-turbo | 809 M | ~6 GB | 0,02 | ~6,0 % |
| distil-large-v3.5 | 756 M | ~6 GB | 0,015 | ~6,5 % |
RTF (Real-Time Factor) bedeutet: 0,02 heißt, eine Stunde Audio wird in 72 Sekunden transkribiert. Die Werte gelten für Batch-Größe 16 mit Silero-VAD und float16. Auf einer RTX 4000 SFF Ada (20 GB) rechnen Sie mit dem 2,5-fachen RTF, auf einer A100 mit dem 0,6-fachen.
Für deutschsprachige Produktionsworkloads ist large-v3-turbo 2026 die beste Wahl: Der Qualitätsverlust gegenüber large-v3 liegt bei etwa 0,5 Prozentpunkten WER, der Speedup bei Faktor 3. Nur bei stark akzentuiertem Audio, Fachjargon oder mehrsprachigen Meetings mit Code-Switching lohnt sich noch large-v3.
Die wichtigste Entscheidung ist GPU oder CPU. GPU-Inferenz mit float16 ist 15- bis 40-mal schneller als CPU-Inferenz mit int8, kostet aber monatlich 3- bis 5-mal mehr. Bei weniger als 200 Stunden Audio pro Monat ist eine CPU-Lösung fast immer wirtschaftlicher.
large-v3-turbo mit Batch-Größe 8 (RTX 3070, RTX 4060 Ti).Intel Sapphire Rapids mit AMX-Beschleunigung erreicht bei int8 überraschend gute Werte: Ein Xeon Gold 5412U transkribiert large-v3-turbo mit RTF 0,35 — das ist etwa 3-mal Echtzeit. AMD EPYC Genoa (9004) liegt mit AVX512 bei RTF 0,5 bis 0,7.
Wichtig: faster-whisper nutzt CTranslate2 und braucht cuBLAS und cuDNN 9. Bei NVIDIA-Treibern ab 550 sind die Bibliotheken über nvidia-cublas-cu12 und nvidia-cudnn-cu12 per pip installierbar — das erspart manuelles CUDA-Toolkit-Management im Container.
faster-whisper ist der Standard für Server-Deployments: CTranslate2-Backend, 4-mal schneller als das Referenz-Repository von OpenAI, geringerer VRAM-Verbrauch und native Batch-Inferenz.
python3 -m venv /opt/whisper/venv
source /opt/whisper/venv/bin/activate
pip install --upgrade pip
pip install faster-whisper==1.1.1 nvidia-cublas-cu12 nvidia-cudnn-cu12
Ein minimales Transkriptionsskript mit Batch-Pipeline, VAD und Wort-Zeitstempeln:
from faster_whisper import WhisperModel, BatchedInferencePipeline
model = WhisperModel(
"large-v3-turbo",
device="cuda",
compute_type="float16",
download_root="/opt/whisper/models",
num_workers=2,
)
pipe = BatchedInferencePipeline(model=model)
segments, info = pipe.transcribe(
"interview.mp3",
batch_size=16,
language="de",
vad_filter=True,
vad_parameters={"min_silence_duration_ms": 500},
word_timestamps=True,
beam_size=5,
condition_on_previous_text=False,
)
print(f"Sprache: {info.language} ({info.language_probability:.2f})")
for s in segments:
print(f"[{s.start:7.2f} -> {s.end:7.2f}] {s.text.strip()}")
Setzen Sie condition_on_previous_text=False, wenn Sie Halluzinations-Schleifen bei langen Stillepassagen vermeiden wollen — ein bekanntes Whisper-Problem, bei dem das Modell Sätze wiederholt oder Untertitel-Floskeln erfindet. Der Silero-VAD-Filter entfernt Stille vor der Inferenz und spart bei Meeting-Aufnahmen 20 bis 40 Prozent Rechenzeit.
Für maximale Geschwindigkeit aktivieren Sie compute_type="int8_float16" — das halbiert den VRAM-Bedarf bei etwa 1 Prozent WER-Verlust. Auf älteren GPUs ohne Tensor-Cores (Pascal, Turing) ist int8 sogar schneller als float16.
whisper.cpp von Georgi Gerganov ist die richtige Wahl, wenn Sie keine GPU haben, auf ARM (Hetzner CAX, Raspberry Pi 5, Apple Silicon) arbeiten oder eine einzelne statische Binary ohne Python-Abhängigkeiten brauchen. Der Build mit CUDA- oder Metal-Support ist ein Einzeiler:
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build -DGGML_CUDA=1 -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
bash ./models/download-ggml-model.sh large-v3-turbo
Der integrierte HTTP-Server ersetzt eine komplette API:
./build/bin/whisper-server \
-m models/ggml-large-v3-turbo.bin \
--host 0.0.0.0 --port 8080 \
-t 8 -p 4 --convert
-t 8 setzt 8 Threads, -p 4 erlaubt 4 parallele Requests. Auf einem Hetzner AX102 (Ryzen 9 7950X3D, 16 Kerne) erreichen Sie mit large-v3-turbo in q5_0-Quantisierung etwa RTF 0,9 — also knapp schneller als Echtzeit bei 8 Threads. Mit small sinkt der RTF auf 0,25.
Der Vorteil: Der gesamte Dienst läuft in unter 200 MB RAM-Overhead, startet in 300 Millisekunden und kann problemlos in einen systemd-Service oder Kubernetes-Sidecar verpackt werden. Für Batch-Verarbeitung großer Archive ist faster-whisper auf GPU trotzdem die bessere Wahl.
Für den Produktivbetrieb wollen Sie eine API, die sich wie OpenAI anfühlt — dann können bestehende Clients (LangChain, Open WebUI, n8n, eigene Skripte) einfach die base_url umbiegen. Speaches (vormals faster-whisper-server) ist 2026 die ausgereifteste Lösung.
docker run -d --name speaches \
--gpus all \
-p 8000:8000 \
-v /srv/whisper/models:/home/ubuntu/.cache/huggingface/hub \
-e WHISPER__INFERENCE_DEVICE=cuda \
-e WHISPER__COMPUTE_TYPE=float16 \
-e WHISPER__TTL=-1 \
-e API_KEY=sk-hostazar-geheim \
ghcr.io/speaches-ai/speaches:latest-cuda
Danach funktioniert der OpenAI-Endpunkt eins zu eins:
curl http://localhost:8000/v1/audio/transcriptions \
-H "Authorization: Bearer sk-hostazar-geheim" \
-F [email protected] \
-F model=Systran/faster-whisper-large-v3-turbo \
-F language=de \
-F response_format=verbose_json
Das Image lädt Modelle beim ersten Request automatisch von Hugging Face und cached sie im Volume. Mit WHISPER__TTL=-1 bleiben sie dauerhaft im VRAM — der erste Request dauert dann 8 bis 15 Sekunden (Modell-Load), alle weiteren 200 bis 400 Millisekunden für kurze Clips.
Für Diarisierung kombinieren Sie Speaches mit WhisperX oder pyannote.audio 3.1 in einem separaten Container. WhisperX liefert Wort-Alignment über wav2vec2 mit einer Genauigkeit von ±50 ms und Speaker-Labels pro Segment — das ist der Standard für Untertitel und Meeting-Protokolle.
Der größte Performance-Hebel ist die Batch-Größe. Whisper verarbeitet 30-Sekunden-Fenster; bei Batch-Größe 1 läuft die GPU zu 90 Prozent im Leerlauf. Faustregeln für eine 24-GB-GPU mit large-v3-turbo:
| Batch-Größe | VRAM | RTF | Durchsatz (h Audio/h) |
|---|---|---|---|
| 1 | 3,2 GB | 0,09 | 11 |
| 8 | 5,1 GB | 0,035 | 29 |
| 16 | 7,4 GB | 0,022 | 45 |
| 32 | 12,0 GB | 0,018 | 56 |
| 64 | 21,5 GB | 0,016 | 63 |
Weitere Optimierungen: Audio-Preprocessing auf 16 kHz Mono (ffmpeg -ar 16000 -ac 1) reduziert den Decoding-Overhead um 5 bis 10 Prozent. VAD-Segmentierung vor dem Batch spart bei Meetings mit vielen Pausen bis zu 40 Prozent. Beam Size 1 statt 5 halbiert die Decoder-Zeit bei etwa 0,3 Prozentpunkten WER-Verlust — für Massenverarbeitung akzeptabel.
Für sehr große Archive (10.000+ Stunden) empfiehlt sich eine Queue-Architektur: Redis oder RabbitMQ als Broker, 4 bis 8 Worker-Container mit je eigener GPU-Slice, Ergebnisse in PostgreSQL mit Volltextindex. Ein einzelner RTX-4090-Worker schafft so dauerhaft 40 bis 60 Stunden Audio pro Stunde.
Reine Transkription reicht selten. Für Untertitel brauchen Sie Wort-Zeitstempel, für Meeting-Protokolle Speaker-Labels, für Podcasts Kapitelmarken.
Wort-Alignment über faster-whisper mit word_timestamps=True ist gut, aber nicht perfekt (±200 ms). Für Broadcast-Qualität nutzen Sie WhisperX mit wav2vec2-large-xlsr-53-german — das Alignment-Modell läuft auf derselben GPU und kostet etwa 15 Prozent zusätzliche Rechenzeit.
Diarisierung mit pyannote/speaker-diarization-3.1 benötigt einen Hugging-Face-Token und etwa 4 GB VRAM zusätzlich. Die Pipeline läuft in zwei Schritten: erst Diarisierung (wer spricht wann), dann Zuordnung der Whisper-Segmente zu Speakern über maximale zeitliche Überlappung.
from pyannote.audio import Pipeline
import torch
dia = Pipeline.from_pretrained(
"pyannote/speaker-diarization-3.1",
use_auth_token="hf_xxxxxxxxxxxx"
).to(torch.device("cuda"))
result = dia("meeting.wav", num_speakers=4)
for turn, _, speaker in result.itertracks(yield_label=True):
print(f"{turn.start:7.2f} {turn.end:7.2f} {speaker}")
Für Deutsch erreicht pyannote 3.1 eine Diarisierungs-Fehlerrate (DER) von 12 bis 18 Prozent bei 4 Sprechen und sauberem Audio — bei Telefonqualität steigt sie auf 25 bis 35 Prozent. Rechnen Sie mit 5 bis 8 Prozent der Gesamtlaufzeit für die Diarisierung.
Die folgende Tabelle vergleicht die realen Kosten bei 1.000 Stunden Audio pro Monat (Stand Q1 2026, ohne Egress- und Storage-Kosten).
| Anbieter / Setup | Preis pro Stunde Audio | 1.000 h / Monat | Datenhoheit |
|---|---|---|---|
| OpenAI whisper-1 / gpt-4o-transcribe | 0,36 USD | 360 USD | nein |
| Deepgram Nova-3 (Pay-as-you-go) | 0,258 USD | 258 USD | nein |
| AssemblyAI Universal-2 | 0,15–0,37 USD | 150–370 USD | nein |
| Google STT v2 (Dynamic Batch) | 0,18 USD | 180 USD | nein |
| Azure Speech (Batch) | 0,36 USD | 360 USD | nein |
| Self-Hosted, Hetzner GEX44 (RTX 4000 Ada) | ~0,026 EUR | 184 EUR flat | ja |
| Self-Hosted, Hetzner AX102 (CPU only) | ~0,10 EUR | 68 EUR flat | ja |
| Self-Hosted, RunPod RTX 4090 (on-demand) | ~0,09 USD | ~90 USD | ja |
Der Break-even gegenüber OpenAI liegt bei 511 Stunden pro Monat (184 EUR / 0,36 USD), gegenüber Deepgram bei 713 Stunden. Darunter fahren Sie mit der Cloud günstiger — aber nur, wenn Sie keine DSGVO-Anforderungen haben und mit Rate-Limits leben können.
Wichtig bei RunPod und Vast.ai: Sie zahlen pro Sekunde Laufzeit. Wenn Sie die GPU nur 6 Stunden am Tag für Batch-Jobs nutzen, kostet ein RTX 4090 bei RunPod etwa 0,44 USD/h × 180 h = 79 USD im Monat — günstiger als jedes dedizierte Angebot. Für 24/7-API-Betrieb ist der dedizierte Server bei Hetzner klar im Vorteil.
Für dedizierte GPU-Server ist Hetzner GEX44 (i7-13700, 64 GB DDR5, RTX 4000 SFF Ada 20 GB, 2× 1 TB NVMe) mit rund 184 EUR/Monat plus 79 EUR Setup der Referenzpunkt in Europa — deutsche Rechenzentren, DSGVO-konform, unschlagbares Preis-Leistungs-Verhältnis für 20 GB VRAM.
Wer mehr VRAM braucht (Diarisierung + Batch 32), findet bei OVHcloud oder Scaleway L40S-Instanzen ab etwa 1,20 EUR/h. Lambda Labs bietet A100 40 GB ab 1,29 USD/h, RunPod RTX 4090 ab 0,34 USD/h (Community) und Vast.ai RTX 3090 ab 0,20 USD/h — letzteres mit stark schwankender Zuverlässigkeit.
Für CPU-only-Workloads ist Hetzner AX102 (Ryzen 9 7950X3D, 128 GB ECC, 2× 1,92 TB NVMe) für etwa 68 EUR/Monat die stärkste Option. Alternativ die Cloud-Serie CPX51 (16 vCPU AMD, 32 GB) für 30 EUR/Monat — allerdings ohne dedizierte Kerne und damit mit schlechterer Vorhersagbarkeit.
Bei allen Anbietern gilt: Prüfen Sie den Traffic. 1.000 Stunden Audio in 16 kHz Mono WAV sind etwa 115 GB Upload. Bei Hetzner sind 20 TB inklusive, bei RunPod und Vast.ai zahlen Sie Egress separat.
Eine Whisper-API ohne Authentifizierung ist ein offenes Tor: Jeder kann Ihre GPU für beliebige Transkriptionen missbrauchen. Mindestanforderungen für den Produktivbetrieb:
API_KEY-Env bei Speaches) und Rotation alle 90 Tage.--privileged, read-only Root-Filesystem, no-new-privileges.Für Monitoring sind drei Metriken entscheidend: RTF pro Request (Alarm bei über 0,5), VRAM-Auslastung (nvidia-smi dmon -s mu) und Queue-Tiefe. Stellen Sie alle drei über den Prometheus-Exporter bereit und bauen Sie Grafana-Dashboards mit p95-Latenz.
Skalierung erfolgt horizontal über Worker-Replikate hinter einem Load-Balancer, nicht über größere GPUs. Ab etwa 3.000 Stunden Audio pro Monat lohnt ein zweiter GEX44 mit Round-Robin-Verteilung; ab 10.000 Stunden wechseln Sie auf Kubernetes mit GPU-Operator und Node-Pools.
large-v3-turbo ist für fast alle Fälle optimal: 6 Prozent WER auf Common Voice Deutsch, RTF 0,02 auf einer RTX 4090 und nur 6 GB VRAM. Nur bei starkem Akzent, Fachvokabular oder Code-Switching lohnt sich large-v3 mit etwa 5,5 Prozent WER. Für Echtzeit-Streaming mit minimaler Latenz nehmen Sie distil-large-v3.5.
Ja, ab etwa 8 Kernen mit AVX2. whisper.cpp mit large-v3-turbo in q5_0 erreicht auf einem Ryzen 9 7950X3D RTF 0,9 — also knapp Echtzeit. Mit small sinkt der RTF auf 0,25. Für Batch-Verarbeitung ist eine GPU aber 15- bis 40-mal schneller und bei über 500 Stunden pro Monat auch günstiger.
Für large-v3-turbo mit Batch-Größe 16 reichen 8 GB. Mit Diarisierung (pyannote 3.1) kommen 4 GB dazu, mit Wort-Alignment (wav2vec2) weitere 1,5 GB. Planen Sie 16 GB für einen komfortablen Produktivbetrieb, 24 GB wenn Sie Batch-Größe 32 oder mehrere Sprachen parallel fahren wollen.
Ja, sofern der Server in der EU steht und Sie einen Auftragsverarbeitungsvertrag mit dem Hoster haben. Hetzner, OVHcloud und Scaleway bieten AVV an. Achten Sie darauf, dass Modelle nicht automatisch von Hugging Face nachgeladen werden, ohne dass Sie die Lizenz geprüft haben — laden Sie Modelle einmalig und betreiben Sie einen lokalen Mirror.
Gegenüber OpenAI Whisper (0,36 USD/h) liegt er bei etwa 511 Stunden Audio pro Monat, gegenüber Deepgram Nova-3 (0,258 USD/h) bei 713 Stunden. Darunter ist die Cloud günstiger, darüber sparen Sie mit einem 184-EUR-GPU-Server schnell 70 bis 90 Prozent der Kosten.
Bedingt. Whisper ist ein Offline-Modell und arbeitet mit 30-Sekunden-Fenstern. Für echte Echtzeit nutzen Sie distil-large-v3.5 mit Chunk-Größe 1 Sekunde und condition_on_previous_text=True, oder Sie wechseln zu spezialisierten Streaming-Modellen wie NVIDIA Parakeet oder Kyutai STT. Latenzen unter 800 ms sind mit Whisper auf einer RTX 4090 erreichbar.