Partage de technologie

Gemma2 - Un guide d'application complet pour le nouveau modèle de langage open source à grande échelle de Google

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

0 Préface

Gemma 2 S'appuyant sur son prédécesseur, il offre des performances et une efficacité améliorées, ainsi qu'une gamme de fonctionnalités innovantes, ce qui le rend particulièrement attractif pour la recherche et les applications pratiques. Ce qui distingue le Gemma 2, c'est qu'il offre des performances comparables à celles des modèles propriétaires plus grands, mais avecprogicielConçu pour une accessibilité plus large et une utilisation sur des configurations matérielles plus modestes.

Au fur et à mesure que je me penche sur les spécifications techniques et l'architecture de Gemma 2, je suis de plus en plus impressionné par la sophistication de sa conception.Le modèle intègre une variété de technologies avancées, notamment de nouvellesmécanisme d'attentionet des méthodes innovantes de stabilité d'entraînement, qui contribuent toutes à ses performances exceptionnelles.

Dans ce guide complet, Gemma 2 sera exploré en profondeur, en examinant son architecture, ses fonctionnalités clés et ses applications pratiques. Que vous soyez un praticien expérimenté de l'IA ou un débutant enthousiaste dans le domaine, cet article vise à fournir des informations précieuses sur le fonctionnement de Gemma 2 et sur la manière dont vous pouvez exploiter ses capacités dans vos propres projets.

1. Qu'est-ce que Gemma 2 ?

Gemma 2 est le dernier open source à grande échelle de Googlemodèle de langage , superbement conçu mais puissant. Il s'appuie sur les mêmes recherches et technologies que celles utilisées pour créer les modèles Google Gemini, offrant des performances de pointe dans un package plus accessible. Gemma 2 est disponible en deux tailles :

Gemma 2 9B: Un modèle à 9 milliards de paramètres
Gemma 2 27B: Un modèle plus grand de 27 milliards de paramètres

Chaque taille est disponible en deux styles :

modèle de base: Pré-formation sur de grandes quantités de données textuelles
Modèle de réglage des instructions (IT): Affiné pour de meilleures performances sur des tâches spécifiques

Accéder aux modèles dans Google AI StudioGoogle AI Studio – Gemma 2
Lire le journal ici: Rapport technique de Gemma 2

2.Principales fonctionnalités et améliorations

Gemma 2 introduit plusieurs améliorations significatives par rapport à son prédécesseur :

2.1. Ajouter des données d'entraînement

Ces modèles ont été formés sur plus de données :

Gemma 2 27B: Après une formation avec 13 000 milliards de jetons
Gemma 2 9B: Après une formation avec 8 000 milliards de jetons

Cet ensemble de données étendu se compose principalement de données réseau (principalement en anglais), de code et de mathématiques, contribuant ainsi à améliorer les performances et la polyvalence de vos modèles.

2.2. Attention fenêtre coulissante

Gemma 2 implémente une nouvelle méthode de mécanisme d'attention :

Toutes les autres couches utilisent un mécanisme d'attention à fenêtre glissante et le contexte local est de 4 096 jetons.
La couche alternée adopte un mécanisme d'attention global entièrement quadratique pour l'ensemble du contexte du jeton 8192.

Cette approche hybride vise à équilibrer l’efficacité avec la capacité de capturer les dépendances à long terme dans l’entrée.

2.3. Casquette souple

Afin d'améliorer la stabilité et les performances de l'entraînement, Gemma 2 introduit un mécanisme de limite supérieure souple :

def soft_cap(x, cap):
    return cap * torch.tanh(x / cap)
