Spaces:
Running on Zero
Running on Zero
File size: 4,214 Bytes
6fd8284 1ef2400 2fa8acf c475df5 2fa8acf 6b505e9 2fa8acf 1ef2400 2fa8acf 6b505e9 1ef2400 c475df5 2c603a0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | ---
title: ZeroGPU Fast Mini-Trainer
emoji: ⚡
colorFrom: yellow
colorTo: red
sdk: gradio
sdk_version: 6.31.0
app_file: app.py
pinned: true
hf_oauth: true
hf_oauth_scopes:
- read-repos
- write-repos
license: agpl-3.0
short_description: ZeroGPU Fast Mini-Trainer for train small LLMs
---
LoRA-Fine-Tuning für kleine SmolLM-Modelle auf ZeroGPU. Jeder Nutzer loggt sich ein und nutzt seine eigene Tagesquote.
# ZeroGPU Mini-Trainer – Anleitung für Blöde mit KI geschrieben!
## Was ist das?
Eine kleine Webseite (Gradio), auf der man ein winziges KI-Modell (SmolLM) in ein paar Minuten
etwas beibringen kann. Man gibt ein Modell, einen Datensatz (Dataset) und ein Ziel an, klickt
auf einen Knopf, und fertig ist ein "angelernter" Aufsatz für das Modell.
## Die Begriffe in einfach
- **Basismodell**: Die KI, die schon etwas kann (z. B. SmolLM2-135M-Instruct).
- **Dataset**: Beispiele, wie die KI antworten soll (Frage + Antwort).
- **LoRA / Adapter**: Statt das ganze Modell umzubauen, trainieren wir nur einen kleinen Zusatz
(ein paar MB). Das ist schnell und billig. Der Zusatz heißt Adapter.
- **ZeroGPU**: Eine GPU von Hugging Face, die man nur für ein paar Minuten am Tag bekommt.
Die Zeit gehört dem Nutzer, der eingeloggt ist, nicht dem Space.
- **Epoche**: Einmal alle Beispiele durchgehen. Mehr Epochen = lernt stärker, kann aber
auswendig lernen.
- **Loss**: Fehlerwert. Wenn er beim Training sinkt (z. B. 2.5 → 1.4), lernt das Modell.
## Welche Dateien gibt es?
- `app.py` – das Programm (Oberfläche + Training + Hochladen).
- `requirements.txt` – Liste der Python-Pakete, die der Space installieren soll.
- `README.md` – Einstellungen für Hugging Face (Gradio, Login an). Nicht löschen!
- `train.jsonl` – kleines Test-Dataset.
## Einrichten (einmalig)
1. Auf Hugging Face: **New Space** → SDK **Gradio** → Hardware **ZeroGPU**.
2. `app.py`, `requirements.txt`, `README.md` hochladen. Warten, bis der Space "Running" zeigt.
3. **New Dataset** erstellen (privat ist okay) und `train.jsonl` hochladen.
4. Optional: **New Model** (leer, privat) für das Ergebnis anlegen.
## Benutzen
1. Space öffnen, **Sign in with Hugging Face** klicken.
2. Basismodell wählen (für den Anfang 135M).
3. Dataset-URL oder `name/dataset` eintragen.
4. Ziel-Repo eintragen (oder leer lassen).
5. **Training starten**. Im Statusfeld siehst du, was passiert.
6. Am Ende steht dort der Link zum fertigen Adapter.
## Einstellungen, die du kennen musst
- **Max. GPU-Sekunden**: So lange darf das Training laufen. Quote beachten (Free = ca. 5 Min/Tag).
Bei 150 s hast du noch Luft für einen zweiten Versuch.
- **Max. Beispiele**: Wie viele Zeilen aus dem Dataset genutzt werden.
- **Epochen**: Für kleine Datasets 2-3, für große 1.
- **LoRA Rank**: Größe des Zusatzes. 16 ist ein guter Start.
- **Learning Rate**: 2e-4 passt für LoRA fast immer.
## Dataset-Formate (automatisch erkannt)
1. `messages` (empfohlen):
`{"messages": [{"role": "user", "content": "Hi"}, {"role": "assistant", "content": "Hallo!"}]}`
2. `text`: `{"text": "ein ganzer Beispieltext"}`
3. `instruction` + `output` (auch `prompt`/`response`, `question`/`answer`).
Eine Zeile pro Beispiel (JSONL), Datei z. B. `train.jsonl`.
## Das trainierte Modell benutzen
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = "HuggingFaceTB/SmolLM2-135M-Instruct"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base)
model = PeftModel.from_pretrained(model, "dein-name/dein-modell-repo")
```
Tipp: Mit `model = model.merge_and_unload()` wird alles zu einem normalen Modell zusammengefügt.
## Wenn was schiefgeht
- **Quota-Fehler**: Die Tageszeit ist aufgebraucht. Morgen wieder oder weniger Sekunden einstellen.
- **Spalten nicht erkannt**: Dataset-Format anpassen oder den Spaltennamen im Feld "Textspalte" angeben.
- **Zugriff verweigert**: Beim Login die Rechte (lesen und schreiben) erlauben.
- **Space startet nicht**: In den Logs (Tab "Logs") steht der Fehler. Den kopieren und fragen.
- **Training bringt nichts**: Mehr und bessere Beispiele nehmen. Ein paar Hundert saubere
Beispiele schlagen tausend schlechte. |