Illustration eines privaten Datensatzes, mit dem auf einem gemieteten GPU-Server ein Sprachmodell feingetunt wird

LLM privat auf einer gemieteten GPU feintunen: Eine praktische Anleitung

Wann Fine-Tuning besser ist als RAG oder Prompting, VRAM-Bedarf für QLoRA nach Modellgröße, TRL, Unsloth und Axolotl, Datenschutz auf gemieteten GPUs, Kosten und Bereitstellung.

Sie können ein offenes 8B-Modell mit QLoRA auf einer einzigen gemieteten 24-GB-GPU mit Ihren eigenen Daten feintunen, und ein typischer Lauf kostet unter einem Dollar. Die schwierigeren Fragen kommen vorher: ob Fine-Tuning überhaupt die richtige Lösung ist (für Fakten gewinnt meist Retrieval) und wie Ihre Daten auf einer Maschine, die jemand anderem gehört, privat bleiben.

Diese Anleitung behandelt beides, dann den VRAM-Bedarf nach Modellgröße, die aktuellen Tools, ein funktionierendes Trainingsskript, eine Beispielrechnung und die Bereitstellung des Ergebnisses. Alles wurde im September 2026 geprüft; die Quellen stehen am Ende.

Fine-Tuning, RAG oder bessere Prompts

Fine-Tuning verändert, wie sich ein Modell verhält. Um ihm Fakten beizubringen, taugt es wenig. Ovadia et al. haben beides für das Einbringen von Wissen verglichen und festgestellt, dass RAG unüberwachtes Fine-Tuning „durchweg übertrifft“, „sowohl bei vorhandenem Wissen, das im Training vorkam, als auch bei völlig neuem Wissen“. Ihr Fazit: LLMs tun sich schwer, durch Fine-Tuning neue Fakten zu lernen.

Gehen Sie also diesen Baum durch, bevor Sie irgendetwas mieten:

Entscheidungsbaum für die Wahl zwischen Retrieval, besseren Prompts, Fine-Tuning und einem größeren Modell Die Antworten reichen nicht Fehlen Fakten, oder ändern sich die Daten? RAG nutzen Dokumente pro Anfrage durchsuchen Ja Nein Helfen Anweisungen und Beispiele? Prompt verbessern System-Prompt, Few-Shot-Beispiele Ja Nein Geht es um Format, Tonfall oder Fähigkeit? Fine-Tuning mit QLoRA Hunderte gute Beispiele Ja Nein Größeres Basismodell testen RAG und Fine-Tuning ergänzen sich: Verhalten trainieren, Fakten abrufen
Die meisten Probleme der Art „das Modell kennt unsere Sachen nicht“ sind Retrieval-Probleme. Fine-Tuning lohnt sich, wenn Sie jedes Mal dasselbe Verhalten brauchen: ein JSON-Schema, einen Hausstil, ein Klassifikationsschema.

Gute Gründe für Fine-Tuning:

  • Striktes Ausgabeformat. Bei jedem Aufruf Felder in Ihr Schema extrahieren, ohne eine Seite Anweisungen in jedem Prompt.
  • Stil und Tonfall. Support-Antworten, die wie Ihr Team klingen, oder Berichte mit fester Struktur.
  • Eine eng umrissene Aufgabe für ein kleines Modell. Ein angepasstes 8B-Modell kann ein großes Allzweckmodell für einen einzelnen Job ersetzen. Das zählt, wenn Sie es auf günstiger Hardware betreiben.
  • Kürzere Prompts. Verhalten, das in den Gewichten steckt, muss nicht in jeder Anfrage wiederholt werden.

LoRA und QLoRA

Vollständiges Fine-Tuning aktualisiert jedes Gewicht. Die GPU muss also zusätzlich zum Modell Gradienten und Optimizer-Zustand für alle Gewichte halten. LoRA friert das Basismodell ein und trainiert kleine Matrizen mit niedrigem Rang neben seinen Schichten; das ursprüngliche Paper meldete 10.000-mal weniger trainierbare Parameter und ein Drittel des GPU-Speichers im Vergleich zum vollständigen Fine-Tuning von GPT-3 175B mit Adam.

