Technologieaustausch

Gemma2 – Ein vollständiger Anwendungsleitfaden für Googles neues Open-Source-Sprachmodell im großen Maßstab

2024-07-12

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

0 Vorwort

Gemma 2 Aufbauend auf seinem Vorgänger bietet es eine verbesserte Leistung und Effizienz sowie eine Reihe innovativer Features, die es sowohl für Forschung als auch für praktische Anwendungen besonders attraktiv machen. Was Gemma 2 auszeichnet, ist, dass es eine Leistung liefert, die mit größeren proprietären Modellen vergleichbar ist, jedoch mitSoftwarepaketEntwickelt für eine breitere Zugänglichkeit und den Einsatz auf bescheideneren Hardware-Setups.

Während ich mich mit den technischen Spezifikationen und der Architektur von Gemma 2 beschäftige, bin ich zunehmend von der Raffinesse seines Designs beeindruckt.Das Modell beinhaltet eine Vielzahl fortschrittlicher Technologien, darunter auch neuartigeAufmerksamkeitsmechanismusund innovative Trainingsstabilitätsmethoden, die alle zu seiner außergewöhnlichen Leistung beitragen.

In diesem umfassenden Leitfaden wird Gemma 2 eingehend untersucht und seine Architektur, Hauptfunktionen und praktischen Anwendungen betrachtet. Egal, ob Sie ein erfahrener KI-Praktiker oder ein begeisterter Neuling auf diesem Gebiet sind, dieser Artikel soll wertvolle Einblicke in die Funktionsweise von Gemma 2 geben und wie Sie seine Fähigkeiten in Ihren eigenen Projekten nutzen können.

1. Was ist Gemma 2?

Gemma 2 ist Googles neueste Open-Source-GroßversionSprachmodell , exquisit gestaltet, aber leistungsstark. Es basiert auf der gleichen Forschung und Technologie wie bei der Erstellung von Google Gemini-Modellen und bietet modernste Leistung in einem zugänglicheren Paket. Gemma 2 ist in zwei Größen erhältlich:

Gemma 2 9B: Ein 9-Milliarden-Parameter-Modell
Gemma 2 27B: Ein größeres Modell mit 27 Milliarden Parametern

Jede Größe ist in zwei Ausführungen erhältlich:

Grundmodell: Vortraining für große Textdatenmengen
Instruction Tuning (IT)-Modell: Feinabstimmung für bessere Leistung bei bestimmten Aufgaben

Greifen Sie auf Modelle in Google AI Studio zuGoogle AI Studio – Gemma 2
Lesen Sie den Artikel hier: Technischer Bericht zu Gemma 2

2. Hauptfunktionen und Verbesserungen

Gemma 2 führt gegenüber seinem Vorgänger mehrere bedeutende Verbesserungen ein:

2.1. Trainingsdaten hinzufügen

Diese Modelle wurden anhand weiterer Daten trainiert:

Gemma 2 27B: Nach dem Training mit 13 Billionen Token
Gemma 2 9B: Nach dem Training mit 8 Billionen Token

Dieser erweiterte Datensatz besteht hauptsächlich aus Netzwerkdaten (hauptsächlich in Englisch), Code und Mathematik und trägt dazu bei, die Leistung und Vielseitigkeit Ihrer Modelle zu verbessern.

2.2. Achtung Schiebefenster

Gemma 2 implementiert eine neuartige Aufmerksamkeitsmechanismusmethode:

Jede zweite Ebene verwendet einen Schiebefenster-Aufmerksamkeitsmechanismus und der lokale Kontext beträgt 4096 Token.
Die alternierende Schicht übernimmt einen vollständig quadratischen globalen Aufmerksamkeitsmechanismus für den gesamten 8192-Token-Kontext.

Dieser hybride Ansatz zielt darauf ab, ein Gleichgewicht zwischen Effizienz und der Fähigkeit herzustellen, langfristige Abhängigkeiten in der Eingabe zu erfassen.

2.3. Weiche Kappe

Um die Stabilität und Leistung des Trainings zu verbessern, führt Gemma 2 einen Mechanismus mit weicher Obergrenze ein:

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

Diese Technik verhindert, dass Protokolle ohne harte Kürzung zu groß werden, wodurch mehr Informationen erhalten bleiben und gleichzeitig der Trainingsprozess stabilisiert wird.

  1. Gemma 2 9B: 9-Milliarden-Parametermodell
  2. Gemma 2 27B: Größeres Modell mit 27 Milliarden Parametern

Jede Größe ist in zwei Ausführungen erhältlich:

  • Basismodell: vorab auf große Textdatenmengen trainiert
  • Instruction Tuning (IT)-Modell: Feinabstimmung für bessere Leistung bei bestimmten Aufgaben

2.4. Wissensdestillation

Für das 9B-Modell nutzt Gemma 2 Wissensextraktionstechnologie:

  • Vorschulung: Das 9B-Modell lernt während der Erstschulung von einem größeren Lehrermodell
  • Nach dem Training: Sowohl das 9B- als auch das 27B-Modell nutzen die Online-Richtliniendestillation, um ihre Leistung zu verbessern

Dieser Prozess hilft dem kleineren Modell, die Funktionalität des größeren Modells effektiver zu erfassen.

