Gemma 3 - guide d'exécution

Comment exécuter efficacement Gemma 3 avec nos GGUF sur llama.cpp, Ollama, Open WebUI et comment fine-tuner avec Unsloth !

Google publie Gemma 3 avec un nouveau modèle 270M et les tailles précédentes 1B, 4B, 12B et 27B. Les 270M et 1B sont uniquement textuels, tandis que les modèles plus grands prennent en charge à la fois le texte et la vision. Nous fournissons des GGUF, ainsi qu’un guide sur la façon de l’exécuter efficacement, et sur la façon de le fine-tuner et de faire RL avec Gemma 3 !

Tutoriel d’exécutionTutoriel de fine-tuning

Unsloth est le seul framework qui fonctionne sur des machines float16 pour l’inférence et l’entraînement de Gemma 3. Cela signifie que les notebooks Colab avec des GPU Tesla T4 gratuits fonctionnent aussi !

Selon l’équipe Gemma, la configuration optimale pour l’inférence est température = 1.0, top_k = 64, top_p = 0.95, min_p = 0.0

Téléversements Unsloth Gemma 3 avec configurations optimales :

format GGUF
Instruct dynamique 4 bits d’Unsloth
Instruct 16 bits

⚙️ Paramètres d’inférence recommandés

Selon l’équipe Gemma, les paramètres officiels recommandés pour l’inférence sont :

  • Température de 1.0

  • Top_K de 64

  • Min_P de 0,00 (facultatif, mais 0,01 fonctionne bien, la valeur par défaut de llama.cpp est 0,1)

  • Top_P de 0.95

  • Pénalité de répétition de 1.0. (1.0 signifie désactivé dans llama.cpp et transformers)

  • Modèle de chat :

    <bos><start_of_turn>user\nHello!<end_of_turn>\n<start_of_turn>model\nHey there!<end_of_turn>\n<start_of_turn>user\nWhat is 1+1?<end_of_turn>\n<start_of_turn>model\n
  • Modèle de chat avec \nles retours à la ligne rendus (sauf pour le dernier)

✨Exécuter Gemma 3 sur votre téléphone

Pour exécuter les modèles sur votre téléphone, nous vous recommandons d’utiliser toute application mobile capable d’exécuter localement des GGUF sur des appareils en périphérie comme les téléphones. Après le fine-tuning, vous pouvez l’exporter en GGUF puis l’exécuter localement sur votre téléphone. Assurez-vous que votre téléphone dispose de suffisamment de RAM/puissance pour traiter les modèles, car il peut surchauffer ; nous recommandons donc d’utiliser Gemma 3 270M ou les modèles Gemma 3n pour ce cas d’usage. Vous pouvez essayer le projet open source AnythingLLM application mobile que vous pouvez télécharger sur Android ici ou ChatterUI, qui sont d’excellentes applications pour exécuter des GGUF sur votre téléphone.

🦙 Tutoriel : Comment exécuter Gemma 3 dans Ollama

  1. Installez ollama si vous ne l’avez pas déjà fait !

  1. Exécutez le modèle ! Notez que vous pouvez appeler ollama servedans un autre terminal si cela échoue ! Nous incluons toutes nos corrections et les paramètres suggérés (température, etc.) dans params dans notre téléversement Hugging Face ! Vous pouvez changer le nom du modèle 'gemma-3-27b-it-GGUF' en n’importe quel modèle Gemma comme 'gemma-3-270m-it-GGUF:Q8_K_XL'.

📖 Tutoriel : Comment exécuter Gemma 3 27B dans llama.cpp

  1. Obtenez la dernière version llama.cpp sur GitHub ici. Vous pouvez également suivre les instructions de compilation ci-dessous. Changez -DGGML_CUDA=ON en -DGGML_CUDA=OFF si vous n’avez pas de GPU ou si vous souhaitez simplement une inférence CPU. Pour les appareils Apple Mac / Metal, définissez -DGGML_CUDA=OFF puis continuez comme d'habitude - la prise en charge de Metal est activée par défaut.

  1. Si vous souhaitez utiliser llama.cpp directement pour charger les modèles, vous pouvez faire ce qui suit : (:Q4_K_XL) est le type de quantification. Vous pouvez aussi télécharger via Hugging Face (point 3). C’est similaire à ollama run

  1. OU télécharger le modèle via (après avoir installé pip install huggingface_hub hf_transfer ). Vous pouvez choisir Q4_K_M, ou d’autres versions quantifiées (comme BF16 en précision complète). Plus de versions sur : https://huggingface.co/unsloth/gemma-3-27b-it-GGUF

  1. Exécutez le test Flappy Bird d’Unsloth

  2. Modifier --threads 32 pour le nombre de threads CPU, --ctx-size 16384 pour la longueur de contexte (Gemma 3 prend en charge une longueur de contexte de 128K !), --n-gpu-layers 99 pour le déchargement GPU, selon le nombre de couches. Essayez de l’ajuster si votre GPU manque de mémoire. Supprimez-le aussi si vous n'avez qu'une inférence CPU.

  3. En mode conversation :

  1. Pour le mode non conversationnel afin de tester Flappy Bird :

L’entrée complète de notre https://unsloth.ai/blog/deepseekr1-dynamic article de blog 1.58bit est :

🦥 Fine-tuning de Gemma 3 dans Unsloth

Unsloth est le seul framework qui fonctionne sur des machines float16 pour l’inférence et l’entraînement de Gemma 3. Cela signifie que les notebooks Colab avec des GPU Tesla T4 gratuits fonctionnent aussi !

Corrections de fine-tuning d’Unsloth

Notre solution dans Unsloth repose sur 3 axes :

  1. Conserver toutes les activations intermédiaires au format bfloat16 - peut être en float32, mais cela utilise 2x plus de VRAM ou de RAM (via le gradient checkpointing asynchrone d’Unsloth)

  2. Effectuer toutes les multiplications matricielles en float16 avec les tensor cores, tout en faisant manuellement l’upcasting / downcasting sans l’aide de l’autocast de précision mixte de Pytorch.

  3. Upcaster toutes les autres options qui n’ont pas besoin de multiplications matricielles (layernorms) en float32.

🤔 Analyse des corrections de Gemma 3

Gemma 3 1B à 27B dépasse le maximum de 65504 du float16

Tout d’abord, avant de fine-tuner ou d’exécuter Gemma 3, nous avons constaté qu’en utilisant la précision mixte float16, les gradients et les activations deviennent infinis malheureusement. Cela se produit sur les GPU T4, la série RTX 20x et les GPU V100, où ils ne disposent que de tensor cores float16.

Pour les GPU plus récents comme les RTX 30x ou supérieurs, les A100, H100, etc., ces GPU disposent de tensor cores bfloat16, donc ce problème ne se produit pas ! Mais pourquoi ?

Float16 ne peut représenter que des nombres allant jusqu’à 65504, tandis que le bfloat16 peut représenter d’énormes nombres allant jusqu’à 10^38! Mais notez que les deux formats de nombres n’utilisent que 16 bits ! Cela s’explique par le fait que le float16 alloue plus de bits afin de mieux représenter les décimales plus petites, tandis que le bfloat16 ne peut pas bien représenter les fractions.

Mais pourquoi float16 ? Utilisons simplement float32 ! Mais malheureusement, le float32 sur les GPU est très lent pour les multiplications matricielles - parfois 4 à 10 fois plus lent ! Donc nous ne pouvons pas faire cela.

Mis à jour

Ce contenu vous a-t-il été utile ?