QLoRA geht weiter: Das eingefrorene Basismodell wird in 4-Bit-NF4-Präzision geladen, nur die Adapter werden in 16 Bit trainiert. Dettmers et al. haben damit ein 65B-Modell auf einer einzigen 48-GB-GPU feingetunt, „bei voller Leistung eines 16-Bit-Fine-Tunings“. Das Paper brachte drei Bausteine mit, die die Tools bis heute nutzen: den Datentyp NF4, doppelte Quantisierung der Quantisierungskonstanten und Paged Optimizers, die Speicherspitzen abfangen.

Das Ergebnis ist in beiden Fällen ein Adapter, ein Ordner mit ein paar Tensoren, den Sie auf das unveränderte Basismodell anwenden. Sie können ihn getrennt halten oder in die Gewichte einmergen. Bildmodelle nutzen dieselbe Methode: Eine Stable-Diffusion-LoRA lässt sich auf einer einzigen gemieteten 24-GB-Karte für deutlich unter 10 $ trainieren.

Wie viel VRAM Sie brauchen

Unsloth veröffentlicht eine Tabelle mit dem minimalen VRAM für Fine-Tuning nach Modellgröße. Das sind die Zahlen von Unsloth, mit dessen Speicheroptimierungen; normales Training mit Hugging Face braucht mehr, und längere Sequenzen oder größere Batches treiben jede Zeile nach oben.

ModellgrößeQLoRA (4 Bit)LoRA (16 Bit)Mietkarte, auf die QLoRA bequem passt
3B3,5 GB8 GBJede Karte ab 12 GB
8B6 GB22 GBRTX 3090 / 4090 (24 GB)
14B8,5 GB33 GBRTX 3090 / 4090 (24 GB)
32B26 GB76 GB48-GB-Karte (RTX A6000, A40, L40S)
70B41 GB164 GB80-GB-Karte (A100, H100)
Balkendiagramm des minimalen VRAM für das Fine-Tuning von 8B-, 14B-, 32B- und 70B-Modellen mit QLoRA und 16-Bit-LoRA, verglichen mit Karten mit 24, 48 und 80 GB QLoRA 4 Bit LoRA 16 Bit 24 GB 48 GB 80 GB 8B 6 22 14B 8,5 33 32B 26 76 70B 41 164 0 40 80 120 160 Minimaler VRAM in GB (Anforderungstabelle von Unsloth)
Erst QLoRA macht gemietete Consumer-Karten hier nützlich: Bis 14B passt alles mit Luft auf eine 24-GB-Karte, 32B braucht eine 48-GB-Karte und 70B eine mit 80 GB. Ohne 4-Bit-Laden passt selbst 8B kaum in 24 GB.

Mein Standard ist ein 8B- oder 14B-Modell auf einer RTX 4090. Das ist die günstigste Mietkarte, die Platz für Sequenzen mit 2.048 Tokens und eine vernünftige Batchgröße lässt, und Modelle dieser Größe lassen sich danach leicht bereitstellen. Wie Sie ein Basismodell nach dem VRAM wählen, auf dem Sie es später betreiben, steht in welche KI-Modelle in den VRAM Ihrer GPU passen.

Ein Tool wählen: TRL, Unsloth oder Axolotl

Alle drei sind Open Source, und alle beherrschen LoRA und QLoRA.

ToolBedienungStärkeWorauf achten
Hugging Face TRL + PEFTPython (SFTTrainer)Die Referenzimplementierung; DPO, GRPO und mehr über dieselbe APIBraucht beim selben Lauf mehr Speicher als Unsloth
UnslothPython oder die Web-Oberfläche Unsloth StudioVerspricht doppelte Geschwindigkeit und 70 % weniger VRAM; exportiert direkt nach GGUFStudio steht unter AGPL-3.0 (der Kern unter Apache 2.0)
AxolotlEine YAML-Datei, axolotl train config.ymlMehrere GPUs (FSDP, DeepSpeed), viele RezepteBraucht Python 3.11+ und PyTorch 2.11+

