Yapay zeka modelleri ve platformları

Gemma 2 Kapsamli Rehberi: Google’ın Yeni Açık Büyük Dil Modeli

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin

Gemma 2 öncülünü temel alarak, gelişmiş performans ve verimlilik sunar ve aynı zamanda araştırma ve pratik uygulamalar için özellikle çekici olan bir dizi yenilikçi özellik sunar. Gemma 2’yi ayıran şey, çok daha büyük özel modellere benzer performans sunabilmesi ancak daha erişilebilir bir pakette tasarlanmasıdır.

Gemma 2’nin teknik özellikleri ve mimarisine daldıkça, tasarımındaki zekâyı giderek daha fazla takdir etmeye başladım. Model, yeni dikkat mekanizmaları ve eğitim stabilitesine yönelik yenilikçi yaklaşımlar da dahil olmak üzere birkaç gelişmiş tekniği birleştirir ve bu da onun dikkat çekici yeteneklerine katkıda bulunur.

Google Open Source LLM Gemma

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

Bu kapsamlı rehberde, Gemma 2’yi derinlemesine inceleyeceğiz, mimarisini, ana özelliklerini ve pratik uygulamalarını ele alacağız. Alanında deneyimli bir AI uygulayıcısı olun veya bu alana yeni giren bir kişi olun, bu makale Gemma 2’nin nasıl çalıştığını ve nasıl kendi projelerinizde gücünden yararlanabileceğinizi anlamak için değerli içgörüler sağlamayı amaçlar.

Gemma 2 Nedir?

Gemma 2, Google’ın en yeni açık kaynaklı büyük dil modelidir ve hafif ancak güçlü olması için tasarlanmıştır. Google’ın Gemini modellerini oluşturmak için kullanılan aynı araştırmaya ve teknolojiye dayanır ve bu da state-of-the-art performansı daha erişilebilir bir pakette sunar. Gemma 2 iki boyutta gelir:

Gemma 2 9B: 9 milyar parametreli bir model
Gemma 2 27B: Daha büyük 27 milyar parametreli bir model

Her boyut iki varyantta mevcuttur:

Temel modeller: Geniş bir metin verisi kümesi üzerinde önceden eğitilmiştir
Talimatla ayarlanmış (IT) modeller: Belirli görevler için daha iyi performans için ince ayarlanmıştır

Modellere Google AI Studio’da erişin: Google AI Studio – Gemma 2

Burada teknik raporu okuyun: Gemma 2 Teknik Raporu

Ana Özellikler ve Geliştirmeler

Gemma 2, selefinden önemli ölçüde gelişmeler sunar:

1. Artan Eğitim Verisi

Modeller önemli ölçüde daha fazla veri üzerinde eğitilmiştir:

Gemma 2 27B: 13 trilyon token üzerinde eğitilmiştir
Gemma 2 9B: 8 trilyon token üzerinde eğitilmiştir

Bu genişletilmiş veri kümesi, büyük ölçüde İngilizce web verileri, kod ve matematikten oluşur ve modellerin gelişmiş performansına ve çok yönlülüğüne katkıda bulunur.

2. Kaydırma Penceresi Dikkati

Gemma 2, dikkat mekanizmaları için yeni bir yaklaşım uygular:

Her diğer katmanda 4096 tokenlik yerel bir bağlam ile kaydırma penceresi dikkati kullanılır
Alternatif katmanlar, tüm 8192 token bağlamı boyunca tam kuadratik global dikkati kullanır

Bu melez yaklaşım, verimliliği uzun vadeli bağımlılıkları yakalama yeteneği ile dengelemeyi hedefler.

3. Yumuşak Sınırlama

Eğitim stabilitesini ve performansı iyileştirmek için Gemma 2, bir yumuşak sınırlama mekanizması sunar:

[kod dili=”PYTHON”]

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

# Dikkat günlüklerine uygulanır
attention_logits = soft_cap(attention_logits, cap=50.0)

# Son katman günlüklerine uygulanır

final_logits = soft_cap(final_logits, cap=30.0)
[/kod]

Bu teknik, günlüklerin aşırı büyümesini önlerken daha fazla bilgiyi korur ve eğitim sürecini stabilize eder.

  1. Gemma 2 9B: 9 milyar parametreli bir model
  2. Gemma 2 27B: Daha büyük 27 milyar parametreli bir model

