Modele și platforme AI

Ghid complet despre Gemma 2: noul model de limbaj deschis de la Google

mm
Adaugă Unite.AI la sursele tale preferate pe Google

Gemma 2 se bazează pe predecesorul său, oferind performanțe îmbunătățite și eficiență, alături de o suită de caracteristici inovatoare care îl fac deosebit de atractiv atât pentru aplicații de cercetare, cât și pentru cele practice. Ceea ce diferențiază Gemma 2 este capacitatea sa de a oferi performanțe comparabile cu cele ale modelelor proprietare mult mai mari, dar într-un pachet proiectat pentru accesibilitate mai largă și utilizare pe configurații de hardware mai modeste.

Pe măsură ce am explorat specificațiile tehnice și arhitectura Gemma 2, am fost tot mai impresionat de ingeniozitatea proiectării sale. Modelul încorporează mai multe tehnici avansate, inclusiv mecanisme de atenție noi și abordări inovatoare pentru stabilitatea antrenamentului, care contribuie la capacitățile sale remarcabile.

Google Open Source LLM Gemma

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

În acest ghid complet, vom explora Gemma 2 în profunzime, examinând arhitectura, caracteristicile cheie și aplicațiile practice. Indiferent dacă sunteți un practicant experimentat de AI sau un entuziast nou în domeniu, acest articol își propune să ofere perspective valoroase despre modul în care funcționează Gemma 2 și cum puteți valorifica puterea sa în proiectele dvs.

Ce este Gemma 2?

Gemma 2 este cel mai nou model de limbaj deschis de la Google, proiectat să fie ușor și puternic. A fost creat pe baza acelorași cercetări și tehnologii folosite pentru a crea modelele Gemini de la Google, oferind performanțe de ultimă generație într-un pachet mai accesibil. Gemma 2 vine în două dimensiuni:

Gemma 2 9B: Un model cu 9 miliarde de parametri
Gemma 2 27B: Un model mai mare cu 27 de miliarde de parametri

Fiecare dimensiune este disponibilă în două variante:

Modele de bază: Antrenate pe un vast corpus de date text
Modele instruite (IT): Reglate pentru o performanță mai bună pe sarcini specifice

Accesați modelele în Google AI Studio: Google AI Studio – Gemma 2

Citiți raportul tehnic aici: Raport tehnic Gemma 2

Caracteristici cheie și îmbunătățiri

Gemma 2 introduce mai multe avansări semnificative față de predecesorul său:

1. Date de antrenament crescute

Modelele au fost antrenate pe mult mai multe date:

Gemma 2 27B: Antrenat pe 13 trilioane de tokeni
Gemma 2 9B: Antrenat pe 8 trilioane de tokeni

Acest set de date extinse, constând în principal din date web (majoritar în engleză), cod și matematică, contribuie la performanța îmbunătățită și versatilitatea modelelor.

2. Attenție cu fereastră glisantă

Gemma 2 implementează o abordare nouă a mecanismelor de atenție:

Fiecare strat alternativ utilizează o atenție cu fereastră glisantă cu un context local de 4096 de tokeni
Straturile alternative folosesc o atenție globală cuadratică pe întregul context de 8192 de tokeni

Acestă abordare hibridă își propune să echilibreze eficiența cu capacitatea de a captura dependențe pe termen lung în intrare.

3. Încăpere moale

Pentru a îmbunătăți stabilitatea și performanța antrenamentului, Gemma 2 introduce un mecanism de încăpere moale:


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

<p># Aplicat la logit-urile atenției
attention_logits = soft_cap(attention_logits, cap=50.0)</p>

# Aplicat la logit-urile stratului final

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

Această tehnică previne ca logit-urile să crească excesiv de mari fără a fi tăiate, menținând mai multă informație și stabilizând procesul de antrenament.

  1. Gemma 2 9B: Un model cu 9 miliarde de parametri
  2. Gemma 2 27B: Un model mai mare cu 27 de miliarde de parametri

Fiecare dimensiune este disponibilă în două variante:

  • Modele de bază: Antrenate pe un vast corpus de date text
  • Modele instruite (IT): Reglate pentru o performanță mai bună pe sarcini specifice

4. Distilare a cunoștințelor

Pentru modelul 9B, Gemma 2 utilizează tehnici de distilare a cunoștințelor:

  • Antrenament prealabil: Modelul 9B învață de la un model mai mare în timpul antrenamentului inițial
  • Post-antrenament: Atât modelul 9B, cât și modelul 27B utilizează distilarea politicilor pentru a-și rafina performanța

Acest proces ajută modelul mai mic să capteze capacitățile modelelor mai mari într-un mod mai eficient.

5. Fuziunea modelelor

Gemma 2 utilizează o tehnică de fuziune a modelelor numită Warp, care combină mai multe modele în trei etape:

  1. Medie mobilă exponențială (EMA) în timpul reglării fine cu învățare prin întărire
  2. Interpolare liniară sferică (SLERP) după reglarea fine a mai multor politici
  3. Interpolare liniară către initializare (LITI) ca etapă finală

Această abordare își propune să creeze un model final mai robust și mai capabil.

Benchmarks de performanță

Gemma 2 demonstrează o performanță impresionantă pe diverse benchmark-uri:

Gemma 2 pe o arhitectură redesenată, proiectată atât pentru performanță excepțională, cât și pentru eficiență la inferență

Gemma 2 pe o arhitectură redesenată, proiectată atât pentru performanță excepțională, cât și pentru eficiență la inferență

 

Începerea cu Gemma 2

Pentru a începe să utilizați Gemma 2 în proiectele dvs., aveți mai multe opțiuni:

1. Google AI Studio

Pentru experimentarea rapidă fără cerințe de hardware, puteți accesa Gemma 2 prin Google AI Studio.

2. Hugging Transformers

Gemma 2 este integrat cu biblioteca populară Hugging Face Transformers. Iată cum puteți să o utilizați:

&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># Încărcați modelul și tokenizatorul
model_name = &quot;google/gemma-2-27b-it&quot; # sau &quot;google/gemma-2-9b-it&quot; pentru versiunea mai mică
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)</p>

<p># Pregătiți intrarea
prompt = &quot;Explicați conceptul de încâlnire cuantică în termeni simpli.&quot;
inputs = tokenizer(prompt, return_tensors=&quot;pt&quot;)</p>

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

print(response)

3. TensorFlow/Keras

Pentru utilizatorii TensorFlow, Gemma 2 este disponibilă prin Keras:


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

<p># Încărcați modelul
model = GemmaCausalLM.from_preset(&quot;gemma_2b_en&quot;)</p>

<p># Generați text
prompt = &quot;Explicați conceptul de încâlnire cuantică în termeni simpli.&quot;
output = model.generate(prompt, max_length=200)</p>

print(output)

Utilizare avansată: Construirea unui sistem RAG local cu Gemma 2

O aplicație puternică a Gemma 2 este în construirea unui sistem de Generare Augmentată cu Recuperare (RAG). Să creăm un sistem RAG local simplu, utilizând Gemma 2 și încorporări Nomic.

Etapa 1: Configurarea mediului

Mai întâi, asigurați-vă că aveți bibliotecile necesare instalate:


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

Etapa 2: Indexarea documentelor

Creați un indexator pentru a procesa documentele dvs.:


<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># Utilizare
indexer = Indexer(&quot;path/to/your/documents&quot;)
vector_store = indexer.index()</p>

Etapa 3: Configurarea sistemului RAG

Acum, să creăm sistemul RAG, utilizând 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;Utilizați următoarele fragmente de context pentru a răspunde la întrebarea de la sfârșit.
Dacă nu știți răspunsul, spuneți că nu știți, nu încercați să inventați un răspuns.</p>

{context}

<p>Întrebare: {question}
Răspuns: &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># Utilizare
rag_system = RAGSystem(vector_store)
response = rag_system.query(&quot;Care este capitala Franței?&quot;)
print(response[&quot;result&quot;])</p>

Acest sistem RAG utilizează Gemma 2 prin Ollama pentru modelul de limbaj și încorporări Nomic pentru recuperarea documentelor. Permite să puneți întrebări pe baza documentelor indexate, oferind răspunsuri cu context din sursele relevante.

Reglarea fină a Gemma 2

Pentru sarcini sau domenii specifice, este posibil să doriți să reglați fin Gemma 2. Iată un exemplu de bază, utilizând biblioteca Hugging Face Transformers:

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

<p># Încărcați modelul și tokenizatorul
model_name = &quot;google/gemma-2-9b-it&quot;
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)</p>

<p># Pregătiți setul de date
dataset = load_dataset(&quot;your_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># Setări de antrenament
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># Inițializați Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets[&quot;train&quot;],
eval_dataset=tokenized_datasets[&quot;test&quot;],
)</p>

# Începeți reglarea fină
trainer.train()

<p># Salvați modelul reglat fin
model.save_pretrained(&quot;./fine_tuned_gemma2&quot;)
tokenizer.save_pretrained(&quot;./fine_tuned_gemma2&quot;)</p>

Rețineți să ajustați parametrii de antrenament în funcție de cerințele și resursele dvs. specifice.

Considerații etice și limitări

Deși Gemma 2 oferă capacități impresionante, este crucial să fiți conștienți de limitările și considerațiile etice:

  • Purtător de cuvânt: Ca și toate modelele de limbaj, Gemma 2 poate reflecta prejudecățile prezente în datele sale de antrenament. Evaluati întotdeauna critic ieșirile sale.
  • Acuratețe factuală: Deși foarte capabil, Gemma 2 poate genera informații incorecte sau inconsistente. Verificați faptele importante din surse de încredere.
  • Lungimea contextului: Gemma 2 are o lungime a contextului de 8192 de tokeni. Pentru documente sau conversații mai lungi, puteți fi nevoiți să implementați strategii pentru a gestiona eficient contextul.
  • Resurse computaționale: În special pentru modelul 27B, pot fi necesare resurse computaționale semnificative pentru inferență și reglare fină eficientă.
  • Utilizare responsabilă: Respectați practicile de AI responsabilă de la Google și asigurați-vă că utilizarea dvs. a Gemma 2 se aliniază cu principiile etice de AI.

Concluzie

Caracteristicile avansate ale Gemma 2, cum ar fi atenția cu fereastră glisantă, încăperea moale și tehnici de fuziune a modelelor noi, o fac o unealtă puternică pentru o gamă largă de sarcini de procesare a limbajului natural.

Prin valorificarea Gemma 2 în proiectele dvs., indiferent dacă este vorba de inferență simplă, sisteme RAG complexe sau modele reglate fin pentru domenii specifice, puteți profita de puterea AI de ultimă generație, menținând controlul asupra datelor și proceselor dvs.

Am petrecut ultimii cinci ani scufundându-mă în lumea fascinantă a Machine Learning și Deep Learning. Pasinea și expertiza mea m-au condus să contribui la peste 50 de proiecte diverse de inginerie software, cu un focus deosebit pe AI/ML. Curiozitatea mea în continuare m-a atras și spre Natural Language Processing, un domeniu pe care sunt dornic să îl explorez mai departe.