CrucibleForge mit eigenen Modellen ausführen: Installationsanleitung

Veröffentlicht
5 November 2026
Aktualisiert
5 November 2026
Von
Jacob Lloyd — mit KI-Unterstützung geschrieben, im Nachhinein
Lesezeit
9 Min. Lesezeit

Kurz gesagt: CrucibleForge ist das kostenlose, open-source-Tool, mit dem alle Bewertungen auf dem MakoBench-Board erstellt werden. Auf dieser Seite wird gezeigt, wie man es installiert, wie man es mit einem lokalen oder gehosteten Modell verbindet, einen schnellen Smoke-Test durchführt und das Ergebnis ausliest. Falls Sie keine GPU haben, können Sie uns auch darum bitten, Ihr Modell auf unserer eigenen Hardware auszuführen.

Zu CrucibleForge auf GitHub

CrucibleForge ist das Open-Source-Tool, mit dem alle Bewertungen auf dem MakoBench-Board erstellt werden. Es ist kostenlos (MIT-0-Lizenz, keine Bedingungen) – Sie können es außerdem mit Ihren eigenen Modellen auf Ihrem eigenen Rechner ausführen. Auf dieser Seite wird die Installation sowie ein erster Testlauf erklärt. Alle unten aufgeführten Befehle wurden in einem frisch geklonten Repository ausgeführt; die Ausgaben stammen direkt aus diesem Testlauf. Keine GPU zur Verfügung oder keine Zeit? Bitten Sie uns, Ihr Modell auf unserem System zu testen.

Keine GPU verfügbar? Bitten Sie uns, Ihr Modell auf unserem System zu testen.

Modell anfordern Über das nächste Modell abstimmen

Für die Ausführung von CrucibleForge benötigen Sie keine GPU – lediglich einen Endpunkt zum Testen. Das Anfrageformular dient für Modelle, die Sie selbst nicht hosten können.

Kurz gesagt:

  • Vier Befehle reichen aus, um von einem geklonten Repository bis zum laufenden Benchmark zu gelangen: uv sync, config --init, status, all.
  • Jeder OpenAI-kompatible Endpunkt funktioniert. Ollama, LM Studio, llama.cpp, vLLM – oder auch eine gehostete API.
  • Der Rechner, auf dem CrucibleForge läuft, benötigt keine GPU. Ein lokales Modell benötigt bei Verwendung einer schnellen GPU etwa 25 bis 30 Minuten – inklusive der Bewertung.
  • Probieren Sie zuerst den „Smoke Test“ aus. Unser Testlauf dauerte 1,6 Minuten und kostete 0,0229 US-Dollar.
  • Ein „Smoke Test“ liefert keine offizielle Bewertung. Er umfasst nur 4 von insgesamt 33 Testfällen – daher gibt es weder einen Gesamtscore noch eine Rangplatzierung.

Was benötigen Sie, bevor Sie beginnen?

  • Python 3.12 oder neuer zusammen mit uv, oder Docker. uv lädt Python für Sie herunter.
  • Ein Modell zum Testen, das über einen OpenAI-kompatiblen /chat/completions-Endpunkt verfügt.
  • Ein „Judge“-Modell – also ein beliebiges fähiges Instruktionsmodell, egal ob lokal oder gehostet. Der Code wird durch Ausführung bewertet; für Chat-Funktionen ist jedoch ein solches Judge-Modell erforderlich.
  • Auf Linux: bubblewrap (bwrap). Der vom Modell generierte Code wird darin ausgeführt. Auf Windows und macOS gibt es kein Bubblewrap; stattdessen müssen Sie --allow-unsandboxed angeben oder das Docker-Image verwenden – in diesem Fall fungiert der Container als Sandbox.

Wie installiert man es?

Dies ist der „natürliche“ Weg unter Linux. Docker ist die einfachere Variante, falls Sie keine Python-Tools installieren möchten. In der README-Datei finden Sie Kopier-und-Einfüge-Blöcke für Windows, Linux und macOS; dabei wird Docker Desktop bzw. Compose jeweils als Methode 1 vorgeschlagen. Für diese Seite haben wir den Docker-Weg jedoch nicht genutzt.