Stand September 2026 ist TRL bei Version 1.14 und PEFT bei 0.21. Unsloth braucht Python 3.11 bis 3.13 und eine NVIDIA-GPU mit CUDA Compute Capability 7.0 oder neuer (V100, T4, RTX-20-Serie und neuer). Axolotl empfiehlt Python 3.12 und PyTorch 2.12.1.

Nehmen Sie TRL, wenn Sie jede Zeile verstehen wollen, Unsloth, wenn der VRAM knapp ist oder Sie den GGUF-Export mit einem Aufruf wollen, und Axolotl, wenn Sie Läufe mit anderen Einstellungen wiederholen oder auf mehrere GPUs gehen. Das Skript unten nutzt TRL, weil es der kürzeste Weg ist, der alle beweglichen Teile zeigt.

Die Daten vorbereiten

SFTTrainer von TRL liest Konversationen im selben Format wie eine Anfrage an eine Chat-API. Ein JSON-Objekt pro Zeile in train.jsonl:

{"messages": [{"role": "system", "content": "Extract the invoice fields as JSON."}, {"role": "user", "content": "Invoice 4471 from Norden AB, due 12 March, total 1,250 EUR"}, {"role": "assistant", "content": "{\"invoice_id\": \"4471\", \"supplier\": \"Norden AB\", \"due\": \"2026-03-12\", \"total\": 1250, \"currency\": \"EUR\"}"}]}

Praktische Regeln:

  • Qualität vor Menge. Ein paar hundert bis ein paar tausend einheitliche, korrekte Beispiele schlagen Zehntausende verrauschte. Jeder Fehler in den Daten ist Verhalten, für dessen Training Sie bezahlen.
  • Wie in Produktion. Nutzen Sie den System-Prompt und das Eingabeformat, das Ihre Anwendung tatsächlich senden wird.
  • 5 bis 10 % zurückhalten. Behalten Sie Beispiele, auf denen das Modell nie trainiert, um Basismodell und angepasstes Modell direkt zu vergleichen.
  • Entfernen, was Sie nicht brauchen. Namen, E-Mail-Adressen, Kontonummern und IDs helfen dem Modell selten, ein Format zu lernen. Ersetzen Sie sie durch realistische Platzhalter, bevor die Daten Ihren Computer verlassen.

Bei der letzten Regel geht es um mehr als die gemietete Maschine. Carlini et al. haben Hunderte wörtliche Trainingssequenzen aus GPT-2 extrahiert, darunter Namen, Telefonnummern und E-Mail-Adressen, von denen manche nur in einem einzigen Trainingsdokument vorkamen. Ein feingetuntes Modell kann das, worauf es trainiert wurde, jedem wiedergeben, der es später nutzt.

Die Daten auf einer gemieteten Maschine privat halten

Auf einem GPU-Marktplatz gehört der Computer jemand anderem. Vast.ai sagt es klar: „Kunden sind in Docker-Containern ohne Root-Rechte isoliert und haben nur Zugriff auf ihre eigenen Daten“, und „die Sicherheit bei den Anbietern schwankt stark“. Diese Isolation schützt Sie vor anderen Mietern. Vor der Person mit physischem Zugang und Root-Rechten auf dem Host schützt sie nicht.

Für private Daten:

  1. Wählen Sie einen geprüften Rechenzentrums-Host. Die Secure-Cloud-Anbieter von Vast.ai sind „geprüfte Rechenzentren mit ISO-27001-Zertifizierung und Tier-3/4-Standard“, und Vast empfiehlt sie für sensible Arbeit. Die Secure Cloud von RunPod läuft in T3/T4-Rechenzentren; die Community Cloud verbindet Sie mit einzelnen Anbietern. Die Rechenzentrumsstufen kosten mehr pro Stunde und sind es hier wert.
  2. Laden Sie nur den bereinigten Datensatz hoch, über SSH (rsync -avP oder scp). Legen Sie ihn unterwegs nicht in einem öffentlichen Bucket oder hinter einem geteilten Link ab.
  3. Halten Sie das Logging lokal. In TRL 1.14 steht report_to standardmäßig auf "none", es geht also nichts an einen Experiment-Tracker, solange Sie das nicht einschalten. Rufen Sie push_to_hub nicht mit einem Adapter auf, der auf privaten Daten trainiert wurde.
  4. Holen Sie die Ergebnisse heraus und löschen Sie dann die Instanz. Laden Sie Adapter und Evaluationsergebnisse herunter, melden Sie sich bei Hugging Face ab (hf auth logout), falls Sie ein Token genutzt haben, und löschen Sie Instanz und Volumes. Bei Vast.ai wird Speicher berechnet und aufbewahrt, bis die Instanz gelöscht ist, nicht nur gestoppt.