2.5. Modellzusammenführung

Gemma 2 nutzt eine neue Technologie zur Modellzusammenführung namens Warp, die mehrere Modelle in drei Stufen kombiniert:

  1. Exponentieller gleitender Durchschnitt (EMA) während der Feinabstimmung des Verstärkungslernens
  2. Sphärische lineare Interpolation (SLERP) nach Feinabstimmung mit mehreren Strategien
  3. Lineare Interpolationsinitialisierung (LITI) als letzter Schritt

Dieser Ansatz zielt darauf ab, ein robusteres und robusteres Endmodell zu erstellen.

3. Leistungsbenchmarks

Gemma 2 zeigt beeindruckende Leistung in einer Vielzahl von Benchmarks:

Gemma 2 verfügt über eine neu gestaltete Architektur, die für überlegene Leistung und Inferenzeffizienz ausgelegt ist

6. Erste Schritte mit Gemma 2

Um Gemma 2 in Ihren Projekten zu verwenden, haben Sie folgende Möglichkeiten:

6.1. Google Artificial Intelligence Studio

Auf Gemma 2 kann über Google AI Studio zugegriffen werden.Google Artificial Intelligence Studio.

6.2. Umarmendes Gesicht

Gemma 2 und Hugging Face Integration der Transformers-Bibliothek. So verwenden Sie es:

<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

Für TensorFlow-Benutzer ist Gemma 2 über Keras verfügbar:

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. Erweiterte Verwendung: Verwenden Sie Gemma 2, um ein lokales RAG-System aufzubauen

Eine leistungsstarke Anwendung von Gemma 2 ist der Aufbau von RAG-Systemen (Retrieval-Augmented Generation). Lassen Sie uns ein einfaches, vollständig natives RAG-System mit Gemma 2- und Nomic-Einbettungen erstellen.

Schritt 1: Richten Sie die Umgebung ein

Stellen Sie zunächst sicher, dass Sie die erforderlichen Bibliotheken installiert haben:

pip install langchain ollama nomic chromadb
  • 1

Schritt 2: Dokumente indizieren

Erstellen Sie einen Indexer zur Verarbeitung der Dokumente:

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

Schritt 3: Richten Sie das RAG-System ein

Erstellen Sie nun das RAG-System mit 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

Dieses RAG-System verwendet Gemma 2 bis Ollama als Sprachmodell und Nomic-Einbettung zum Abrufen von Dokumenten. Es ermöglicht Ihnen, Fragen auf der Grundlage indizierter Dokumente zu stellen und kontextbezogene Antworten aus relevanten Quellen bereitzustellen.

Feinabstimmung von Gemma 2

Für bestimmte Aufgaben oder Domänen müssen Sie möglicherweise eine Feinabstimmung von Gemma 2 vornehmen. Hier ist ein einfaches Beispiel für die Verwendung der Hugging Face Transformers-Bibliothek:

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

Passen Sie Trainingsparameter basierend auf spezifischen Anforderungen und Rechenressourcen an.

Ethische Überlegungen und Einschränkungen

Obwohl Gemma 2 eine beeindruckende Funktionalität bietet, muss man sich seiner Einschränkungen und ethischen Überlegungen bewusst sein:

  • Voreingenommenheit : Wie alle Sprachmodelle spiegelt Gemma 2 möglicherweise in seinen Trainingsdaten vorhandene Vorurteile wider. Bewerten Sie die Ergebnisse immer kritisch.
  • sachliche Richtigkeit : Obwohl Gemma 2 leistungsstark ist, erzeugt es manchmal falsche oder inkonsistente Informationen. Bitte überprüfen Sie wichtige Fakten aus zuverlässigen Quellen.
  • Kontextlänge : Die Kontextlänge von Gemma 2 beträgt 8192 Token. Bei längeren Dokumenten oder Gesprächen müssen Sie möglicherweise Strategien implementieren, um den Kontext effektiv zu verwalten.
  • Rechenressourcen: Insbesondere für 27B-Modelle können erhebliche Rechenressourcen für eine effektive Inferenz und Feinabstimmung erforderlich sein.
  • Verantwortungsvoller Umgang: Halten Sie sich an die Responsible-AI-Praktiken von Google und stellen Sie sicher, dass Ihre Nutzung von Gemma 2 den ethischen KI-Prinzipien entspricht.

8. Fazit

Die erweiterten Funktionen von Gemma 2, wie z. B. Schiebefenster-Aufmerksamkeit, weiche Obergrenzen und neuartige Techniken zur Modellzusammenführung, machen es zu einem leistungsstarken Werkzeug für eine Vielzahl von Aufgaben zur Verarbeitung natürlicher Sprache.

Durch den Einsatz von Gemma 2 in Ihren Projekten, sei es durch einfache Inferenz, komplexe RAG-Systeme oder domänenspezifische, fein abgestimmte Modelle, können Sie die Leistungsfähigkeit von SOTA AI nutzen und gleichzeitig die Kontrolle über Ihre Daten und Prozesse behalten.

Ursprüngliche Adresse:https://www.unite.ai/complete-guide-on-gemma-2-googles-new-open-large-language-model/