git clone https://github.com/LaserLloyd/CrucibleForge.git
cd CrucibleForge
uv sync --python 3.13
uv run crucibleforge --version
crucibleforge 4.0.1

Es handelt sich um Version 4.0.1 – die aktuelle öffentliche Veröffentlichung zum Zeitpunkt des Schreibens. Erstellen Sie nun Ihre Konfigurationsdatei:

uv run crucibleforge config --init
wrote models.yaml - edit providers/models, then `crucibleforge status`

Die Beispieldatei listet Anbieter wie LM Studio, Ollama, llama.cpp oder beliebige lokale Server, DeepSeek, OpenRouter, OpenAI sowie Open WebUI auf; außerdem vier Beispielmodelle. Nichts wird ausgeführt, bis Sie einen Anbieter aktivieren.

Wie verbindet man sein Modell?

models.yaml benötigt einen Anbieter, ein Modell sowie einen „Judge“.

  1. Anbieter. Der Ort, an dem das Modell bereitgestellt wird. Jeder Server, der /chat/completions unterstützt, funktioniert mit type: openai. Lokale Beispiele aus der README: http://localhost:11434/v1 für Ollama, http://localhost:1234/v1 für LM Studio, http://localhost:8000/v1 für vLLM. Bei gehosteten APIs wird api_key_env: NAME_OF_ENV_VAR verwendet; der eigentliche Schlüssel kommt niemals in die Datei.
  2. Modell. Ein Eintrag mit einem name, dem provider, dem vom Server erkannten model_id sowie einer Angabe zur context_length.
  3. Judge. Wird pro Ausführung als --judge provider:model_id übergeben.

Um zu sehen, was ein Server anbietet, fragt man ihn einfach. Hier ein Beispiel für einen gehosteten Anbieter, bei dem der Schlüssel in der Umgebung hinterlegt ist:

uv run crucibleforge models discover deepseek
  * deepseek-flash
  * deepseek-v4-pro

2 models on deepseek (* = in registry)

Der Stern bedeutet, dass das Modell bereits im Register enthalten ist. Die Startdatei enthält standardmäßig deepseek-flash; daher war für unsere Ausführung keine Bearbeitung nötig. Für Ihr eigenes Modell fügen Sie einen ähnlichen Eintrag hinzu:

models:
  - name: my-model
    provider: ollama
    model_id: qwen3:8b
    context_length: 32768

Wie überprüft man die Einrichtung?

export DEEPSEEK_API_KEY=...       # only for a hosted provider or judge
uv run crucibleforge status

Ohne gesetzten Schlüssel sieht die Statusausgabe für den gehosteten Anbieter so aus (nur die relevanten Zeilen sind aufgeführt):

suite revision: 4.0.1+e3d1c6fb
providers:
  ollama         openai      http://localhost:11434/v1       DOWN conc=8
  deepseek       openai      https://api.deepseek.com/v1     UP   conc=8 key: $DEEPSEEK_API_KEY (NOT SET)
    reachable, but it wants an API key: set $DEEPSEEK_API_KEY (HTTP 401)
registry (models):
  [enabled ] deepseek-flash   deepseek   deepseek-flash    $0.14/0.28 per 1M
cases: 393 total (235 hard)
smoke subset: 37 cases
benchmark (bench): 33 cases

DOWN bedeutet, dass zu dieser Adresse keine Antwort kam – was bei lokalen Servern, die wir nicht ausführen, zu erwarten ist. UP mit 401 bedeutet, dass der Host erreichbar ist und einen Schlüssel verlangt. Die Anzahl der Fälle ist wichtig: Insgesamt gibt es 393 Fälle; das System verwendet davon 33.

Was kostet eine Ausführung, bevor sie gestartet wird?

Fügen Sie --plan zu einer beliebigen Ausführung hinzu – dann wird nichts ausgeführt. Stattdessen wird angezeigt, was ausgeführt würde sowie eine Schätzung dazu:

uv run crucibleforge all --models deepseek-flash --judge deepseek:deepseek-v4-flash --plan
  T1 - every model: 29 rows (29 cases) + 4 perf probes
  one round - hosted API (nothing loaded): 29 rows, 8 requests at once
  estimate: generation 18.5 min; judge 16.0 min ... -> ~34 min
(plan only - no model, provider or judge was called; times are estimates)

Das ist die vollständige Ausführung auf einem gehosteten Modell: laut der eigenen Schätzung des Tools etwa 34 Minuten. Es handelt sich dabei um eine Schätzung, keine tatsächliche Messung. Für ein lokales Modell gibt das README an, dass die Ausführung auf einem leistungsstarken GPU-System etwa 25 bis 30 Minuten dauert.

Wie sieht ein „Smoke Run“ aus?

Das Flag --smoke führt einen kleinen, vordefinierten Testlauf durch – von der Generierung über die Bewertung bis hin zum Erstellen des Berichts. Es ist die schnellste Methode, um zu prüfen, ob Ihre Einrichtung funktioniert. Wir haben DeepSeek Flash sowohl als Modell als auch als Bewertungswerkzeug verwendet; dies ist auch die Kombination, die im README unter „Quickstart“ beschrieben wird. Der Testlauf wurde außerdem außerhalb der Hauptnutzungszeiten von DeepSeek durchgeführt.

uv run crucibleforge all --smoke --models deepseek-flash --judge deepseek:deepseek-v4-flash --yes
... profile bench: 4 cases, thinking cap 24576, judge deepseek:deepseek-v4-flash
... link check passed: deepseek reachable, data channel OK
... run: models=['deepseek-flash'] cases=4 smoke=True fresh=False
... [deepseek-flash] RD1-marisol r1 done (15 rows)
... judging done: 1 rows, 0 unparsable judge verdicts, 0 empty generations, 0 errored
run summary:
  deepseek-flash: 15 rows, load 0.0s (deepseek), $0.0229
timing: generation 1.2 min, judge 14 s, report 8 s, total 1.6 min
wrote results/report.md, results/failures.md, results/report.html

Der Testlauf dauerte 1,6 Minuten und kostete $0,0229. Es wurden insgesamt 15 Zeilen verarbeitet – darunter ein Rollenspiel-Beispiel sowie Tests zur Geschwindigkeit. Zwei Punkte sind dabei zu beachten:

  • Die API des Bewertungswerkzeugs lehnte eine Anfrage zur Ausgabe strukturierter Daten ab; daher griff CrucibleForge in dieser Sitzung auf freitextbasierte JSON-Ausgaben zurück. Dennoch konnten Bewertungen erstellt werden.
  • Das Bewertungswerkzeug schlug bei der Kalibrierung für Texte mit explizitem Inhalt fehl. CrucibleForge bewertete daraufhin nur die übrigen Zeilen; die Zeilen mit explizitem Inhalt blieben unbewertet, bis ein geeignetes Bewertungswerkzeug verfügbar ist. Laut README verhalten sich die meisten gehosteten Bewertungswerkzeuge so. Diese Bewertungen werden neben dem Hauptergebnis angezeigt, fließen aber niemals in das Gesamtergebnis ein.

Wie liest man das Ergebnis?

Öffnen Sie results/report.html in einem Browser oder lesen Sie results/report.md. Bei unserem Testlauf wurde genau eine Zeile ausgegeben:

| Model          | Overall | Class | Coding | Chat        | tok/s | Suite | Notes                                          |
| deepseek-flash | -       | -     | -      | 2.5 +/- 0.1 | 159.7 | 4.0.1 | partial (4/33 cases); judged by deepseek-v4-flash |

