Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wie viel Speicher ein Modell braucht

Nach dieser Lektion: Ich kann berechnen, wie viel Speicher ein Modell braucht.

Lektion, 60 Min.7 BefehleLab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Passt dieses Modell auf meinen Rechner

Der Speicherbedarf eines Modells ist der Platz für seine Zahlen plus der Platz für den Prompt, den es gerade liest. Sie können ihn mit einer kurzen Rechnung bestimmen, bevor Sie etwas herunterladen.

Das ist wichtig, weil ein Modell, das nicht passt, gar nicht erst startet. Eine falsche Schätzung kostet einen Nachmittag und manchmal den Preis eines größeren Rechners.

Am Ende dieser Lektion

Notiz

Ich kann berechnen, wie viel Speicher ein Modell braucht.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Parametereine Zahl, die das Modell gelernt hat
Gewichtealle Parameter zusammen
Genauigkeitwie viele Bit jede Zahl speichern16 Bit
CacheSpeicher für den bisher gelesenen Prompt
Gigabyte (GB)tausend Millionen Bytes

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Gewichte sind Parameter mal Bytes

Ein Modell ist im Kern eine sehr lange Liste von Zahlen. Jede Zahl ist ein Parameter. Jeder Parameter wird mit einer bestimmten Zahl von Bit gespeichert, und 8 Bit sind ein Byte.

Die Gewichte brauchen also Parameter mal Bytes je Parameter. Ein Modell mit 8 Milliarden Parametern bei 16 Bit (2 Bytes) braucht allein für die Gewichte 16 Gigabyte.

Modell A, nur die Gewichte

GenauigkeitBytes je ZahlGewichte bei 8 Milliarden
32 Bit432 GB
16 Bit216 GB
8 Bit18 GB
4 Bit0,54 GB

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein langer Prompt braucht einen Cache

Beim Lesen führt ein Modell Notizen zu jedem bisherigen Token. Diese Notizen sind der Cache. Ein Token braucht 2 mal die Schichten mal die Breite mal die Bytes.

Für Modell A sind das 2 x 32 x 1024 x 2 = 131.072 Bytes je Token. Bei 8000 Token ist der Cache etwa 1 GB groß. Der Cache wächst mit dem Prompt, die Gewichte nicht.

Modell A, Cache nach Promptlänge

Token im PromptCache
10000,13 GB
80001,05 GB
32.0004,19 GB

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, ein Modell mit 16 GB Download brauche zum Laufen 16 GB. Die Gewichte sind nur ein Teil. Der Cache wächst mit dem Prompt, und ein Rechner braucht noch freien Speicher. Addieren Sie den Cache und lassen Sie dann ein Fünftel frei.

Modell-Helfer schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const basis = process.env.AI_URL || \"http://ai:4000\";' '// Die Token einer Antwort oder null, wenn sie keine nennt.' 'function zaehlen(daten, name) {' '  return daten.usage && typeof daten.usage[name] === \"number\" ? daten.usage[name] : null;' '}' > model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Modell-Helfer schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function fragen(nachrichten, probe, max) {' '  try {' '    const res = await fetch(basis + \"/v1/chat/completions\", {' '      method: \"POST\",' '      headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' '      body: JSON.stringify({ model: \"lab\", messages: nachrichten, max_tokens: max || 100 }),' '      signal: AbortSignal.timeout(30000),' '    });' '    if (res.ok === false) throw new Error(\"Status \" + res.status);' '    const d = await res.json();' '    return { text: d.choices[0].message.content, eingabe: zaehlen(d, \"prompt_tokens\"), ausgabe: zaehlen(d, \"completion_tokens\"), aufgezeichnet: false };' '  } catch (fehler) {' '    console.log(\"Aufgezeichnete Probe: Kein Modell hat geantwortet (\" + fehler.message + \").\");' '    return { text: probe, eingabe: null, ausgabe: null, aufgezeichnet: true };' '  }' '}' 'module.exports = { fragen };' >> model.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Speicherrechner schreiben, Teil 1

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const modell = { milliarden: 8, schichten: 32, kvBreite: 1024 };' 'const BITS = [32, 16, 8, 4];' 'function gewichteGB(bits) {' '  return modell.milliarden * bits / 8;' '}' > speicher.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Speicherrechner schreiben, Teil 2

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function cacheGB(token) {' '  const jeToken = 2 * modell.schichten * modell.kvBreite * 2;' '  return jeToken * token / 1000000000;' '}' >> speicher.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Speicherrechner schreiben, Teil 3

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"Modell A: 8 Milliarden Parameter, Cache mit 16 Bit\");' '  for (const bits of BITS) {' '    const gesamt = gewichteGB(bits) + cacheGB(8000);' '    console.log(bits + \" Bit: Gewichte \" + gewichteGB(bits) + \" GB, gesamt \" + gesamt.toFixed(2) + \" GB\");' '  }' '  console.log(\"Cache bei 1000 Token: \" + cacheGB(1000).toFixed(2) + \" GB\");' '  console.log(\"Cache bei 32000 Token: \" + cacheGB(32000).toFixed(2) + \" GB\");' >> speicher.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Speicherrechner schreiben, Teil 4

Befehl
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  const q = \"In einem kurzen Satz: Warum braucht ein längerer Prompt mehr Speicher?\";' '  const probe = \"Jedes Token des Prompts kommt in den Cache, den das Modell führt, also wird der Cache mit dem Prompt größer.\";' '  const r = await fragen([{ role: \"user\", content: q }], probe, 60);' '  console.log(\"Das Modell sagte: \" + r.text);' '}' 'main();' >> speicher.js"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Speicherrechner ausführen

Befehl
docker exec -w /home/node/project agent node speicher.js

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Es wird nichts heruntergeladen

Dieses Labor hat keine GPU und hält keine Modelldateien. Modell A ist erfunden, und jede Größe ist eine Rechnung. Der eine kurze Aufruf an das Modell des Labors formuliert nur einen Satz.

Antwortet kein Modell, druckt der Run zuerst Aufgezeichnete Probe, und die Rechnungen bleiben gleich.

Was der Run druckt

ZeileWas sie zeigt
32 Bit: Gewichte 32 GB, gesamt 33.05 GBVolle Größe passt auf keinen kleinen Rechner
4 Bit: Gewichte 4 GB, gesamt 5.05 GBWeniger Bit, viel weniger Speicher
Cache bei 32000 Token: 4.19 GBEin langer Prompt kostet wirklich
Das Modell sagte: ...Ein Satz. Die Worte ändern sich bei jedem Lauf

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Über dieses Lab und seinen Quellcode: Lab für KI-Coding-Agenten: mit opencode Code erklären und reparieren lassen und die Arbeit prüfen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.