AI-modellen en platforms

Compleet gids over Gemma 2: Google’s nieuwe open large language model

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google

Gemma 2 bouwt voort op zijn voorganger, met verbeterde prestaties en efficiëntie, evenals een reeks innovatieve functies die het bijzonder aantrekkelijk maken voor zowel onderzoek als praktische toepassingen. Wat Gemma 2 onderscheidt, is zijn vermogen om prestaties te leveren die vergelijkbaar zijn met veel grotere propriëtaire modellen, maar in een pakket dat is ontworpen voor bredere toegankelijkheid en gebruik op bescheidener hardware-configuraties.

Toen ik me verdiepte in de technische specificaties en architectuur van Gemma 2, was ik steeds meer onder de indruk van de ingenieuze ontwerpkeuzes. Het model omvat verschillende geavanceerde technieken, waaronder novate aandachtmecanismen en innovatieve benaderingen van trainingsstabiliteit, die bijdragen aan zijn opmerkelijke mogelijkheden.

Google Open Source LLM Gemma

Google [securities_stock_price_tag symbol="GOOGL" exchange="NASDAQ"] Open Source LLM Gemma

In deze uitgebreide gids zullen we Gemma 2 diepgaand onderzoeken, waarbij we zijn architectuur, sleutelfuncties en praktische toepassingen bekijken. Of je nu een ervaren AI-praktijkbeoefenaar bent of een enthousiaste nieuwkomer in het veld, dit artikel heeft als doel waardevolle inzichten te bieden in hoe Gemma 2 werkt en hoe je zijn kracht in je eigen projecten kunt benutten.

Wat is Gemma 2?

Gemma 2 is Google’s nieuwste open-source large language model, ontworpen om lichtgewicht en krachtig te zijn. Het is gebouwd op dezelfde onderzoek en technologie die gebruikt werd om Google’s Gemini-modellen te creëren, met state-of-the-art prestaties in een toegankelijker pakket. Gemma 2 is beschikbaar in twee maten:

Gemma 2 9B: Een model met 9 miljard parameters
Gemma 2 27B: Een groter model met 27 miljard parameters

Elk formaat is beschikbaar in twee varianten:

Basismodellen: Vooraf getraind op een enorme verzameling tekstgegevens
Instruction-tuned (IT) modellen: Fijngesteld voor betere prestaties op specifieke taken

Toegang tot de modellen in Google AI Studio: Google AI Studio – Gemma 2

Lees het technisch rapport hier: Gemma 2 Technisch Rapport

Sleutelfuncties en Verbeteringen

Gemma 2 introduceert verschillende significante verbeteringen ten opzichte van zijn voorganger:

1. Verhoogde Trainingsgegevens

De modellen zijn getraind op aanzienlijk meer gegevens:

Gemma 2 27B: Getraind op 13 biljoen tokens
Gemma 2 9B: Getraind op 8 biljoen tokens

Deze uitgebreide dataset, voornamelijk bestaande uit webgegevens (voornamelijk Engels), code en wiskunde, draagt bij aan de verbeterde prestaties en veelzijdigheid van de modellen.

2. Sliding Window Attention

Gemma 2 implementeert een novate benadering van aandachtmecanismen:

Elke andere laag gebruikt een sliding window attention met een lokale context van 4096 tokens
Alternatieve lagen gebruiken volledige kwadratische globale aandacht over de hele 8192 token context

Deze hybride benadering heeft als doel om efficiëntie te balanceren met het vermogen om lange-afstandsafhankelijkheden in de invoer te detecteren.

3. Soft-Capping

Om de trainingsstabiliteit en prestaties te verbeteren, introduceert Gemma 2 een soft-capping mechanisme:


<p>def soft_cap(x, cap):
return cap * torch.tanh(x / cap)</p>

<p># Toegepast op aandachtdrempels
attention_logits = soft_cap(attention_logits, cap=50.0)</p>

# Toegepast op eindlaagdrempels

<p>final_logits = soft_cap(final_logits, cap=30.0)

Deze techniek voorkomt dat drempels te groot worden zonder harde truncatie, waardoor meer informatie behouden blijft en de trainingsprocessen gestabiliseerd worden.

  1. Gemma 2 9B: Een model met 9 miljard parameters
  2. Gemma 2 27B: Een groter model met 27 miljard parameters

Elk formaat is beschikbaar in twee varianten:

  • Basismodellen: Vooraf getraind op een enorme verzameling tekstgegevens
  • Instruction-tuned (IT) modellen: Fijngesteld voor betere prestaties op specifieke taken

4. Kennisoverdracht

Voor het 9B-model gebruikt Gemma 2 kennisoverdrachtstechnieken:

  • Voorafgaand aan de training: Het 9B-model leert van een groter leraarmodel tijdens de initiële training
  • Na de training: Zowel het 9B- als het 27B-model gebruiken on-policy overdracht om hun prestaties te verfijnen

