2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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.
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 Studiossa:Google AI Studio – Gemma 2
Lue lehti täältä: Gemma 2:n tekninen raportti
Gemma 2 esittelee useita merkittäviä parannuksia edeltäjäänsä verrattuna:
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.
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ä.
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)
Tämä tekniikka estää logitteja kasvamasta liian suuriksi ilman kovaa katkaisua, jolloin säilytetään enemmän tietoa samalla kun harjoitusprosessi vakautuu.
Jokaista kokoa on kahta tyyliä:
9B-mallissa Gemma 2 käyttää tiedonpoimintatekniikkaa:
Tämä prosessi auttaa pienempää mallia vangitsemaan tehokkaammin suuremman mallin toiminnot.
Gemma 2 käyttää uutta mallien yhdistämistekniikkaa nimeltä Warp, joka yhdistää useita malleja kolmessa vaiheessa:
Tällä lähestymistavalla pyritään luomaan vankempi ja kestävämpi lopullinen malli.
Gemma 2 osoittaa vaikuttavaa suorituskykyä useissa eri vertailuissa:
Gemma 2:ssa on uusittu arkkitehtuuri, joka on suunniteltu ylivoimaiseen suorituskykyyn ja päättelytehokkuuteen
Voit aloittaa Gemma 2:n käytön projekteissasi seuraavilla vaihtoehdoilla:
Gemma 2:ta voi käyttää Google AI Studion kautta,Google Artificial Intelligence Studio.
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)
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)
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.
Varmista ensin, että olet asentanut tarvittavat kirjastot:
pip install langchain ollama nomic chromadb
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()
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"])
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ä.
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")
Säädä koulutusparametreja erityisvaatimusten ja laskentaresurssien perusteella.
Vaikka Gemma 2 tarjoaa vaikuttavia toimintoja, on oltava tietoinen sen rajoituksista ja eettisistä näkökohdista:
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/