Dateien in einem Container zu löschen garantiert nicht, dass die Festplatte des Hosts gelöscht wird. Der eigentliche Schutz sind deshalb die Schritte 1 und 2: Wählen Sie, wer die Hardware hält, und schicken Sie so wenig wie möglich dorthin. Mehr dazu in einen Datensatz auf einem öffentlichen GPU-Knoten absichern. Verbietet Ihre Richtlinie jede fremde Hardware, läuft dasselbe Skript auch auf Ihrer eigenen 24-GB-Karte.

Training: ein QLoRA-Skript mit TRL

Auf einer gemieteten Linux-Maschine mit RTX 3090 oder 4090:

python -m venv venv && source venv/bin/activate
pip install torch trl peft bitsandbytes datasets

Dann train.py, nach dem QLoRA-Muster aus der PEFT-Doku von TRL. Qwen3-8B steht unter Apache 2.0 und ist frei zugänglich, ein Hugging-Face-Token ist also nicht nötig:

import torch
from datasets import load_dataset
from peft import LoraConfig
from transformers import BitsAndBytesConfig
from trl import SFTConfig, SFTTrainer

dataset = load_dataset("json", data_files="train.jsonl", split="train")

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True,
)

peft_config = LoraConfig(
    r=16,
    lora_alpha=32,
    lora_dropout=0.05,
    target_modules="all-linear",
    task_type="CAUSAL_LM",
)

args = SFTConfig(
    output_dir="out",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=2e-4,
    lr_scheduler_type="cosine",
    warmup_steps=20,
    max_length=2048,
    bf16=True,
    logging_steps=10,
    save_strategy="epoch",
    model_init_kwargs={"dtype": torch.bfloat16},
)

trainer = SFTTrainer(
    model="Qwen/Qwen3-8B",
    args=args,
    train_dataset=dataset,
    quantization_config=bnb_config,
    peft_config=peft_config,
)
trainer.train()
trainer.save_model("out/adapter")

Die Entscheidungen, auf die es ankommt:

  • learning_rate=2e-4. Die Doku von TRL empfiehlt für QLoRA etwa das Zehnfache der üblichen Fine-Tuning-Rate. Steigt der Evaluations-Loss, während der Trainings-Loss fällt, liegt Overfitting vor: Nehmen Sie weniger Epochen.
  • r=16, target_modules="all-linear". Adapter auf jeder linearen Schicht, so wie in den Benchmarks von Unsloth. Rang 16 reicht für Format und Stil; für schwierigere Aufgaben erhöhen Sie ihn.
  • max_length=2048. Längere Beispiele werden abgeschnitten. Prüfen Sie die Token-Längen Ihrer Daten; ein höheres Limit braucht mehr VRAM.
  • Effektive Batchgröße 16 (4 × 4 Akkumulationsschritte). Geht der Speicher aus, senken Sie per_device_train_batch_size und erhöhen die Akkumulation, sodass das Produkt gleich bleibt.

Bevor Sie die Maschine herunterfahren, schicken Sie Ihre zurückgehaltenen Beispiele durch das Basismodell und das angepasste Modell und vergleichen die Ergebnisse. Nur dieser Test sagt Ihnen, ob das Geld etwas bewirkt hat.

Was es kostet

Trainingszeit ist Gesamtzahl der Tokens ÷ Durchsatz. GigaGPU, ein Hosting-Anbieter, hat für Llama 3.1 8B mit QLoRA auf einer RTX 4090 etwa 3.500 Trainings-Tokens pro Sekunde gemessen und veröffentlicht. Unter der Annahme eines ähnlichen Werts für Qwen3-8B:

Kleiner Lauf: 2.000 Beispiele × 600 Tokens × 3 Epochen = 3,6 Millionen Tokens. 3.600.000 ÷ 3.500 = 1.029 s, etwa 17 Minuten.

SchrittZeit
Umgebung einrichten10 Min.
Qwen3-8B herunterladen (16,4 GB Gewichte) und Daten hochladen10 Min.
Training17 Min.
Basismodell und angepasstes Modell auf zurückgehaltenen Daten vergleichen15 Min.
Mergen, exportieren, herunterladen, Instanz löschen15 Min.
Summe67 Min. (1,12 h)
  • RTX 4090 bei Vast.ai zu 0,31 $/h: 1,12 × 0,31 $ = 0,35 $
  • RTX 4090 bei RunPod zu 0,74 $/h (Listenpreis der Preisseite): 1,12 × 0,74 $ = 0,83 $

Größerer Lauf: 20.000 Beispiele × 1.000 Tokens × 2 Epochen = 40 Millionen Tokens ÷ 3.500 = 11.429 s, etwa 3,2 Stunden. Mit 50 Minuten desselben Drumherums sind es 4,0 Stunden: 1,24 $ bei Vast.ai oder 2,97 $ bei RunPod.

Für ein 32B-Modell listet RunPod im September 2026 48-GB-Karten zu 0,49 $/h (A40), 0,53 $/h (RTX A6000) und 1,09 $/h (L40S). Einen veröffentlichten Durchsatz für 32B-QLoRA auf diesen Karten habe ich nicht. Lassen Sie also 50 Schritte laufen, lesen Sie die Zeit pro Schritt aus dem Log ab und machen Sie dieselbe Multiplikation, bevor Sie sich auf einen langen Lauf festlegen.

Die Preise sind die Werte vom September 2026 von der Preisseite von RunPod und aus dem Tracker von getdeploying.com für Vast.ai. Secure- und Rechenzentrumsstufen kosten mehr als die günstigsten Community-Angebote. Das Gesamtbild steht im GPU-Preisvergleich.

Das Ergebnis bereitstellen

Sie haben zwei Möglichkeiten: den Adapter getrennt halten oder ihn ins Modell mergen.

Getrennt halten mit vLLM. vLLM lädt LoRA-Adapter neben dem Basismodell und stellt jeden unter einem eigenen Modellnamen auf seinem OpenAI-kompatiblen Server bereit:

vllm serve Qwen/Qwen3-8B --enable-lora --lora-modules invoices=./out/adapter

Clients senden dann "model": "invoices". Mehrere Adapter können sich ein Basismodell auf einer GPU teilen.

Mergen und in Ollama ausführen. Mergen Sie den Adapter in Gewichte mit voller Präzision, konvertieren Sie sie mit llama.cpp nach GGUF, quantisieren Sie und importieren Sie das Ergebnis:

import torch
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer

model = AutoPeftModelForCausalLM.from_pretrained("out/adapter", dtype=torch.bfloat16)
model.merge_and_unload().save_pretrained("merged")
AutoTokenizer.from_pretrained("Qwen/Qwen3-8B").save_pretrained("merged")
python llama.cpp/convert_hf_to_gguf.py merged --outfile invoices-bf16.gguf --outtype bf16
./llama.cpp/build/bin/llama-quantize invoices-bf16.gguf invoices-Q4_K_M.gguf Q4_K_M
echo "FROM ./invoices-Q4_K_M.gguf" > Modelfile
ollama create invoices -f Modelfile

Unsloth erledigt Merge und GGUF-Export in einem Aufruf (model.save_pretrained_gguf("dir", tokenizer, quantization_method="q4_k_m")). Die Doku warnt, dass die häufigste Ursache für schlechte Antworten nach dem Export das falsche Chat-Template ist: Stellen Sie das Modell mit dem Template bereit, mit dem Sie trainiert haben. Die Abwägungen zwischen Ollama, vLLM und TGI stehen in unserem Inferenz-Benchmark auf der RTX 4090.

Wo GPUFlow ins Spiel kommt

