LLaMA'yı fine-tune etmek için genel adımlar aşağıda verilmiştir:
- Gerekli kütüphaneleri kurun: Hugging Face tarafından geliştirilen
transformers
kütüphanesini kurun. Bu kütüphane, LLaMA ve diğer transformer tabanlı modellere basit bir arayüz sağlar.pip install transformers
komutunu kullanarak kurabilirsiniz. - Önceden eğitilmiş LLaMA modelini yükleyin:
transformers
kütüphanesini kullanarak önceden eğitilmiş LLaMA modelini yükleyin. Bunu,LlamaForCausalLM
sınıfını içe aktararak vefrom_pretrained
metodunu kullanarak yapabilirsiniz. - Veri setinizi hazırlayın: LLaMA'yı fine-tune etmek istediğiniz görevle ilgili bir veri seti hazırlayın. Veri seti,
transformers
kütüphanesinin kullanabileceği bir formatta olmalıdır, örneğin pandas DataFrame veyadatasets
kütüphanesinden bir veri seti nesnesi. - Özel bir veri seti sınıfı oluşturun: Veri setinizi yükleyen ve LLaMA tarafından kullanılabilecek bir formatta önceden işleyen özel bir veri seti sınıfı oluşturun.
__getitem__
ve__len__
metotlarını uygulamanız gerekir. - Modeli fine-tune edin:
transformers
kütüphanesinden birTrainer
nesnesi oluşturun ve önceden eğitilmiş LLaMA modelini, özel veri seti sınıfınızı ve eğitim argümanlarını geçirin. Ardından, modeli fine-tune etmek içintrain
metodunu çağırın. - Modeli değerlendirin: Fine-tune edilmiş modeli bir doğrulama setinde değerlendirerek performansını ölçün.
Aşağıda, işe başlamanıza yardımcı olacak örnek bir kod verilmiştir:
import pandas as pd
import torch
from transformers import LlamaForCausalLM, LlamaTokenizer
from sklearn.model_selection import train_test_split
# Önceden eğitilmiş LLaMA modelini ve tokenizer'ı yükleyin
model_name = "meta-llama/llama-7b-hf"
tokenizer = LlamaTokenizer.from_pretrained(model_name)
model = LlamaForCausalLM.from_pretrained(model_name)
# Veri setinizi yükleyin
df = pd.read_csv("verileriniz.csv")
# Verileri eğitim ve doğrulama setlerine ayırın
train_text, val_text, train_labels, val_labels = train_test_split(df["metin"], df["etiket"], test_size=0.2, random_state=42)
# Özel bir veri seti sınıfı oluşturun
class VeriSeti(torch.utils.data.Dataset):
def __init__(self, metin, etiket, tokenizer):
self.metin = metin
self.etiket = etiket
self.tokenizer = tokenizer
def __getitem__(self, idx):
metin = self.metin.iloc[idx]
etiket = self.etiket.iloc[idx]
encoding = self.tokenizer.encode_plus(
metin,
max_length=512,
padding="max_length",
truncation=True,
return_attention_mask=True,
return_tensors="pt",
)
return {
"input_ids": encoding["input_ids"].flatten(),
"attention_mask": encoding["attention_mask"].flatten(),
"etiket": torch.tensor(etiket),
}
def __len__(self):
return len(self.metin)
# Veri seti nesneleri oluşturun
train_dataset = VeriSeti(train_text, train_labels, tokenizer)
val_dataset = VeriSeti(val_text, val_labels, tokenizer)
# Bir Trainer nesnesi oluşturun
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir="./sonuçlar",
num_train_epochs=3,
per_device_train_batch_size=16,
per_device_eval_batch_size=64,
warmup_steps=500,
weight_decay=0.01,
logging_dir="./loglar",
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset,
)
# Modeli fine-tune edin
trainer.train()
Bu kod, sadece bir başlangıç noktasıdır ve özel kullanım durumunuza göre değiştirmeniz gerekecektir. Ayrıca, en iyi sonuçları elde etmek için hiperparametreleri ve eğitim yapılandırmasını ayarlamanız gerekecektir.