Das größte Modell ist nicht immer das beste
Die Modellgröße zu wählen heißt, das kleinste Modell zu finden, das eine Aufgabe gut genug erledigt. Ein kleines Modell kann bei einer engen Aufgabe mit einem großen gleichziehen, für einen Bruchteil des Preises.
Das ist wichtig, weil sich der Preis jedes Aufrufs summiert, und die Wartezeit auch. Die richtige Größe finden Sie durch Testen, nie durch Raten.
Am Ende dieser Lektion
Notiz
Ich kann aus einem Test und einem Preis eine Modellgröße für eine Aufgabe wählen.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Enge Aufgabe | eine kleine, klare Aufgabe |
| Testmenge | feste Fälle, mit denen ein Modell bewertet wird |
| Erfolgsquote | der Anteil der Fälle, die ein Modell richtig löst |
| Preis je Aufruf | was jede Anfrage kostet |
| Gut genug | eine Erfolgsquote, die die Aufgabe akzeptiert |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Testen Sie jede Größe an denselben Fällen
Schreiben Sie eine Testmenge: eine feste Liste echter Fälle für Ihre Aufgabe, etwa zehn Support-Anfragen, die sortiert werden sollen. Lassen Sie jede Modellgröße über dieselben Fälle laufen und notieren Sie für jeden bestanden oder durchgefallen.
Die Erfolgsquote ist der Anteil richtiger Fälle. Modul 68 sagt mehr zu Testmengen. Diese Lektion nutzt aufgezeichnete Ergebnisse, es wird also jetzt nichts ausgeführt.
Aufgezeichnete Ergebnisse auf sechs Anfragen
| Größe | Richtig von 6 | Erfolgsquote | Preis je 1000 Aufrufe |
|---|---|---|---|
| klein | 4 | 66,7 % | 2 Euro |
| mittel | 5 | 83,3 % | 9 Euro |
| groß | 6 | 100 % | 40 Euro |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Die Fälle eines kleinen Modells ansehen
Eine Erfolgsquote verbirgt, welche Fälle scheitern. Das kleine Modell oben scheitert an den Anfragen 5 und 6. Lesen Sie sie. Sind sie im echten Betrieb selten, kann klein trotzdem reichen.
Rechnen Sie dann den Preis je richtiger Antwort aus: den Preis geteilt durch den Anteil, der besteht. Ein billiges Modell, das oft irrt, kann je richtiger Antwort mehr kosten als ein teureres.
Ein häufiger Fehler
Warnung
Viele glauben, das größte Modell sei die sichere Wahl. Es ist das teuerste, und es ist langsamer. Besteht eine kleinere Größe Ihre eigene Testmenge, ist sie gut genug. Wählen Sie die günstigste Größe, die besteht, und testen Sie neu, wenn sich die Aufgabe ändert.
Modell-Helfer schreiben, Teil 1
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
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.
Größenwähler schreiben, Teil 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { fragen } = require(\"./model\");' 'const aufgezeichnet = {' ' klein: { kosten: 2, bestanden: [1, 1, 1, 1, 0, 0] },' ' mittel: { kosten: 9, bestanden: [1, 1, 1, 1, 1, 0] },' ' gross: { kosten: 40, bestanden: [1, 1, 1, 1, 1, 1] },' '};' 'function treffer(m) {' ' return m.bestanden.reduce(function (a, b) { return a + b; }, 0);' '}' 'function quote(m) {' ' return treffer(m) * 100 / m.bestanden.length;' '}' > wahl.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.
Größenwähler schreiben, Teil 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function jeRichtiger(m) {' ' return m.kosten * m.bestanden.length / treffer(m);' '}' 'function waehlen(bedarf) {' ' let beste = \"keines\";' ' let besteKosten = Infinity;' ' for (const name of Object.keys(aufgezeichnet)) {' ' const m = aufgezeichnet[name];' ' if (quote(m) >= bedarf && m.kosten < besteKosten) { beste = name; besteKosten = m.kosten; }' ' }' ' return beste;' '}' >> wahl.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.
Größenwähler schreiben, Teil 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' console.log(\"Aufgezeichnete Ergebnisse auf 6 Anfragen (jetzt nicht ausgeführt):\");' ' for (const name of Object.keys(aufgezeichnet)) {' ' const m = aufgezeichnet[name];' ' console.log(name + \": \" + quote(m).toFixed(1) + \" Prozent richtig, Preis \" + m.kosten + \", Preis je richtiger Antwort \" + jeRichtiger(m).toFixed(2));' ' }' ' console.log(\"Bedarf 80: \" + waehlen(80) + \" | Bedarf 95: \" + waehlen(95) + \" | Bedarf 100: \" + waehlen(100));' ' const q = \"In einem kurzen Satz: Warum sollte man ein kleines Modell an eigenen Fällen testen, bevor man es wählt?\";' ' const probe = \"Ein kleines Modell kann bei einer engen Aufgabe gut sein, und nur eigene Fälle zeigen, wo es scheitert.\";' ' const r = await fragen([{ role: \"user\", content: q }], probe, 60);' ' console.log(\"Das Modell sagte: \" + r.text);' '}' 'main();' >> wahl.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.
Größenwähler ausführen
docker exec -w /home/node/project agent node wahl.jsHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was der Run druckt
| Zeile | Was sie zeigt |
|---|---|
| klein: 66.7 Prozent richtig, Preis 2, Preis je richtiger Antwort 3.00 | Billig, und je richtiger Antwort weniger teuer, als es scheint |
| gross: 100.0 Prozent richtig, Preis 40, ... 40.00 | Immer richtig, am teuersten |
| Bedarf 80: mittel | Bedarf 95: gross | Der Bedarf entscheidet über die Größe |
| Das Modell sagte: ... | Ein Satz. Die Worte ändern sich bei jedem Lauf |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.