Her boyut iki varyantta mevcuttur:

  • Temel modeller: Geniş bir metin verisi kümesi üzerinde önceden eğitilmiştir
  • Talimatla ayarlanmış (IT) modeller: Belirli görevler için daha iyi performans için ince ayarlanmıştır

4. Bilgi Distilasyonu

9B modeli için Gemma 2, bilgi distilasyonu tekniklerini kullanır:

  • Önceden eğitim: 9B modeli, ilk eğitim sırasında daha büyük bir öğretmen modelden öğrenir
  • Son eğitim: Hem 9B hem de 27B modelleri, performanslarını iyileştirmek için politikaya dayalı distilasyonu kullanır

Bu süreç, daha küçük modelin daha büyük modellerin yeteneklerini daha etkili bir şekilde yakalamasına yardımcı olur.

5. Model Birleştirme

Gemma 2, üç aşamada birden fazla modeli birleştiren yeni bir model birleştirme tekniği olan Warp kullanır:

  1. Peşışlemeli hareketli ortalama (EMA) durante takviye öğrenimi ince ayar
  2. Küresel lineer enterpolasyon (SLERP) birden fazla politika ince ayarından sonra
  3. Başlangıç lineer enterpolasyonu (LITI) olarak son adım

Bu yaklaşım, daha güçlü ve yetenekli bir son model oluşturmayı hedefler.

Performans Benchmarks

Gemma 2, çeşitli benchmarklarda etkileyici bir performans sergiler:

Gemma 2 on a redesigned architecture, engineered for both exceptional performance and inference efficiency

Gemma 2 on a redesigned architecture, engineered for both exceptional performance and inference efficiency

 

Gemma 2 ile Başlama

Projenizde Gemma 2’yi kullanmaya başlamak için birkaç seçeneğiniz vardır:

1. Google AI Studio

Donanım gereksinimleri olmadan hızlı bir şekilde deneysel çalışmak için Gemma 2’ye Google AI Studio aracılığıyla erişebilirsiniz.

2. Hugging Transformers

Gemma 2, popüler Hugging Face Transformers kütüphanesiyle entegre edilmiştir. İşte nasıl kullanabilirsiniz:

[kod dili=”PYTHON”]
<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

# Model ve tokenleştiriciyi yükle
model_name = "google/gemma-2-27b-it" # veya "google/gemma-2-9b-it" için daha küçük sürüm
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Girişi hazırla
prompt = "Kuantum dolanıklığının basit terimlerle açıklamasını yapın."
inputs = tokenizer(prompt, return_tensors="pt")

# Metin üret
outputs = model.generate(**inputs, max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(response)

[/kod]

3. TensorFlow/Keras

TensorFlow kullanıcıları için Gemma 2, Keras aracılığıyla kullanılabilir:

[kod dili=”PYTHON”]

import tensorflow as tf
from keras_nlp.models import GemmaCausalLM

# Modeli yükle
model = GemmaCausalLM.from_preset("gemma_2b_en")

# Metin üret
prompt = "Kuantum dolanıklığının basit terimlerle açıklamasını yapın."
output = model.generate(prompt, max_length=200)

print(output)

[/kod]

Gelişmiş Kullanım: Gemma 2 ile Yerel Bir RAG Sistemi Oluşturma

Gemma 2’nin güçlü bir uygulaması, bir Alıntı Artırma Üretimi (RAG) sistemi oluşturmaktır. Basit, tam yerel bir RAG sistemi oluşturalım, Gemma 2 ve Nomic gömme kullanarak.

Adım 1: Ortamın Kurulması

İlk olarak, gerekli kütüphanelerin kurulu olduğundan emin olun:

[kod dili=”PYTHON”]

pip install langchain ollama nomic chromadb

[/kod]

Adım 2: Belgelerin Dizinlenmesi

Belgelerinizi işleyecek bir dizinleyici oluşturun:

[kod dili=”PYTHON”]

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

# Kullanım
indexer = Indexer("belgelerinizin/yolu")
vector_store = indexer.index()

[/kod]

Adım 3: RAG Sisteminin Kurulması

Şimdi, Gemma 2 kullanarak RAG sistemini oluşturalım:

[kod dili=”PYTHON”]

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 = """Aşağıdaki parçaları kullanarak soruyu cevaplayın.
Eğer cevap bilmiyorsanız, sadece bilmediğinizi söyleyin, uydurma cevaplar vermeyin.

{context}

Soru: {question}
Cevap: """

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})

