Condivisione della tecnologia

Gemma2: una guida applicativa completa per il nuovo modello linguistico open source su larga scala di Google

2024-07-12

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

0 Prefazione

Gemma 2 Basandosi sul suo predecessore, offre prestazioni ed efficienza migliorate, nonché una serie di caratteristiche innovative, che lo rendono particolarmente interessante sia per la ricerca che per le applicazioni pratiche. Ciò che distingue Gemma 2 è che offre prestazioni paragonabili a modelli proprietari più grandi, ma conpacchetto softwareProgettato per una più ampia accessibilità e utilizzo su configurazioni hardware più modeste.

Man mano che approfondisco le specifiche tecniche e l'architettura di Gemma 2, rimango sempre più colpito dalla raffinatezza del suo design.Il modello incorpora una varietà di tecnologie avanzate, incluse quelle innovativemeccanismo di attenzionee metodi innovativi di stabilità dell'allenamento, che contribuiscono tutti alle sue prestazioni eccezionali.

In questa guida completa, Gemma 2 verrà esplorato in modo approfondito, esaminandone l'architettura, le caratteristiche principali e le applicazioni pratiche. Che tu sia un professionista esperto di intelligenza artificiale o un principiante entusiasta del settore, questo articolo mira a fornire preziosi spunti su come funziona Gemma 2 e su come sfruttare le sue capacità nei tuoi progetti.

1. Cos'è Gemma 2?

Gemma 2 è l’ultimo open source di Google su larga scalamodello linguistico , squisitamente progettato ma potente. Si basa sulla stessa ricerca e tecnologia utilizzata per creare i modelli Google Gemini, offrendo prestazioni all'avanguardia in un pacchetto più accessibile. Gemma 2 è disponibile in due dimensioni:

Gemma 2 9B: Un modello da 9 miliardi di parametri
Gemma 2 27B: Un modello più ampio da 27 miliardi di parametri

Ogni dimensione è disponibile in due stili:

modello base: Pre-formazione su grandi quantità di dati di testo
Modello di ottimizzazione delle istruzioni (IT).: ottimizzato per prestazioni migliori su attività specifiche

Accedi ai modelli in Google AI StudioStudio AI di Google – Gemma 2
Leggi il documento qui: Rapporto tecnico Gemma 2

2.Caratteristiche principali e miglioramenti

Gemma 2 introduce diversi miglioramenti significativi rispetto al suo predecessore:

2.1. Aggiungere dati di allenamento

Questi modelli sono stati addestrati su più dati:

Gemma 2 27B: Dopo l'allenamento con 13 trilioni di gettoni
Gemma 2 9B: Dopo l'allenamento con 8 trilioni di gettoni

Questo set di dati esteso è costituito principalmente da dati di rete (per lo più in inglese), codice e matematica, che aiutano a migliorare le prestazioni e la versatilità dei modelli.

2.2. Attenzione alla finestra scorrevole

Gemma 2 implementa un nuovo metodo di meccanismo di attenzione:

Ogni altro livello utilizza un meccanismo di attenzione della finestra scorrevole e il contesto locale è di 4096 token.
Lo strato alternato adotta un meccanismo di attenzione globale completamente quadratico per l'intero contesto del token 8192.

Questo approccio ibrido mira a bilanciare l’efficienza con la capacità di catturare dipendenze a lungo raggio nell’input.

2.3. Cappuccio morbido

Per migliorare la stabilità e le prestazioni dell'allenamento, Gemma 2 introduce un meccanismo di limite superiore morbido:

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

Questa tecnica impedisce ai logit di diventare troppo grandi senza un troncamento netto, conservando così più informazioni e stabilizzando il processo di training.

  1. Gemma 2 9B: modello da 9 miliardi di parametri
  2. Gemma 2 27B: Modello più grande da 27 miliardi di parametri

Ogni dimensione è disponibile in due stili:

  • Modello base: pre-addestrato su grandi quantità di dati di testo
  • Modello Instruction Tuning (IT): ottimizzato per prestazioni migliori su compiti specifici

2.4. Distillazione della conoscenza

Per il modello 9B, Gemma 2 utilizza la tecnologia di estrazione della conoscenza:

  • Pre-formazione: il modello 9B apprende da un modello di insegnante più ampio durante la formazione iniziale
  • Dopo la formazione: entrambi i modelli 9B e 27B utilizzano la distillazione delle politiche online per migliorare le proprie prestazioni

