Teknologian jakaminen

Gemma2 - Täydellinen sovellusopas Googlen uuteen avoimen lähdekoodin laajamittaiseen kielimalliin

2024-07-12

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

0 Esipuhe

Gemma 2 Edeltäjänsä pohjalta se tarjoaa parempaa suorituskykyä ja tehokkuutta sekä useita innovatiivisia ominaisuuksia, mikä tekee siitä erityisen houkuttelevan sekä tutkimukseen että käytännön sovelluksiin. Gemma 2:n erottaa muista se, että sen suorituskyky on verrattavissa suurempiin patentoituihin malleihin, muttaohjelmistopakettiSuunniteltu laajempaan käytettävyyteen ja käytettäväksi vaatimattommissa laitteistoasennuksissa.

Kun tutkin Gemma 2:n teknisiä eritelmiä ja arkkitehtuuria, olen yhä enemmän vaikuttunut sen suunnittelun hienostuneisuudesta.Malli sisältää useita kehittyneitä tekniikoita, mukaan lukien uusiahuomiomekanismija innovatiiviset harjoittelun vakausmenetelmät, jotka kaikki edistävät sen poikkeuksellista suorituskykyä.

Tässä kattavassa oppaassa Gemma 2:ta tutkitaan perusteellisesti, tarkastellaan sen arkkitehtuuria, tärkeimpiä ominaisuuksia ja käytännön sovelluksia. Olitpa kokenut tekoälyn harjoittaja tai innostunut alan aloittelija, tämän artikkelin tarkoituksena on tarjota arvokkaita näkemyksiä siitä, miten Gemma 2 toimii ja kuinka voit hyödyntää sen ominaisuuksia omissa projekteissasi.

1. Mikä on Gemma 2?

Gemma 2 on Googlen uusin avoimen lähdekoodin laajamittainenkielimalli , hienosti suunniteltu mutta tehokas. Se perustuu samaan tutkimukseen ja teknologiaan, jota käytettiin Google Gemini -mallien luomiseen, ja se tarjoaa huippuluokan suorituskyvyn helpommin saatavilla olevassa paketissa. Gemma 2 on saatavana kahdessa koossa:

Gemma 2 9B: 9 miljardin parametrin malli
Gemma 2 27B: Suurempi 27 miljardin parametrin malli

Jokaista kokoa on kahta tyyliä:

perusmalli: Esikoulutus suurille tekstidatamäärille
Instruction Tuning (IT) -malli: Hienosäädetty suorituskyvyn parantamiseksi tietyissä tehtävissä

Käytä malleja Google AI StudiossaGoogle AI Studio – Gemma 2
Lue lehti täältä: Gemma 2:n tekninen raportti

2. Pääominaisuudet ja parannukset

Gemma 2 esittelee useita merkittäviä parannuksia edeltäjäänsä verrattuna:

2.1. Lisää harjoitustiedot

Nämä mallit on koulutettu lisäämään tietoja:

Gemma 2 27B: Harjoittelun jälkeen 13 biljoonalla rahakkeella
Gemma 2 9B: Harjoittelun jälkeen 8 biljoonalla rahakkeella

Tämä laajennettu tietojoukko koostuu pääasiassa verkkotiedoista (useimmiten englanniksi), koodista ja matematiikasta, mikä auttaa parantamaan malliesi suorituskykyä ja monipuolisuutta.

2.2 Liukuikkuna huomio

Gemma 2 toteuttaa uuden huomiomekanismin menetelmän:

Joka toinen kerros käyttää liukuvan ikkunan huomiomekanismia, ja paikallinen konteksti on 4096 merkkiä.
Vaihtoehtoinen kerros ottaa käyttöön täysin neliöllisen globaalin huomiomekanismin koko 8192-merkkikontekstille.

Tämän hybridilähestymistavan tavoitteena on tasapainottaa tehokkuus ja mahdollisuus siepata pitkän kantaman riippuvuuksia syötteestä.

2.3 Pehmeä korkki

Harjoittelun vakauden ja suorituskyvyn parantamiseksi Gemma 2 esittelee pehmeän ylärajamekanismin:

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

Tämä tekniikka estää logitteja kasvamasta liian suuriksi ilman kovaa katkaisua, jolloin säilytetään enemmän tietoa samalla kun harjoitusprosessi vakautuu.

  1. Gemma 2 9B: 9 miljardin parametrin malli
  2. Gemma 2 27B: Suurempi 27 miljardin parametrin malli

Jokaista kokoa on kahta tyyliä:

  • Perusmalli: valmiiksi koulutettu suuriin tekstitietomääriin
  • Instruction Tuning (IT) -malli: hienosäädetty suorituskyvyn parantamiseksi tietyissä tehtävissä

2.4 Tiedon tislaus

9B-mallissa Gemma 2 käyttää tiedonpoimintatekniikkaa:

  • Esikoulutus: 9B-malli oppii suuremmasta opettajamallista peruskoulutuksen aikana
  • Harjoittelun jälkeen: Sekä 9B- että 27B-mallit käyttävät online-käytäntöjen tislausta suorituskyvyn parantamiseksi