# Kullanım
rag_system = RAGSystem(vector_store)
response = rag_system.query("Fransa’nın başkenti nedir?")
print(response["result"])

[/kod]

Bu RAG sistemi, Gemma 2’yi Ollama aracılığıyla dil modeli olarak ve Nomic gömme olarak belge alıntısı için kullanır. Bu, belgelerinizi temel alarak sorularınızı cevaplayabilmenizi sağlar.

Gemma 2’yi İnce Ayarlamak

Belirli görevler veya alanlar için Gemma 2’yi ince ayarlamak isteyebilirsiniz. İşte Hugging Face Transformers kütüphanesini kullanarak temel bir örnek:

[kod dili=”PYTHON”]
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset

# Model ve tokenleştiriciyi yükle
model_name = "google/gemma-2-9b-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Veri kümesini hazırla
dataset = load_dataset("veri_kümeniz")

def tokenize_function(examples):
return tokenizer(examples["metin"], padding="max_length", truncation=True)

tokenized_datasets = dataset.map(tokenize_function, batched=True)

# Eğitim argümanlarını ayarla
training_args = TrainingArguments(
output_dir="./sonuçlar",
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="./günlükler",
)

# Trainer’ı başlat
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["eğitim"],
eval_dataset=tokenized_datasets["test"],
)

# İnce ayarlamayı başlat
trainer.train()

# İnce ayarlanmış modeli kaydet
model.save_pretrained("./ince_ayarlı_gemma2")
tokenizer.save_pretrained("./ince_ayarlı_gemma2")

[/kod]

Eğitim parametrelerini specific gereksinimlerinize ve hesaplamalı kaynaklarınıza göre ayarladığınızdan emin olun.

Etik ve Sınırlamalar

Gemma 2’nin sunduğu etkileyici yeteneklere rağmen, sınırlamaları ve etik endişeleri konusunda bilinçli olmak önemlidir:

  • Önyargı: Tüm dil modelleri gibi Gemma 2 de eğitim verisindeki önyargıları yansıtabilir. Çıktılarını dikkatlice değerlendirin.
  • Gerçeklik Doğruluğu: Yüksek yetenekli olmasına rağmen Gemma 2, bazen yanlış veya tutarsız bilgiler üretebilir. Önemli gerçekleri güvenilir kaynaklardan doğrulayın.
  • Bağlam Uzunluğu: Gemma 2’nin bağlam uzunluğu 8192 tokendir. Daha uzun belgeler veya sohbetler için bağlamı etkili bir şekilde yönetmek için stratejiler uygulamak gerekli olabilir.
  • Hesaplamalı Kaynaklar: Özellikle 27B modeli için, verimli çıkarım ve ince ayar için önemli hesaplamalı kaynaklar gerekebilir.
  • Sorumlu Kullanım: Google’ın Sorumlu AI uygulamalarına uyun ve Gemma 2’nin kullanımınızın etik AI ilkeleriyle uyumlu olduğundan emin olun.

SONUÇ

Gemma 2’nin gelişmiş özellikler, kaydırma penceresi dikkati, yumuşak sınırlama ve yeni model birleştirme teknikleri, doğal dil işleme görevleri için güçlü bir araç haline getirir.

Gemma 2’yi projelerinizde kullanmak, basit çıkarım, karmaşık RAG sistemleri veya belirli alanlar için ince ayarlanmış modeller aracılığıyla, SOTA AI’nin gücünden yararlanmanızı sağlar ve aynı zamanda verilerinizi ve süreçlerinizi kontrol altında tutmanızı sağlar.

Son beş yıldır Makine Öğrenimi ve Derin Öğrenme dünyasına kendimi adamış bulunuyorum. Tutkum ve uzmanlığım, özellikle AI/ML'ye odaklanarak 50'den fazla çeşitli yazılım mühendisliği projesine katkıda bulunmama yol açtı. Süregelen meraklılığım da beni Doğal Dil İşleme alanına yöneltti, bu alana daha da derinlemesine girmeye hevesliyim.