Grok 2
Führe xAIs Grok-2-Modell lokal aus!
Sie können jetzt Grok 2 (auch bekannt als Grok 2.5), das 270B-Parameter-Modell von xAI. Volle Präzision erfordert 539 GB, während die Unsloth Dynamic 3-Bit-Version die Größe auf nur 118 GB reduziert (eine Verringerung um 75 %). GGUF: Grok-2-GGUF
Die 3-Bit Q3_K_XL Modell läuft auf einem einzelnen 128-GB-Mac oder 24 GB VRAM + 128 GB RAM, und erreicht 5+ Tokens/s Inferenz. Vielen Dank an das llama.cpp-Team und die Community für die Unterstützung von Grok 2 und dafür, dass dies möglich gemacht wurde. Wir haben uns auch gefreut, unterwegs ein wenig helfen zu können!
Alle Uploads verwenden Unsloth Dynamic 2.0 für SOTA 5-Shot-MMLU- und KL-Divergenz-Performance, was bedeutet, dass Sie quantisierte Grok-LLMs mit minimalem Genauigkeitsverlust ausführen können.
Tutorial zum Ausführen in llama.cpp
⚙️ Empfohlene Einstellungen
Die dynamische 3-Bit-Quantisierung verwendet 118 GB (126 GiB) Speicherplatz auf der Festplatte – das funktioniert gut auf einem Mac mit 128 GB RAM Unified Memory oder auf einer 1x24-GB-Karte und 128 GB RAM. Es wird empfohlen, mindestens 120 GB 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 ~300 GB groß und passt auf eine einzelne 80-GB-GPU (wobei MoE-Layer in den RAM ausgelagert werden). Rechnen Sie mit etwa 5 Tokens/s mit diesem Setup, wenn Sie zusätzlich noch 200 GB RAM haben. Um zu erfahren, wie Sie die Generierungsgeschwindigkeit erhöhen und längere Kontexte unterbringen können, lesen Sie hier.
Auch wenn es nicht zwingend erforderlich ist: Für beste Leistung sollte VRAM + RAM zusammen der Größe der heruntergeladenen Quantisierung entsprechen. Andernfalls funktioniert die Auslagerung auf Festplatte/SSD mit llama.cpp, nur wird die Inferenz langsamer sein.
Sampling-Parameter
Grok 2 hat eine maximale Kontextlänge von 128K, daher verwenden Sie
131,072Kontext oder weniger.Verwende
--jinjafür llama.cpp-Varianten
Es gibt keine offiziellen Sampling-Parameter zum Ausführen des Modells, daher können Sie für die meisten Modelle die Standard-Defaults verwenden:
Setzen Sie 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 können Sie Grok 2 nur in llama.cpp ausführen.
✨ In llama.cpp ausführen
Installieren Sie den spezifischen llama.cpp PR für Grok 2 auf GitHub hier. Du kannst auch den untenstehenden Build-Anweisungen 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 und fahre dann wie gewohnt fort - Metal-Unterstützung ist standardmäßig aktiviert.
Wenn du 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 herunterladen (Punkt 3). Das ist ähnlich wie ollama run . Verwenden Sie export LLAMA_CACHE="folder" um zu erzwingen, dass llama.cpp an einem bestimmten Ort gespeichert wird. Denken Sie daran, dass das Modell nur eine maximale Kontextlänge von 128K hat.
Bitte probieren Sie -ot ".ffn_.*_exps.=CPU" verwenden, um alle MoE-Layer auf die CPU auszulagern! Dadurch können Sie effektiv alle Nicht-MoE-Layer auf 1 GPU unterbringen, was die Generierungsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Layer 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 die MoE-Layer für Up- und Down-Projektionen aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur die MoE-Layer für Up-Projektionen aus.
Und schließlich lagern Sie alle Layer aus via -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-Layer auszulagern, aber nur ab der 6. Schicht.
Lade das Modell herunter über (nach der Installation von pip install huggingface_hub hf_transfer ). Du kannst UD-Q3_K_XL (dynamische 3-Bit-Quantisierung) oder andere quantisierte Versionen wie Q4_K_M . Wir empfehlen unser dynamisches 2,7-Bit-Quant 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 GPU-Offloading, also für wie viele Layer. Versuchen Sie, dies anzupassen, wenn Ihrem GPU-Speicher der Platz ausgeht. Entfernen Sie es auch, wenn Sie nur CPU-Inferenz haben.
Modell-Uploads
ALLE unsere Uploads - einschließlich derjenigen, die nicht auf imatrix basieren oder dynamisch sind, verwenden unseren Kalibrierungsdatensatz, der speziell für Unterhaltungs-, Coding- und Sprachaufgaben optimiert ist.
🏂 Die Generierungsgeschwindigkeit verbessern
Wenn Sie mehr VRAM haben, können Sie versuchen, mehr MoE-Layer oder ganze Layer auszulagern.
Normalerweise -ot ".ffn_.*_exps.=CPU" lagert alle MoE-Layer auf die CPU aus! Dadurch können Sie effektiv alle Nicht-MoE-Layer auf 1 GPU unterbringen, was die Generierungsgeschwindigkeit verbessert. Sie können den Regex-Ausdruck anpassen, um mehr Layer 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 die MoE-Layer für Up- und Down-Projektionen aus.
Versuchen Sie -ot ".ffn_(up)_exps.=CPU" wenn Sie noch mehr GPU-Speicher haben. Dies lagert nur die MoE-Layer für Up-Projektionen 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-Layer auszulagern, aber nur ab der 6. Schicht.
Die neueste llama.cpp-Version führt außerdem den High-Throughput-Modus 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 den VRAM-/RAM-Datenverkehr zu reduzieren, was den Generierungsprozess ebenfalls beschleunigen kann.
📐Wie man langen Kontext unterbringt (volle 128K)
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 Generierungsgeschwindigkeit aufgrund des geringeren RAM-/VRAM-Datenverkehrs erhöhen. Die zulässigen Optionen für die K-Quantisierung (Standard ist f16) sind unten aufgeführt.
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
Sie sollten die _1 Varianten verwenden, um die Genauigkeit etwas zu erhöhen, auch wenn es etwas langsamer ist. Zum Beispiel q4_1, q5_1
Sie können auch den V-Cache quantisieren, aber dafür müssen Sie llama.cpp mit Flash Attention-Unterstützung kompilieren via -DGGML_CUDA_FA_ALL_QUANTS=ON , und--flash-attn verwenden, 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 :
verwenden
Zuletzt aktualisiert
War das hilfreich?

