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

Gemma 3 - Leitfaden zum Ausführen

Wie man Gemma 3 effektiv mit unseren GGUFs in llama.cpp, Ollama, Open WebUI ausführt und wie man mit Unsloth feinabstimmt!

Google veröffentlicht Gemma 3 mit einem neuen 270M-Modell sowie den bisherigen Größen 1B, 4B, 12B und 27B. 270M und 1B sind nur für Text, während die größeren Modelle sowohl Text als auch Vision verarbeiten. Wir stellen GGUFs sowie eine Anleitung bereit, wie man es effektiv ausführt und wie man es feinabstimmt & RL mit Gemma 3!

AusführungstutorialFeinabstimmungstutorial

Unsloth ist das einzige Framework, das auf Float16-Maschinen für Gemma-3-Inferenz und Training funktioniert. Das bedeutet, dass auch Colab-Notebooks mit kostenlosen Tesla-T4-GPUs funktionieren!

Laut dem Gemma-Team ist die optimale Konfiguration für die Inferenz temperature = 1.0, top_k = 64, top_p = 0.95, min_p = 0.0

Unsloth-Gemma-3-Uploads mit optimalen Konfigurationen:

deutliche Leistungsverbesserungen: Es benötigt bis zu 75 % weniger Speicherplatz, reduziert den VRAM-Verbrauch um 50 %, beschleunigt das Zusammenführen um das 5-10-Fache und ermöglicht eine deutlich schnellere Konvertierung in das
Unsloth Dynamic 4-bit Instruct
16-Bit Instruct

⚙️ Empfohlene Inferenz-Einstellungen

Laut dem Gemma-Team sind die offiziell empfohlenen Einstellungen für die Inferenz:

  • Temperature von 1.0

  • Top_K von 64

  • Min_P von 0,00 (optional, aber 0,01 funktioniert gut; der Standardwert von llama.cpp ist 0,1)

  • Top_P von 0.95

  • Wiederholungsstrafe von 1.0. (1.0 bedeutet deaktiviert in llama.cpp und transformers)

  • Chat-Vorlage:

    <bos><start_of_turn>user\nHallo!<end_of_turn>\n<start_of_turn>model\nHey!<end_of_turn>\n<start_of_turn>user\nWas ist 1+1?<end_of_turn>\n<start_of_turn>model\n
  • Chat-Vorlage mit \ngerenderten Zeilenumbrüchen (außer beim letzten)

✨Gemma 3 auf Ihrem Telefon ausführen

Um die Modelle auf Ihrem Telefon auszuführen, empfehlen wir die Verwendung einer beliebigen mobilen App, die GGUFs lokal auf Edge-Geräten wie Telefonen ausführen kann. Nach dem Fine-Tuning können Sie es nach GGUF exportieren und dann lokal auf Ihrem Telefon ausführen. Stellen Sie sicher, dass Ihr Telefon über genügend RAM/Leistung verfügt, um die Modelle zu verarbeiten, da es sich überhitzen kann. Daher empfehlen wir für diesen Anwendungsfall Gemma 3 270M oder die Gemma-3n-Modelle. Sie können die Open-Source-Projekt AnythingLLMs mobile App ausprobieren, die Sie herunterladen können auf Android hier oder ChatterUI, die großartige Apps zum Ausführen von GGUFs auf Ihrem Telefon sind.

🦙 Tutorial: So führen Sie Gemma 3 in Ollama aus

  1. Installieren Sie ollama falls Sie das noch nicht getan haben!

  1. Führen Sie das Modell aus! Beachten Sie, dass Sie ollama servein einem anderen Terminal aufrufen können, falls es fehlschlägt! Wir enthalten alle unsere Korrekturen und vorgeschlagenen Parameter (temperature usw.) in params in unserem Hugging-Face-Upload! Sie können den Modellnamen 'gemma-3-27b-it-GGUF' in jeden Gemma-Modellnamen wie 'gemma-3-270m-it-GGUF:Q8_K_XL' ändern.

📖 Tutorial: So führen Sie Gemma 3 27B in llama.cpp aus

  1. Hole dir die neueste llama.cpp 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.

  1. Wenn du llama.cpp um Modelle direkt zu laden, kannst du Folgendes tun: (:Q4_K_XL) ist der Quantisierungstyp. Du kannst auch über Hugging Face herunterladen (Punkt 3). Dies ist ähnlich wie ollama run

  1. ODER das Modell herunterladen über (nach der Installation von pip install huggingface_hub hf_transfer ). Sie können Q4_K_M oder andere quantisierte Versionen wählen (wie BF16 Vollpräzision). Weitere Versionen unter: https://huggingface.co/unsloth/gemma-3-27b-it-GGUF

  1. Unsloths Flappy-Bird-Test ausführen

  2. Bearbeiten --threads 32 für die Anzahl der CPU-Threads bearbeiten, --ctx-size 16384 für die Kontextlänge (Gemma 3 unterstützt eine Kontextlänge von 128K!), --n-gpu-layers 99 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.

  3. Für den Konversationsmodus:

  1. Für den Nicht-Konversationsmodus, um Flappy Bird zu testen:

Die vollständige Eingabe aus unserem https://unsloth.ai/blog/deepseekr1-dynamic 1.58bit-Blog lautet:

🦥 Feinabstimmung von Gemma 3 in Unsloth

Unsloth ist das einzige Framework, das auf Float16-Maschinen für Gemma-3-Inferenz und Training funktioniert. Das bedeutet, dass auch Colab-Notebooks mit kostenlosen Tesla-T4-GPUs funktionieren!

Korrekturen für das Fine-Tuning in Unsloth

Unsere Lösung in Unsloth ist dreifach:

  1. Alle Zwischenaktivierungen im bfloat16-Format behalten - kann float32 sein, verwendet jedoch 2x mehr VRAM oder RAM (über Unsloths asynchrones Gradient-Checkpointing)

  2. Alle Matrixmultiplikationen in float16 mit Tensor Cores ausführen, aber manuelles Upcasting / Downcasting ohne die Hilfe von Pytorchs gemischter Präzisions-Autocast-Funktion.

  3. Alle anderen Optionen, die keine Matrixmultiplikationen benötigen (Layernorms), auf float32 hochstufen.

🤔 Analyse der Gemma-3-Korrekturen

Gemma 3 1B bis 27B überschreiten das Maximum von Float16 von 65504

Zuerst stellten wir vor dem Feinabstimmen oder Ausführen von Gemma 3 fest, dass bei Verwendung von Float16-Mixed-Precision Gradienten und Aktivierungen unendlich werden leider. Das passiert bei T4-GPUs, der RTX-20x-Serie und V100-GPUs, da sie nur Float16-Tensor-Cores haben.

Bei neueren GPUs wie der RTX 30x oder höher, A100s, H100s usw. haben diese GPUs bfloat16-Tensor-Cores, daher tritt dieses Problem nicht auf! Aber warum?

Float16 kann nur Zahlen bis 65504darstellen, während bfloat16 große Zahlen bis 10^38darstellen kann! Aber beachten Sie, dass beide Zahlenformate nur 16 Bits verwenden! Das liegt daran, dass Float16 mehr Bits zuteilt, sodass es kleinere Dezimalzahlen besser darstellen kann, während bfloat16 Bruchteile nicht gut darstellen kann.

Aber warum Float16? Dann nehmen wir doch einfach Float32! Aber leider ist Float32 auf GPUs bei Matrixmultiplikationen sehr langsam - manchmal 4- bis 10-mal langsamer! Das können wir also nicht tun.

Zuletzt aktualisiert

War das hilfreich?