# Applied to attention logits
attention_logits = soft_cap(attention_logits, cap=50.0)
# Applied to final layer logits
final_logits = soft_cap(final_logits, cap=30.0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Cette technique empêche les logits de devenir trop volumineux sans troncature dure, conservant ainsi plus d'informations tout en stabilisant le processus de formation.

  1. Gemma 2 9B: modèle à 9 milliards de paramètres
  2. Gemma 2 27B: Modèle plus grand de 27 milliards de paramètres

Chaque taille est disponible en deux styles :

  • Modèle de base : pré-entraîné sur de grandes quantités de données textuelles
  • Modèle de réglage des instructions (IT) : affiné pour de meilleures performances sur des tâches spécifiques

2.4. Distillation des connaissances

Pour le modèle 9B, Gemma 2 utilise la technologie d'extraction de connaissances :

  • Pré-formation : le modèle 9B apprend d'un modèle d'enseignant plus large lors de la formation initiale
  • Après la formation : les modèles 9B et 27B utilisent la distillation des politiques en ligne pour améliorer leurs performances

Ce processus permet au modèle plus petit de capturer plus efficacement les fonctionnalités du modèle plus grand.

2.5. Fusion de modèles

Gemma 2 utilise une nouvelle technologie de fusion de modèles appelée Warp, qui combine plusieurs modèles en trois étapes :

  1. Moyenne mobile exponentielle (EMA) lors du réglage fin de l'apprentissage par renforcement
  2. Interpolation linéaire sphérique (SLERP) après ajustement avec plusieurs stratégies
  3. Initialisation par interpolation linéaire (LITI) comme étape finale

Cette approche vise à créer un modèle final plus robuste et robuste.

3. Repères de performances

Gemma 2 démontre des performances impressionnantes sur une variété de critères :

Gemma 2 présente une architecture repensée conçue pour des performances et une efficacité d'inférence supérieures

6. Démarrer avec Gemma 2

Pour commencer à utiliser Gemma 2 dans vos projets, vous disposez des options suivantes :

6.1. Studio d'intelligence artificielle de Google

Gemma 2 est accessible via Google AI Studio,Studio d'intelligence artificielle de Google.

6.2. Visage étreignant

Gemma 2 et visage câlin Intégration de la bibliothèque Transformers. Voici comment l'utiliser :

<div class="relative flex flex-col rounded-lg">
<div class="text-text-300 absolute pl-3 pt-2.5 text-xs">
from transformers import AutoTokenizer, AutoModelForCausalLM
# Load the model and tokenizer
model_name = "google/gemma-2-27b-it" # or "google/gemma-2-9b-it" for the smaller version
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare input
prompt = "Explain the concept of quantum entanglement in simple terms."
inputs = tokenizer(prompt, return_tensors="pt")
# Generate text
outputs = model.generate(**inputs, max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6.3.TensorFlow/Keras

Pour les utilisateurs de TensorFlow, Gemma 2 est disponible via Keras :

import tensorflow as tf
from keras_nlp.models import GemmaCausalLM
# Load the model
model = GemmaCausalLM.from_preset("gemma_2b_en")
# Generate text
prompt = "Explain the concept of quantum entanglement in simple terms."
output = model.generate(prompt, max_length=200)
print(output)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

7. Utilisation avancée : utilisez Gemma 2 pour créer un système RAG local

Une application puissante de Gemma 2 consiste à créer des systèmes de génération augmentée par récupération (RAG). Créons un système RAG simple et entièrement natif en utilisant les intégrations Gemma 2 et Nomic.

Étape 1 : Configurer l'environnement

Tout d’abord, assurez-vous que les bibliothèques nécessaires sont installées :

pip install langchain ollama nomic chromadb
  • 1

Étape 2 : Indexer les documents

Créez un indexeur pour traiter les documents :

import os
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
class Indexer:
    def __init__(self, directory_path):
    self.directory_path = directory_path
    self.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
    self.embeddings = HuggingFaceEmbeddings(model_name="nomic-ai/nomic-embed-text-v1")
  
def load_and_split_documents(self):
    loader = DirectoryLoader(self.directory_path, glob="**/*.txt")
    documents = loader.load()
    return self.text_splitter.split_documents(documents)
def create_vector_store(self, documents):
    return Chroma.from_documents(documents, self.embeddings, persist_directory="./chroma_db")
def index(self):
    documents = self.load_and_split_documents()
    vector_store = self.create_vector_store(documents)
    vector_store.persist()
    return vector_store
# Usage
indexer = Indexer("path/to/your/documents")
vector_store = indexer.index()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Étape 3 : Configurer le système RAG

Maintenant, créez le système RAG en utilisant Gemma 2 :

from langchain.llms import Ollama
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
class RAGSystem:
    def __init__(self, vector_store):
        self.vector_store = vector_store
        self.llm = Ollama(model="gemma2:9b")
        self.retriever = self.vector_store.as_retriever(search_kwargs={"k": 3})
self.template = """Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
Question: {question}
Answer: """
self.qa_prompt = PromptTemplate(
template=self.template, input_variables=["context", "question"]
)
self.qa_chain = RetrievalQA.from_chain_type(
llm=self.llm,
chain_type="stuff",
retriever=self.retriever,
return_source_documents=True,
chain_type_kwargs={"prompt": self.qa_prompt}
)
def query(self, question):
return self.qa_chain({"query": question})
# Usage
rag_system = RAGSystem(vector_store)
response = rag_system.query("What is the capital of France?")
print(response["result"])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

Ce système RAG utilise Gemma 2 pour Ollama comme modèle de langage et l'intégration Nomic pour la récupération de documents. Il vous permet de poser des questions basées sur des documents indexés et de fournir des réponses contextuelles provenant de sources pertinentes.

Affiner Gemma 2

Pour des tâches ou des domaines spécifiques, vous devrez peut-être affiner Gemma 2. Voici un exemple de base utilisant la bibliothèque Hugging Face Transformers :

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset
# Load model and tokenizer
model_name = "google/gemma-2-9b-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare dataset
dataset = load_dataset("your_dataset")
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# Set up training arguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
warmup_steps=500,
weight_decay=0.01,
logging_dir="./logs",
)
# Initialize Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
)
# Start fine-tuning
trainer.train()
# Save the fine-tuned model
model.save_pretrained("./fine_tuned_gemma2")
tokenizer.save_pretrained("./fine_tuned_gemma2")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

