Grok 2
Führe xAIs Grok 2 Modell lokal aus!
Sie können jetzt ausführen Grok 2 (auch bekannt als Grok 2.5), das 270B-Parameter-Modell von xAI. Volle Präzision benötigt 539GB, während die Unsloth Dynamic 3-Bit-Version die Größe auf nur 118GB (eine Reduktion um 75 %). GGUF: Grok-2-GGUF
Der 3-Bit Q3_K_XL Modell läuft auf einem einzelnen 128GB Mac oder 24GB VRAM + 128GB RAM, und erreicht 5+ Tokens/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 haben uns auch gefreut, unterwegs ein wenig geholfen zu haben!
Alle Uploads verwenden Unsloth Dynamic 2.0 für SOTA 5-Shot MMLU- und KL-Divergenz-Leistung, was bedeutet, dass Sie quantisierte Grok-LLMs mit minimalem Genauigkeitsverlust ausführen können.
Im llama.cpp-Tutorial ausführen
⚙️ Empfohlene Einstellungen
Die dynamische 3-Bit-Quantisierung verwendet 118GB (126GiB) Festplattenspeicher – 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. Sie könnten falsche Ergebnisse erhalten, wenn Sie nicht --jinja
Die 8-Bit-Quantisierung ist ~300GB groß und passt auf eine 1x80GB-GPU (mit Auslagerung der MoE-Schichten in den RAM). Erwarten Sie mit diesem Setup etwa 5 Tokens/s, wenn Sie zusätzlich 200GB RAM haben. Um zu lernen, wie man die Generierungsgeschwindigkeit erhöht und längere Kontexte unterbringt, hier lesen.
Obwohl nicht zwingend erforderlich: Für beste Leistung sollten VRAM + RAM zusammen der Größe der heruntergeladenen Quantisierung entsprechen. Falls nicht, funktioniert das Offloading auf Festplatte/SSD mit llama.cpp, nur die Inferenz wird langsamer sein.
Sampling-Parameter
Grok 2 hat eine maximale Kontextlänge von 128K; verwenden Sie daher
131,072Kontext oder weniger.Verwenden Sie
--jinjafür llama.cpp-Varianten
Es gibt keine offiziellen Sampling-Parameter zur Ausführung des Modells, daher können Sie für die meisten Modelle die Standardwerte verwenden:
Setzen Sie das temperature = 1.0
Min_P = 0.01 (optional, aber 0.01 funktioniert gut, der llama.cpp-Standard ist 0.1)
Grok 2 ausführen Tutorial:
Derzeit können Sie Grok 2 nur in llama.cpp ausführen.
✨ In llama.cpp ausführen
Installieren Sie das spezifische llama.cpp PR für Grok 2 auf GitHub hier. Sie können auch den unten stehenden Build-Anweisungen folgen. Ändern Sie -DGGML_CUDA=ON zu -DGGML_CUDA=OFF wenn Sie keine GPU haben oder nur CPU-Inferenz wünschen.
Wenn Sie llama.cpp direkt zum Laden von Modellen können Sie das Folgende tun: (:Q3_K_XL) ist der Quantisierungstyp. Sie können auch über Hugging Face (Punkt 3) herunterladen. Das ist ähnlich zu ollama run . Verwenden Sie export LLAMA_CACHE="folder" um zu erzwingen, dass llama.cpp an einem bestimmten Ort speichert. Denken Sie daran, dass das Modell nur eine maximale Kontextlänge von 128K hat.
Bitte probieren Sie aus -ot ".ffn_.*_exps.=CPU" um alle MoE-Schichten auf die CPU auszulagern! Dies ermöglicht es effektiv, alle Nicht-MoE-Schichten auf einer GPU unterzubringen und die Generationsgeschwindigkeit zu verbessern. Sie können den Regex-Ausdruck anpassen, um mehr Schichten auszulagern, 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 alle Schichten auslagern über -ot ".ffn_.*_exps.=CPU" Dies verwendet am wenigsten VRAM.
Sie können den Regex auch 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, jedoch nur ab der 6. Schicht.
Laden Sie das Modell herunter über (nach Installation von 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 . Wir empfehlen die Verwendung unserer 2,7-Bit-dynamischen Quantisierung UD-Q2_K_XL oder höher, um Größe und Genauigkeit auszubalancieren.
Sie können --threads 32 für die Anzahl der CPU-Threads bearbeiten, --ctx-size 16384 für die Kontextlänge, --n-gpu-layers 2 für das GPU-Offloading für wie viele Schichten. Versuchen Sie, es anzupassen, wenn Ihre GPU nicht mehr genügend Speicher hat. Entfernen Sie es auch, wenn Sie nur CPU-Inferenz haben.
Modell-Uploads
ALLE unsere Uploads - einschließlich jener, die nicht imatrix-basiert oder dynamisch sind, nutzen unseren Kalibrierungsdatensatz, der speziell für Konversation, Codierung und Sprachaufgaben optimiert ist.
🏂 Generationsgeschwindigkeit verbessern
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 es effektiv, alle Nicht-MoE-Schichten auf einer GPU unterzubringen und die Generationsgeschwindigkeit zu verbessern. Sie können den Regex-Ausdruck anpassen, um mehr Schichten auszulagern, 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 den Regex auch 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, jedoch nur ab der 6. Schicht.
Der neueste llama.cpp-Version führt auch einen Hochdurchsatzmodus ein. Verwenden Sie llama-parallel. Lesen Sie mehr darüber hier. Sie können auch den KV-Cache auf 4 Bit quantisieren zum Beispiel, um VRAM-/RAM-Bewegungen zu reduzieren, was den Generationsprozess auch beschleunigen kann.
📐Wie man langen Kontext unterbringt (vollständig 128K)
Um längere Kontexte unterzubringen, können Sie KV-Cache-Quantisierung verwenden, um die K- und V-Caches auf niedrigere Bits zu quantisieren. Dies kann auch die Generationsgeschwindigkeit aufgrund reduzierter RAM-/VRAM-Datenbewegung erhöhen. Die erlaubten Optionen für K-Quantisierung (Standard ist f16) umfassen die folgenden.
--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 über -DGGML_CUDA_FA_ALL_QUANTS=ON, und verwenden Sie --flash-attn um es zu aktivieren. Dann können Sie es zusammen mit --cache-type-k :
--cache-type-v f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Zuletzt aktualisiert
War das hilfreich?

