Der Rechner in meinem Zimmer hat 12 GB Grafikspeicher, und das ist der Grund für diesen Text. Ich wollte wissen, ob ein Modell, das komplett auf dieser Karte läuft, für meine Aufgaben reicht – ohne API, ohne Datenübertragung, ohne monatliche Rechnung. Also habe ich Llama 2 in der 7B- und der 13B-Version heruntergeladen und gegen ein kommerzielles API-Modell laufen lassen.
Llama 2 ist im Juli 2023 erschienen, mit 7, 13 und 70 Milliarden Parametern, und es ist heute nicht mehr das beste offene Modell. Das ist mir klar. Ich habe es trotzdem genommen, weil es in unserem Seminar als Referenz dient und weil sich an seiner Lizenz eine Frage zeigt, die bei jedem „offenen“ Modell wiederkehrt: Offene Gewichte sind nicht dasselbe wie Open Source.
Warum lokal überhaupt
Drei Gründe, in der Reihenfolge, in der sie für mich zählen. Erstens: Daten, die das Haus nicht verlassen dürfen, kann ich nicht an eine API schicken. Zweitens: Reproduzierbarkeit, weil eine API-Version sich ändern kann, ohne dass meine Ergebnisse sich ändern dürfen. Drittens: Kosten, die bei 200 Aufgaben irrelevant sind, bei 200.000 aber nicht.
Der Preis ist bekannt und wird oft kleingeredet: Du betreibst Infrastruktur, du bist für Updates verantwortlich, und du bist bei der Qualität ungefähr ein Jahr hinterher. Ob das ein Problem ist, hängt an der Aufgabe. Für eine Klassifikation mit klaren Kategorien ist der Rückstand oft egal. Für eine Beratung in natürlicher Sprache ist er es nicht.
Mein Testset

200 Aufgaben, alle auf Deutsch, in drei Gruppen. 80 Multiple-Choice-Fragen zu Allgemeinwissen, bei denen genau eine von vier Antworten stimmt. 60 Extraktionsaufgaben, bei denen aus einem kurzen Text drei Felder gezogen werden müssen. 60 kurze Schlussfolgerungen, bei denen ein Satz zu bewerten ist. Die Referenzantworten habe ich selbst geschrieben und von einer Kommilitonin gegenlesen lassen, mit 12 Abweichungen, die wir zu dritt entschieden haben.
Bewertet habe ich exakte Übereinstimmung, nicht Ähnlichkeit. Bei den Extraktionsaufgaben also alle drei Felder korrekt, bei den Multiple-Choice-Aufgaben der richtige Buchstabe. Das ist streng und unterschätzt Modelle, die richtig antworten und es anders formulieren. Ich nehme das in Kauf, weil ich eine Zahl will, die ich verteidigen kann.
| Modell | Quantisierung | VRAM | korrekt | Quote | Tok/s |
|---|---|---|---|---|---|
| Llama 2 7B | 4 Bit | 4,1 GB | 112 / 200 | 56,0 % | 38 |
| Llama 2 13B | 4 Bit | 7,9 GB | 131 / 200 | 65,5 % | 18 |
| API-Modell | — | — | 158 / 200 | 79,0 % | — |
Die 13B-Version ist deutlich besser als die 7B-Version, aber der Sprung von 9,5 Prozentpunkten kostet die Hälfte der Geschwindigkeit und doppelt so viel Speicher. Das API-Modell liegt 27 Punkte darüber. Für eine Aufgabe, bei der ein Fehler fünf Minuten Nacharbeit kostet, ist das ein klarer Fall. Für eine, bei der ein Fehler eine falsche Entscheidung auslöst, ist es keiner.
Die Auswertung nach Aufgabentyp
Die Gesamtquote versteckt den interessanten Teil. Nach Kategorien getrennt sieht man, wo der Rückstand wirklich sitzt, und das ist bei mir nicht die Extraktion gewesen, wie ich vermutet hatte.
import pandas as pd
import numpy as np
df = pd.read_csv("llm_eval.csv")
# spalten: aufgabe_id, kategorie, modell, korrekt (0/1)
tab = (df.groupby(["kategorie", "modell"])
.korrekt.agg(["count", "sum", "mean"])
.assign(quote=lambda d: (100 * d["mean"]).round(1)))
print(tab)
# Differenz zum API-Modell pro Kategorie, mit Bootstrap-Intervall
api = df[df.modell == "api"].set_index("aufgabe_id").korrekt
for m in ["llama2_7b", "llama2_13b"]:
eigen = df[df.modell == m].set_index("aufgabe_id").korrekt
diff = (eigen - api.loc[eigen.index]).mean() * 100
rng = np.random.default_rng(42)
boots = [np.mean(rng.choice((eigen - api.loc[eigen.index]).values,
size=len(eigen), replace=True)) * 100
for _ in range(2000)]
print(m, round(diff, 1), np.percentile(boots, [2.5, 97.5]).round(1))
Das Bootstrap-Intervall ist hier kein Schmuck. Bei 60 Aufgaben pro Kategorie schwankt die Differenz um mehrere Punkte, und ich will nicht dieselbe Zahl in zwei Folien mit unterschiedlicher Sicherheit präsentieren. Die Aussage, die ich nach dieser Auswertung treffen kann, ist: Das 13B-Modell liegt in allen drei Kategorien unter dem API-Modell, aber im Multiple-Choice-Teil ist der Abstand am kleinsten und stabilsten.
Was „offen“ bei Llama 2 bedeutet
Die Gewichte sind herunterladbar, die Nutzung ist kommerziell erlaubt, solange du unter 700 Millionen monatlich aktiven Nutzern bleibst. Das ist keine Open-Source-Lizenz im Sinne der OSI, weil sie Nutzungsbedingungen an ein Produkt knüpft und weil sie für bestimmte Anwendungen zusätzliche Regeln macht. Für ein Seminarprojekt ist das irrelevant. Für ein Produkt ist es eine Rechtsfrage, keine technische.
Der praktische Unterschied zu wirklich freien Lizenzen ist die Planbarkeit. Wenn die Lizenz an eine Schwelle geknüpft ist, musst du diese Schwelle überwachen, und wenn du sie überschreitest, brauchst du eine Extraerlaubnis. Das steht in keinem Benchmark, es steht im Vertrag – und Verträge liest man vor dem Deployment, nicht danach.
Fazit
Ein Modell auf einer 12-GB-Karte ist 2025 brauchbar, aber nicht gleichwertig. Der Abstand liegt bei mir bei 13 bis 27 Prozentpunkten, je nach Aufgabe, und die Entscheidung hängt nicht an der Benchmark-Zahl, sondern daran, was ein Fehler kostet. Wenn du lokal arbeitest, prüf vorher die Lizenz und nicht nur die VRAM-Anforderung.
Meine Frage an dich: Würdest du für eine Aufgabe, die zu 95 Prozent zuverlässig sein muss, ein Modell mit 65 Prozent nehmen und die restlichen 30 Prozent von Menschen prüfen lassen – oder ist das in deinem Prozess gar nicht darstellbar?
bilalaydin
12 gigabyte speicher sind die eigentliche einschränkung, nicht die parameterzahl
pialindner
welche kategorie war schwächer, deutsch oder code?
yaraosman
für die lizenzfrage ist die qualität fast egal, das ist der punkt, der bleiben wird
elifdemir
deutsch, 41 von 70, bei code war der abstand kleiner als ich dachte
yaraosman
egal nicht, aber zweitrangig, ein gutes modell mit schlechter lizenz nützt dir lokal nichts