Ajustez les paramètres de formation en fonction des exigences spécifiques et des ressources informatiques.

Considérations éthiques et limites

Bien que Gemma 2 offre des fonctionnalités impressionnantes, il faut être conscient de ses limites et considérations éthiques :

  • biais : Comme tous les modèles de langage, Gemma 2 peut refléter des biais présents dans ses données de formation. Évaluez toujours son résultat de manière critique.
  • exactitude factuelle : Bien que Gemma 2 soit puissant, il produit parfois des informations incorrectes ou incohérentes. Veuillez vérifier les faits importants auprès de sources fiables.
  • longueur du contexte : La longueur du contexte de Gemma 2 est de 8192 jetons. Pour les documents ou conversations plus longs, vous devrez peut-être mettre en œuvre des stratégies pour gérer efficacement le contexte.
  • Ressources informatiques: En particulier pour les modèles 27B, des ressources informatiques importantes peuvent être nécessaires pour une inférence et un réglage efficaces.
  • Utilisation responsable:Adhérez aux pratiques d'IA responsable de Google et assurez-vous que votre utilisation de Gemma 2 est conforme aux principes éthiques de l'IA.

8.Conclusion

Les fonctionnalités avancées de Gemma 2, telles que l'attention par fenêtre coulissante, les limites supérieures souples et les nouvelles techniques de fusion de modèles, en font un outil puissant pour un large éventail de tâches de traitement du langage naturel.

En tirant parti de Gemma 2 dans vos projets, que ce soit par le biais d'une simple inférence, de systèmes RAG complexes ou de modèles affinés spécifiques à un domaine, vous pouvez exploiter la puissance de SOTA AI tout en gardant le contrôle de vos données et processus.

Adresse d'origine :https://www.unite.ai/guide-complet-sur-le-nouveau-modele-de-langage-ouvert-de-gemma-2-de-google/