Dit proces helpt het kleinere model om de capaciteiten van grotere modellen effectiever te benutten.

5. Modelcombinatie

Gemma 2 maakt gebruik van een novate modelcombinatietechniek genaamd Warp, die meerdere modellen combineert in drie fasen:

  1. Exponentiële gemiddelde (EMA) tijdens versterking van het leren
  2. Sferische lineaire interpolatie (SLERP) na het fijne tunen van meerdere beleidsregels
  3. Lineaire interpolatie naar initialisatie (LITI) als laatste stap

Deze benadering heeft als doel om een robuuster en capabeler eindmodel te creëren.

Prestatiebenchmarks

Gemma 2 toont indrukwekkende prestaties op verschillende benchmarks:

Gemma 2 op een herontworpen architectuur, ontworpen voor zowel uitzonderlijke prestaties als inferentie-efficiëntie

Gemma 2 op een herontworpen architectuur, ontworpen voor zowel uitzonderlijke prestaties als inferentie-efficiëntie

 

Aan de slag met Gemma 2

Om Gemma 2 in je projecten te gebruiken, heb je verschillende opties:

1. Google AI Studio

Voor snelle experimenten zonder hardwarevereisten kun je Gemma 2 bereiken via Google AI Studio.

2. Hugging Transformers

Gemma 2 is geïntegreerd met de populaire Hugging Face Transformers-bibliotheek. Hier kun je zien hoe je het kunt gebruiken:

&lt;div class=&quot;relative flex flex-col rounded-lg&quot;&gt;
&lt;div class=&quot;text-text-300 absolute pl-3 pt-2.5 text-xs&quot;&gt;

<p>from transformers import AutoTokenizer, AutoModelForCausalLM</p>

<p># Laad het model en de tokenizer
model_name = &quot;google/gemma-2-27b-it&quot; # of &quot;google/gemma-2-9b-it&quot; voor de kleinere versie
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)</p>

<p># Bereid de invoer voor
prompt = &quot;Leg het concept van quantumverstrengeling uit in eenvoudige bewoordingen.&quot;
inputs = tokenizer(prompt, return_tensors=&quot;pt&quot;)</p>

<p># Genereer tekst
outputs = model.generate(**inputs, max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)</p>

print(response)

3. TensorFlow/Keras

Voor TensorFlow-gebruikers is Gemma 2 beschikbaar via Keras:


<p>import tensorflow as tf
from keras_nlp.models import GemmaCausalLM</p>

<p># Laad het model
model = GemmaCausalLM.from_preset(&quot;gemma_2b_en&quot;)</p>

<p># Genereer tekst
prompt = &quot;Leg het concept van quantumverstrengeling uit in eenvoudige bewoordingen.&quot;
output = model.generate(prompt, max_length=200)</p>

print(output)

Geavanceerd gebruik: Een lokale RAG-systeem bouwen met Gemma 2

Een van de krachtige toepassingen van Gemma 2 is het bouwen van een Retrieval Augmented Generation (RAG)-systeem. Laten we een eenvoudig, volledig lokaal RAG-systeem maken met Gemma 2 en Nomic-embeddings.

Stap 1: Het opzetten van de omgeving

Eerst moet je ervoor zorgen dat je de benodigde bibliotheken hebt geïnstalleerd:


<p>pip install langchain ollama nomic chromadb</p>

Stap 2: Indexeren van documenten

Maak een indexer om je documenten te verwerken:


<p>import os
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings</p>

<p>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=&quot;nomic-ai/nomic-embed-text-v1&quot;)</p>

