square-x-twitterGrok 2

Führe xAIs Grok 2-Modell lokal aus!

Du kannst jetzt ausführen Grok 2 (auch bekannt als Grok 2.5), das 270B Parameter-Modell von xAI. Volle Präzision erfordert 539GB, während die Unsloth Dynamic 3-Bit-Version die Größe auf nur 118GB (eine Reduktion um 75%). GGUF: Grok-2-GGUFarrow-up-right

Die 3-Bit Q3_K_XL Modell läuft auf einem einzelnen 128GB Mac oder 24GB VRAM + 128GB RAM, und erreicht 5+ Token/s Inference. Dank an das llama.cpp-Team und die Community für die Unterstützung von Grok 2arrow-up-right und dafür, dies möglich gemacht zu haben. Wir freuen uns auch, ein wenig dazu beigetragen zu haben!

Alle Uploads verwenden Unsloth Dynamic 2.0 für SOTA 5-Shot MMLU- und KL-Divergenz-Leistung, was bedeutet, dass du quantisierte Grok-LLMs mit minimalem Genauigkeitsverlust ausführen kannst.

Im llama.cpp-Tutorial ausführen

⚙️ Empfohlene Einstellungen

Die 3-Bit-dynamische Quantisierung verwendet 118GB (126GiB) Speicherplatz auf der Festplatte – das funktioniert gut in einem 128GB RAM Unified-Memory Mac oder auf einer 1x24GB-Karte und 128GB RAM. Es wird empfohlen, mindestens 120GB RAM zu haben, um diese 3-Bit-Quantisierung auszuführen.

circle-exclamation

Die 8-Bit-Quantisierung ist ~300GB groß und passt in eine 1x80GB GPU (mit MoE-Schichten, die in den RAM ausgelagert werden). Erwartet werden etwa 5 Token/s mit diesem Setup, wenn du zusätzlich 200GB RAM hast. Um zu lernen, wie man die Generationsgeschwindigkeit erhöht und längere Kontexte unterbringt, hier lesen.

circle-info

Obwohl nicht zwingend erforderlich, gilt für beste Leistung: Habe VRAM + RAM zusammen in etwa gleich groß wie die Quantisierung, die du herunterlädst. Wenn nicht, funktioniert Offloading auf Festplatte/SSD mit llama.cpp, nur die Inferenz wird langsamer sein.

Sampling-Parameter

  • Grok 2 hat eine maximale Kontextlänge von 128K; verwende daher 131,072 Kontext oder weniger.

  • Verwende --jinja für llama.cpp-Varianten

Es gibt keine offiziellen Sampling-Parameter zum Ausführen des Modells, daher kannst du für die meisten Modelle die Standardwerte verwenden:

  • Setze das temperature = 1.0

  • Min_P = 0.01 (optional, aber 0.01 funktioniert gut, der llama.cpp-Standard ist 0.1)

Grok 2 Tutorial ausführen:

Derzeit kannst du Grok 2 nur in llama.cpp ausführen.

✨ In llama.cpp ausführen

1

Installiere den spezifischen llama.cpp PR für Grok 2 auf GitHub hierarrow-up-right. Du kannst auch den Build-Anweisungen unten folgen. Ändere -DGGML_CUDA=ON zu -DGGML_CUDA=OFF wenn du keine GPU hast oder nur CPU-Inferenz möchtest. Für Apple Mac / Metal-Geräte, setze -DGGML_CUDA=OFF dann wie gewohnt fort - Metal-Unterstützung ist standardmäßig aktiviert.

2

Wenn du llama.cpp direkt, um Modelle zu laden, kannst du Folgendes tun: (:Q3_K_XL) ist der Quantisierungstyp. Du kannst auch über Hugging Face herunterladen (Punkt 3). Das ist ähnlich wie ollama run . Verwenden Sie export LLAMA_CACHE="folder" um llama.cpp zu zwingen, an einem bestimmten Ort zu speichern. Denken Sie daran, dass das Modell nur eine maximale Kontextlänge von 128K hat.

circle-info

Bitte probieren Sie -ot ".ffn_.*_exps.=CPU" um alle MoE-Schichten auf die CPU auszulagern! Dadurch können Sie effektiv alle Nicht-MoE-Schichten auf einer GPU unterbringen, was die Generationsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Schichten zu verschieben, wenn Sie mehr GPU-Kapazität haben.

Wenn Sie etwas mehr GPU-Speicher haben, versuchen Sie -ot ".ffn_(up|down)_exps.=CPU" Dies lagert Up- und Down-Projektions-MoE-Schichten aus.

Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur Up-Projektions-MoE-Schichten aus.