Tämä prosessi auttaa pienempää mallia vangitsemaan tehokkaammin suuremman mallin toiminnot.

2.5 Mallin yhdistäminen

Gemma 2 käyttää uutta mallien yhdistämistekniikkaa nimeltä Warp, joka yhdistää useita malleja kolmessa vaiheessa:

  1. Eksponentiaalinen liikkuva keskiarvo (EMA) vahvistuksen oppimisen hienosäädön aikana
  2. Pallomainen lineaarinen interpolointi (SLERP) hienosäädön jälkeen useilla strategioilla
  3. Lineaarinen interpoloinnin alustus (LITI) viimeisenä vaiheena

Tällä lähestymistavalla pyritään luomaan vankempi ja kestävämpi lopullinen malli.

3. Suorituskyvyn vertailuarvot

Gemma 2 osoittaa vaikuttavaa suorituskykyä useissa eri vertailuissa:

Gemma 2:ssa on uusittu arkkitehtuuri, joka on suunniteltu ylivoimaiseen suorituskykyyn ja päättelytehokkuuteen

6. Gemma 2:n käytön aloittaminen

Voit aloittaa Gemma 2:n käytön projekteissasi seuraavilla vaihtoehdoilla:

6.1 Google Artificial Intelligence Studio

Gemma 2:ta voi käyttää Google AI Studion kautta,Google Artificial Intelligence Studio.

6.2. Halaavat kasvot

Gemma 2 ja Hugging Face Transformers-kirjaston integrointi. Käytä sitä seuraavasti:

<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

TensorFlow-käyttäjille Gemma 2 on saatavilla Kerasin kautta:

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. Kehittynyt käyttö: Käytä Gemma 2:ta paikallisen RAG-järjestelmän rakentamiseen

Gemma 2:n tehokas sovellus on RAG (retrieval-augmented generation) -järjestelmien rakentaminen. Luodaan yksinkertainen, täysin natiivi RAG-järjestelmä käyttämällä Gemma 2- ja Nomic-upotuksia.

Vaihe 1: Määritä ympäristö

Varmista ensin, että olet asentanut tarvittavat kirjastot:

pip install langchain ollama nomic chromadb
  • 1

Vaihe 2: Indeksoi asiakirjat

Luo indeksointityökalu asiakirjojen käsittelemiseksi:

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

Vaihe 3: Asenna RAG-järjestelmä

Luo nyt RAG-järjestelmä Gemma 2:lla:

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

Tämä RAG-järjestelmä käyttää Gemma 2 to Ollama -kielimallia ja Nomic-upotusta asiakirjojen hakuun. Sen avulla voit esittää kysymyksiä indeksoitujen asiakirjojen perusteella ja tarjota asiayhteyteen liittyviä vastauksia asiaankuuluvista lähteistä.

Gemma 2:n hienosäätö

Tiettyjä tehtäviä tai verkkotunnuksia varten saatat joutua hienosäätämään Gemma 2:ta. Tässä on perusesimerkki Hugging Face Transformers -kirjaston käyttämisestä:

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

Säädä koulutusparametreja erityisvaatimusten ja laskentaresurssien perusteella.

Eettiset näkökohdat ja rajoitukset

Vaikka Gemma 2 tarjoaa vaikuttavia toimintoja, on oltava tietoinen sen rajoituksista ja eettisistä näkökohdista:

  • puolueellisuus : Kuten kaikki kielimallit, Gemma 2 saattaa heijastaa harjoitustiedoissa olevia harhoja. Arvioi sen tuotto aina kriittisesti.
  • tosiasioiden tarkkuus : Vaikka Gemma 2 on tehokas, se tuottaa joskus virheellistä tai epäjohdonmukaista tietoa. Tarkista tärkeät tosiasiat luotettavista lähteistä.
  • kontekstin pituus : Gemma 2:n kontekstin pituus on 8192 merkkiä. Pidempiä asiakirjoja tai keskusteluja varten saatat joutua toteuttamaan strategioita kontekstin tehokkaaseen hallintaan.
  • Laskentaresurssit: Erityisesti 27B-malleissa voidaan vaatia merkittäviä laskentaresursseja tehokkaaseen päättelyyn ja hienosäätöön.
  • Vastuullinen käyttö: Noudata Googlen vastuullisen tekoälyn käytäntöjä ja varmista, että Gemma 2:n käyttö on eettisten tekoälyperiaatteiden mukaista.

8. Johtopäätös

Gemma 2:n edistyneet ominaisuudet, kuten liukuvan ikkunan huomioiminen, pehmeät ylärajat ja uudet mallien yhdistämistekniikat, tekevät siitä tehokkaan työkalun monenlaisiin luonnollisen kielen käsittelytehtäviin.

Hyödyntämällä Gemma 2:ta projekteissasi, joko yksinkertaisten päätelmien, monimutkaisten RAG-järjestelmien tai toimialuekohtaisten hienosäädettyjen mallien avulla, voit hyödyntää SOTA AI:n tehoa säilyttäen samalla tietosi ja prosessisi hallinnan.

Alkuperäinen osoite:https://www.unite.ai/complete-guide-on-gemma-2-googles-new-open-large-language-model/