Der Wert von 2,5 für „Chat“ ist keine Bewertung für das Modell. Es handelt sich dabei um den einzigen Rollenspiel-Fall, der ausgeführt wurde – aus dem Bereich von „Chat“, zu dem dieser Fall gehört. In der Zeile steht „teilweise (4 von 33 Fällen)“; ein solches Modell weist weder einen Gesamtwert noch eine Klassifizierung noch einen Rang auf. Diese Regel gilt auch im Hauptpanel. Führen Sie den vollständigen Testlauf durch, um einen echten Gesamtwert zu erhalten (Code plus Chat – insgesamt 20 Fälle). Um zu verstehen, was jede Spalte bedeutet, lesen Sie Wie MakoBench funktioniert sowie Was MakoBench testet.

Die Geschwindigkeit (Tok/s) ist nur ein Vergleichswert zwischen Modellen, die auf derselben Hardware ausgeführt werden. Die Geschwindigkeit eines gehosteten Modells hängt vom jeweiligen Anbieter sowie von dessen Auslastung ab.

Wie führt man den vollständigen Benchmark aus?

uv run crucibleforge all --models my-model --judge my-provider:my-judge --yes

Fügen Sie --fresh hinzu, um zuerst das vorherige Modell-Transkript zu archivieren. Die Ergebnisse landen in results/, neben models.yaml: das Bewertungsblatt, die Fehlerberichte, der HTML-Bericht sowie ein Transkript aller Prompts und Antworten. Die Web-Oberfläche startet man mit einem einzigen Befehl (uv run crucibleforge gui); standardmäßig hört sie nur auf dem Loopback-Interface zu.

Ein paar Dinge, die man vorher wissen sollte

  • Bei den Coding-Fällen wird vom Modell geschriebener Code ausgeführt. Unter Linux verwendet man dazu bubblewrap; andernfalls nutzt man das Docker-Image. Mit --allow-unsandboxed wird dieser Code in Ihrem Namen ausgeführt – dabei sind Ihre Dateien lesbar.
  • Hosted-Läufe kosten Geld. Führen Sie zunächst --plan sowie den Smoke-Test aus.
  • Der Testsatz enthält auch Fälle mit erotischer Literatur, die separat gelistet sind und niemals in die Gesamtwertung einfließen. In der README finden Sie dazu weitere Informationen.
  • Der Bewertungsalgorithmus beeinflusst die Chat-Ergebnisse. Auf dem MakoBench-Board kommt dafür Gemma 4 31B (die unzensierte „heretic“-Version, Q8) auf unserer eigenen GPU zum Einsatz. Ihre Chat-Werte stimmen nur dann mit den Board-Werten überein, wenn Sie denselben Bewertungsalgorithmus verwenden; bei Code-Tests ist das Ergebnis unabhängig davon identisch.
  • Die Bewertungen werden innerhalb einer bestimmten Suite-Version verglichen. Diese Seite bezieht sich auf Suite 4.0 – siehe was sich in Suite 4.0 geändert hat.

Hat alles geklappt?

Fast. Wir haben außerdem uv run crucibleforge cases verify ausgeführt; dabei werden die „goldenen“ Lösungen erneut offline berechnet. Dabei wurden 393 Fälle überprüft – in einem Fall gab es ein Problem: Bei einem Code-Bank-Fall lief die Referenzlösung bei einem Signaltest ab. Dieser Testlauf erfolgte auf demselben Rechner wie andere Arbeiten; daher können wir nicht sagen, ob es sich um einen echten Fehler handelt oder ob der Rechner einfach langsam ist. Wir haben das Problem bisher noch nicht an die Entwickler gemeldet. Falls Sie auf denselben Fall stoßen, sind Sie nicht allein.

Möchten Sie, dass wir es für Sie ausführen?

Keine GPU dafür verfügbar? Bitten Sie uns, Ihr Modell auf unserer Hardware auszuführen.

Modell anfordern Über das Nächste abstimmen

Wir entscheiden, welches Modell ausgeführt wird – schließlich muss ein großes Modell auf unserer Hardware Platz finden. Die Abstimmungen bestimmen die Standardreihenfolge im Reiter „Abstimmungen“. Die Ergebnisse werden auf dem MakoBench-Board angezeigt.

Weitere Informationen: Wie MakoBench funktioniert, Suite 4.0: Was hat sich geändert sowie das Board.


← Mehr KI & lokale LLMs