Google 2024 9B / 27B / 2B Text Generation

Gemma 2

Architecture bien optimisée. Gemma 2 (9B et 27B) offre des performances qui rivalisent avec des modèles beaucoup plus lourds.

Aperçu

Gemma 2 tire parti du knowledge distillation (on distille les connaissances d’un gros modèle vers un plus petit). Résultat, la version 27B arrive à se mesurer à des modèles de 70B paramètres.

La version 9B est particulièrement intéressante pour les développeurs, avec un bon ratio qualité/vitesse d’inférence.

Intégration avec Hugging Face

Comment utiliser Gemma 2 (9B) dans un script Python avec la précision 4-bit (bitsandbytes) pour économiser la VRAM.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig

# Configuration de quantification 4-bit pour économiser la RAM
quantization_config = BitsAndBytesConfig(load_in_4bit=True)

tokenizer = AutoTokenizer.from_pretrained("google/gemma-2-9b-it")
model = AutoModelForCausalLM.from_pretrained(
    "google/gemma-2-9b-it",
    quantization_config=quantization_config
)

input_text = "Explique moi la physique quantique comme si j'avais 5 ans."
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")

outputs = model.generate(**input_ids, max_new_tokens=200)
print(tokenizer.decode(outputs[0]))

Format de Prompt

Gemma utilise un format de contrôle de flux strict avec des balises XML-like pour les rôles.

<start_of_turn>user
Quelle est la différence entre le machine learning et le deep learning ?<end_of_turn>
<start_of_turn>model
La différence principale se situe au niveau de l'architecture.