Und schließlich lagern Sie alle Schichten über -ot ".ffn_.*_exps.=CPU" aus.

Sie können auch den Regex anpassen, zum Beispiel -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" bedeutet, Gate-, Up- und Down-MoE-Schichten auszulagern, aber nur ab der 6. Schicht.

3

Laden Sie das Modell herunter (nach der Installation pip install huggingface_hub hf_transfer ). Sie können wählen UD-Q3_K_XL (dynamische 3-Bit-Quantisierung) oder andere quantisierte Versionen wie Q4_K_M Q4_K_XL . Wir empfehlen die Verwendung unseres 2,7-Bit Dynamic Quant oder oben, um Größe und Genauigkeit auszubalancieren.

4

--include "*UD-Q2_K_XL*" # Verwenden Sie "*UD-TQ1_0*" für Dynamic 1bit Sie können --threads 32 für die Anzahl der CPU-Threads bearbeiten, --ctx-size 16384 für Kontextlänge, --n-gpu-layers 2

Modell-Uploads

ALLE unsere Uploads - einschließlich jener, die nicht imatrix-basiert oder dynamisch sind, verwenden unseren Kalibrationsdatensatz, der speziell für Konversations-, Coding- und Sprachaufgaben optimiert ist.

MoE Bits
Typ + Link
Platzbedarf auf Datenträger
Details

1,66bit

81,8 GB

1,92/1,56bit

1,78bit

88,9 GB

2,06/1,56bit

1,93bit

94,5 GB

2.5/2.06/1.56

2,42bit

99,3 GB

2,5/2,06bit

2,71bit

112 GB

3,5/2,5bit

3,12bit

117 GB

3,5/2,06bit

3,5bit

126 GB

4,5/3,5bit

4,5bit

155 GB

5,5/4,5bit

5,5bit

191 GB

6,5/5,5bit

🏂 "content": [{"type": "text", "text": "Erstelle eine Fibonacci-Funktion in Python und finde fib(20)."}],

Wenn Sie mehr VRAM haben, können Sie versuchen, mehr MoE-Schichten auszulagern oder ganze Schichten selbst auszulagern.

Normalerweise, -ot ".ffn_.*_exps.=CPU" lagert alle MoE-Schichten auf die CPU aus! Dies ermöglicht effektiv, alle Nicht-MoE-Schichten auf 1 GPU unterzubringen und verbessert die Generationsgeschwindigkeit. Sie können den Regex-Ausdruck anpassen, um mehr Schichten unterzubringen, wenn Sie mehr GPU-Kapazität haben.

Wenn Sie etwas mehr GPU-Speicher haben, versuchen Sie -ot ".ffn_(up|down)_exps.=CPU" Dies lagert Up- und Down-Projektions-MoE-Schichten aus.

Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur Up-Projektions-MoE-Schichten aus.

Sie können auch den Regex anpassen, zum Beispiel -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" bedeutet, Gate-, Up- und Down-MoE-Schichten auszulagern, aber nur ab der 6. Schicht.

Die neueste llama.cpp-Versionarrow-up-right führt außerdem einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hierarrow-up-right. Sie können auch den KV-Cache z. B. auf 4 Bit quantisieren, den KV-Cache auf 4 Bit quantisieren

zum Beispiel, um VRAM-/RAM-Bewegungen zu reduzieren, was den Generationsprozess ebenfalls beschleunigen kann.

Um längeren Kontext unterzubringen, können Sie KV-Cache-Quantisierung verwenden, um die K- und V-Caches auf niedrigere Bits zu quantisieren. Dies kann auch die Generationsgeschwindigkeit erhöhen aufgrund reduzierter RAM-/VRAM-Datenbewegungen. Die erlaubten Optionen für K-Quantisierung (Standard ist f16) umfassen die untenstehenden.

--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1

Sie sollten die _1 Varianten für etwas erhöhte Genauigkeit verwenden, obwohl sie etwas langsamer sind. Zum Beispiel q4_1, q5_1

Sie können auch den V-Cache quantisieren, aber Sie müssen llama.cpp mit Flash Attention kompilieren Unterstützung via -DGGML_CUDA_FA_ALL_QUANTS=ON, und verwenden --flash-attn --flash-attn um es zu aktivieren. Dann können Sie es zusammen mit :

--cache-type-k verwenden, und

Zuletzt aktualisiert

War das hilfreich?