For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

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,072 Kontext oder weniger.

  • Verwende --jinja fü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

1

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.

2

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.

3

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.

4

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.

MoE-Bits
Typ + Link
Festplattengröße
Details

1,66 Bit

81,8 GB

1,92/1,56 Bit

1,78 Bit

88,9 GB

2,06/1,56 Bit

1,93 Bit

94,5 GB

2.5/2.06/1.56

2,42 Bit

99,3 GB

2,5/2,06 Bit

2,71 Bit

112 GB

3,5/2,5 Bit

3,12 Bit

117 GB

3,5/2,06 Bit

3,5 Bit

126 GB

4,5/3,5 Bit

4,5 Bit

155 GB

5,5/4,5 Bit

5,5 Bit

191 GB

6,5/5,5 Bit

🏂 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?