Das Training kann GPUFlow nicht übernehmen: Es vermietet eine OpenAI-kompatible API auf der GPU eines Anbieters, ohne Shell, SSH oder Dateizugriff. Ihr feingetuntes Modell kann es auch nicht bereitstellen. Mieter können keine Modelle hochladen; angeboten werden die Modelle, die der jeweilige Anbieter installiert hat (meist mit Ollama), etwa qwen2.5:7b oder llama3.1:8b.

Helfen kann es beim Schritt davor: für ein paar Cent prüfen, ob ein normales offenes Modell mit einem guten Prompt die Aufgabe schon erledigt. Das ist im Entscheidungsbaum das günstigste Ergebnis. Nutzen Sie dafür Testdaten, nicht die privaten Daten, um die es in dieser Anleitung geht: Prompts und Antworten laufen während der Miete im Klartext über den Rechner des Anbieters. Wie das funktioniert, steht im API-Schnellstart, und den API-Schlüssel in Apps nutzen zeigt, wie Sie ihn mit bestehenden Tools verbinden.

Quellen

Alle geprüft im September 2026.

Häufige Fragen

Wie viel VRAM brauche ich, um ein 7B- oder 8B-Modell zu feintunen?

Mit QLoRA nennt die Anforderungstabelle von Unsloth etwa 5 GB für ein 7B-Modell und 6 GB für ein 8B-Modell; normales 16-Bit-LoRA braucht etwa 19 GB und 22 GB. Echte Läufe brauchen Reserve für längere Sequenzen und größere Batches, daher ist eine 24-GB-Karte wie die RTX 3090 oder 4090 die bequeme Wahl.

Soll ich feintunen oder RAG nutzen?

Nutzen Sie RAG, wenn das Modell Fakten aus Ihren Dokumenten braucht, vor allem Fakten, die sich ändern. Eine Studie von Ovadia et al. aus dem Jahr 2024 ergab, dass RAG beim Hinzufügen von Wissen durchweg besser abschnitt als unüberwachtes Fine-Tuning. Feintunen Sie, wenn Sie ein gleichbleibendes Format, einen festen Tonfall oder ein eng umrissenes Verhalten brauchen, das sich per Prompt nicht zuverlässig erreichen lässt.

Was kostet es, ein LLM auf einer gemieteten GPU zu feintunen?

Ein QLoRA-Lauf auf einem 8B-Modell mit 2.000 Beispielen dauert mit Einrichtung etwas über eine Stunde. Das sind etwa 0,35 $ auf einer RTX 4090 bei Vast.ai zu 0,31 $/h oder 0,83 $ zum Listenpreis von RunPod von 0,74 $/h (September 2026). Ein Lauf mit 20.000 Beispielen dauert etwa vier Stunden und kostet 1,24 $ bis 2,97 $.

Kann der GPU-Host meine Trainingsdaten sehen?

Dem Host gehört die Hardware, gehen Sie also davon aus, dass er es könnte. Container-Isolation schützt Sie vor anderen Mietern, nicht vor dem Besitzer der Maschine. Nutzen Sie für sensible Daten geprüfte Rechenzentrums-Hosts (Vast.ai Secure Cloud, RunPod Secure Cloud), entfernen Sie personenbezogene Daten vor dem Hochladen und löschen Sie die Instanz, wenn Sie fertig sind.

Was ist der Unterschied zwischen LoRA und QLoRA?

LoRA friert das Basismodell ein und trainiert kleine Adapter-Matrizen. QLoRA macht dasselbe, lädt das eingefrorene Basismodell aber in 4-Bit-NF4-Präzision. Das senkte den Speicherbedarf im ursprünglichen Paper so weit, dass sich ein 65B-Modell auf einer einzigen 48-GB-GPU feintunen ließ.

Kann ich bei GPUFlow feintunen oder mein Modell hochladen?

Nein. GPUFlow ist reine Inferenz: Sie mieten eine OpenAI-kompatible Chat-API für Modelle, die Anbieter auf ihren eigenen Rechnern installiert haben, meist mit Ollama. Es gibt keine Shell und keinen Dateizugriff, Sie können dort also weder trainieren noch ein eigenes Modell hochladen.