Grok 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-GGUF
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 2 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.
Sie müssen --jinja für Grok 2. Du könntest falsche Ergebnisse erhalten, wenn du nicht --jinja
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.
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,072Kontext oder weniger.Verwende
--jinjafü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
Installiere den spezifischen llama.cpp PR für Grok 2 auf GitHub hier. 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.
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.
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.
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.
--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.
🏂 "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-Version führt außerdem einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hier. 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?