Questo processo aiuta il modello più piccolo a catturare in modo più efficace la funzionalità del modello più grande.

2.5. Fusione dei modelli

Gemma 2 utilizza una nuova tecnologia di fusione dei modelli chiamata Warp, che combina più modelli in tre fasi:

  1. Media mobile esponenziale (EMA) durante la messa a punto dell'apprendimento per rinforzo
  2. Interpolazione lineare sferica (SLERP) dopo la messa a punto con più strategie
  3. Inizializzazione dell'interpolazione lineare (LITI) come passaggio finale

Questo approccio mira a creare un modello finale più robusto e robusto.

3. Benchmark delle prestazioni

Gemma 2 dimostra prestazioni impressionanti in una varietà di benchmark:

Gemma 2 presenta un'architettura riprogettata progettata per prestazioni ed efficienza di inferenza superiori

6. Iniziare con Gemma 2

Per iniziare a utilizzare Gemma 2 nei tuoi progetti, hai le seguenti opzioni:

6.1.Studio sull'intelligenza artificiale di Google

È possibile accedere a Gemma 2 tramite Google AI Studio,Studio sull'intelligenza artificiale di Google.

6.2. Abbracciare il viso

Gemma 2 e il viso che abbraccia Integrazione della libreria Transformers. Ecco come usarlo:

<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

Per gli utenti TensorFlow, Gemma 2 è disponibile tramite 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. Utilizzo avanzato: utilizzare Gemma 2 per creare un sistema RAG locale

Una potente applicazione di Gemma 2 è la creazione di sistemi RAG (retrieval-augmented generation). Creiamo un sistema RAG semplice e completamente nativo utilizzando gli incorporamenti Gemma 2 e Nomic.

Passaggio 1: configurare l'ambiente

Innanzitutto, assicurati di avere installate le librerie necessarie:

pip install langchain ollama nomic chromadb
  • 1

Passaggio 2: indicizzare i documenti

Creare un indicizzatore per elaborare i documenti:

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

Passaggio 3: configurare il sistema RAG

Ora crea il sistema RAG utilizzando 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

Questo sistema RAG utilizza da Gemma 2 a Ollama come modello linguistico e l'incorporamento Nomic per il recupero dei documenti. Ti consente di porre domande basate su documenti indicizzati e fornire risposte contestuali da fonti pertinenti.

Messa a punto di Gemma 2

Per attività o domini specifici, potrebbe essere necessario ottimizzare Gemma 2. Ecco un esempio di base che utilizza la libreria 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

Regola i parametri di formazione in base ai requisiti specifici e alle risorse informatiche.

Considerazioni e limitazioni etiche

Sebbene Gemma 2 offra funzionalità impressionanti, bisogna essere consapevoli dei suoi limiti e considerazioni etiche:

  • pregiudizio : Come tutti i modelli linguistici, Gemma 2 può riflettere pregiudizi presenti nei suoi dati di addestramento. Valutare sempre criticamente i suoi risultati.
  • accuratezza fattuale : Sebbene Gemma 2 sia potente, a volte produce informazioni errate o incoerenti. Si prega di verificare i fatti importanti da fonti affidabili.
  • lunghezza del contesto : La lunghezza del contesto di Gemma 2 è di 8192 token. Per documenti o conversazioni più lunghi, potrebbe essere necessario implementare strategie per gestire il contesto in modo efficace.
  • Risorse informatiche: Soprattutto per i modelli 27B, potrebbero essere necessarie notevoli risorse di calcolo per un'inferenza e una messa a punto efficaci.
  • Uso responsabile: Rispetta le pratiche di Google per un'intelligenza artificiale responsabile e assicurati che l'utilizzo di Gemma 2 sia in linea con i principi etici dell'intelligenza artificiale.

8.Conclusione

Le funzionalità avanzate di Gemma 2, come l'attenzione alla finestra scorrevole, i limiti superiori morbidi e le nuove tecniche di fusione dei modelli, lo rendono uno strumento potente per un'ampia gamma di attività di elaborazione del linguaggio naturale.

Sfruttando Gemma 2 nei tuoi progetti, sia attraverso semplici inferenze, sistemi RAG complessi o modelli ottimizzati specifici per dominio, puoi sfruttare la potenza di SOTA AI mantenendo il controllo dei tuoi dati e processi.

Indirizzo originale:https://www.unite.ai/complete-guide-on-gemma-2-googles-new-open-large-language-model/