<p>def load_and_split_documents(self):
loader = DirectoryLoader(self.directory_path, glob=&quot;**/*.txt&quot;)
documents = loader.load()
return self.text_splitter.split_documents(documents)</p>

<p>def create_vector_store(self, documents):
return Chroma.from_documents(documents, self.embeddings, persist_directory=&quot;./chroma_db&quot;)</p>

<p>def index(self):
documents = self.load_and_split_documents()
vector_store = self.create_vector_store(documents)
vector_store.persist()
return vector_store</p>

<p># Gebruik
indexer = Indexer(&quot;pad/naar/je/documenten&quot;)
vector_store = indexer.index()</p>

Stap 3: Het opzetten van het RAG-systeem

Nu gaan we het RAG-systeem maken met Gemma 2:


<p>from langchain.llms import Ollama
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate</p>

<p>class RAGSystem:
def __init__(self, vector_store):
self.vector_store = vector_store
self.llm = Ollama(model=&quot;gemma2:9b&quot;)
self.retriever = self.vector_store.as_retriever(search_kwargs={&quot;k&quot;: 3})</p>

<p>self.template = &quot;&quot;&quot;Gebruik de volgende stukken context om de vraag aan het einde te beantwoorden.
Als je het antwoord niet weet, zeg dan dat je het niet weet, probeer geen antwoord te verzinnen.</p>

{context}

<p>Vraag: {question}
Antwoord: &quot;&quot;&quot;</p>

<p>self.qa_prompt = PromptTemplate(
template=self.template, input_variables=[&quot;context&quot;, &quot;question&quot;]
)</p>

<p>self.qa_chain = RetrievalQA.from_chain_type(
llm=self.llm,
chain_type=&quot;stuff&quot;,
retriever=self.retriever,
return_source_documents=True,
chain_type_kwargs={&quot;prompt&quot;: self.qa_prompt}
)</p>

<p>def query(self, question):
return self.qa_chain({&quot;query&quot;: question})</p>

<p># Gebruik
rag_system = RAGSystem(vector_store)
response = rag_system.query(&quot;Wat is de hoofdstad van Frankrijk?&quot;)
print(response[&quot;result&quot;])</p>

Dit RAG-systeem gebruikt Gemma 2 via Ollama voor het taalmodel en Nomic-embeddings voor documentopname. Het stelt je in staat om vragen te stellen op basis van de geïndexeerde documenten, met antwoorden die context bieden uit de relevante bronnen.

Fijntunen van Gemma 2

Voor specifieke taken of domeinen kun je Gemma 2 fijntunen. Hier is een basisvoorbeeld met de Hugging Face Transformers-bibliotheek:

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset

<p># Laad model en tokenizer
model_name = &quot;google/gemma-2-9b-it&quot;
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)</p>

<p># Bereid de dataset voor
dataset = load_dataset(&quot;je_dataset&quot;)</p>

<p>def tokenize_function(examples):
return tokenizer(examples[&quot;text&quot;], padding=&quot;max_length&quot;, truncation=True)</p>

<p>tokenized_datasets = dataset.map(tokenize_function, batched=True)</p>

<p># Stel trainingsargumenten in
training_args = TrainingArguments(
output_dir=&quot;./results&quot;,
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=&quot;./logs&quot;,
)</p>

<p># Initialiseer Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets[&quot;train&quot;],
eval_dataset=tokenized_datasets[&quot;test&quot;],
)</p>

# Start fijntunen
trainer.train()

<p># Sla het gefijntunde model op
model.save_pretrained(&quot;./fine_tuned_gemma2&quot;)
tokenizer.save_pretrained(&quot;./fine_tuned_gemma2&quot;)</p>

Houd er rekening mee dat je de trainingsparameters moet aanpassen op basis van je specifieke vereisten en rekenbronnen.

Ethische overwegingen en beperkingen

Hoewel Gemma 2 indrukwekkende mogelijkheden biedt, is het essentieel om je bewust te zijn van zijn beperkingen en ethische overwegingen:

  • Vooringenomenheid: Net als alle taalmodellen kan Gemma 2 vooringenomenheden weerspiegelen die aanwezig zijn in zijn trainingsgegevens. Beoordeel zijn uitvoer altijd kritisch.
  • Feitelijke nauwkeurigheid: Hoewel Gemma 2 zeer capabel is, kan het soms onjuiste of inconsistentie informatie genereren. Verifieer belangrijke feiten uit betrouwbare bronnen.
  • Contextlengte: Gemma 2 heeft een contextlengte van 8192 tokens. Voor langere documenten of conversaties moet je mogelijk strategieën implementeren om de context effectief te beheren.
  • Rekenbronnen: Vooral voor het 27B-model kunnen aanzienlijke rekenbronnen nodig zijn voor efficiënte inferentie en fijntuning.
  • Verantwoord gebruik: Houd je aan Google’s verantwoorde AI-praktijken en zorg ervoor dat je gebruik van Gemma 2 in overeenstemming is met ethische AI-beginselen.

Conclusie

Gemma 2 biedt geavanceerde functies zoals sliding window attention, soft-capping en novate modelcombinatietechnieken, waardoor het een krachtig instrument is voor een breed scala aan natuurlijke taalverwerkingstaken.

Door Gemma 2 in je projecten te gebruiken, of het nu gaat om eenvoudige inferentie, complexe RAG-systemen of gefijntunde modellen voor specifieke domeinen, kun je de kracht van SOTA AI benutten terwijl je de controle over je gegevens en processen behoudt.

Ik heb de afgelopen vijf jaar doorgebracht met het onderdompelen van mezelf in de fascinerende wereld van Machine Learning en Deep Learning. Mijn passie en expertise hebben me geleid om bij te dragen aan meer dan 50 diverse software-engineeringprojecten, met een bijzondere focus op AI/ML. Mijn voortdurende nieuwsgierigheid heeft me ook aangetrokken tot Natural Language Processing, een vakgebied dat ik graag verder wil verkennen.