Hugging Face ile model ince ayarı

Llama 3 ile İnce Ayar (Fine-Tuning)

Francesca Donadoni

Curriculum Manager, DataCamp

İnce ayar için neler gerekir?

  1. Dil modeli + belirteçleyici (TinyLLama-v0 gibi bir LLama modeli)
  2. Eğitim veri kümesi (Bitext müşteri hizmetleri veri kümesi)
  3. Eğitim argümanları
  4. İnce ayar yapma (TRL içindeki SFTTrainer)
  5. Değerlendirme karşılaştırması veya veri kümesi

Eğitim döngüsü. Eğitim; argümanlara, verilere ve modele ihtiyaç duyar ve ince ayarlı bir model üretir. Değerlendirme, ince ayarlı model ve bir değerlendirme veri kümesiyle yapılır.

Llama 3 ile İnce Ayar (Fine-Tuning)

Auto sınıflarıyla model ve belirteçleyici nasıl yüklenir

model_name="Maykeye/TinyLLama-v0"

model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

tokenizer.pad_token = tokenizer.eos_token
1 https://huggingface.co/docs/transformers/main/en/model_doc/auto
Llama 3 ile İnce Ayar (Fine-Tuning)

TrainingArguments ile eğitim parametrelerini tanımlama

training_arguments = TrainingArguments(

per_device_train_batch_size=1,
learning_rate=2e-3,
max_grad_norm=0.3,
max_steps=200,
... gradient_accumulation_steps=2, save_steps=10,
)
1 https://huggingface.co/docs/transformers/v4.40.1/en/main_classes/trainer#transformers.TrainingArguments
Llama 3 ile İnce Ayar (Fine-Tuning)

SFTTrainer ile eğitimi nasıl kurarız

trainer = SFTTrainer(

model=model, tokenizer=tokenizer,
train_dataset=dataset, dataset_text_field='conversation',
max_seq_length=250,
args=training_arguments
)
Llama 3 ile İnce Ayar (Fine-Tuning)

SFTTrainer ile ince ayar sonuçlarını anlama

trainer.train()
TrainOutput(global_step=200, training_loss=1.9401231002807617,
            metrics={'train_runtime': 142.5501, 
                     'train_samples_per_second': 2.806,
                     'train_steps_per_second': 1.403, 
                     'total_flos': 1461265827840.0, 
                     'train_loss': 1.9401231002807617, 
                     'epoch': 2.0})
Llama 3 ile İnce Ayar (Fine-Tuning)

ROUGE-1 ile eğitilmiş bir modeli nasıl değerlendiririz

  • ROUGE-1: Referans ile üretilen metin arasındaki kelime örtüşme oranı
import evaluate

rouge = evaluate.load('rouge')
predictions = ["hello there", "general kenobi"] references = ["hello there", "master yoda"]
results = rouge.compute(predictions=predictions, references=references) print(results)
{'rouge1': 0.5, 'rouge2': 0.5, 'rougeL': 0.5, 'rougeLsum': 0.5}
1 https://huggingface.co/spaces/evaluate-metric/rouge
Llama 3 ile İnce Ayar (Fine-Tuning)

ROUGE-1 puanı nasıl kullanılır

  1. evaluation_dataset içindeki değerlendirme kümesini kullanın
def generate_predictions_and_reference(dataset):
    predictions = []
    references = []
    for row in dataset:
        inputs = tokenizer.encode(row["instruction"], return_tensors="pt")

outputs = model.generate(inputs)
decoded_outputs = tokenizer.decode(outputs[0, inputs.shape[1]:], skip_special_tokens = True)
references += [row["response"]] predictions += [decoded_outputs] return references, predictions
Llama 3 ile İnce Ayar (Fine-Tuning)

Bir değerlendirme kümesinde ROUGE-1 nasıl çalıştırılır

references, predictions = generate_predictions_and_reference(evaluation_dataset)
rouge = evaluate.load('rouge')
results = rouge.compute(predictions=predictions, references=references)
print(results)
Llama 3 ile İnce Ayar (Fine-Tuning)

İnce ayar vs. ince ayar yok

İnce ayarlı

{'rouge1': 0.22425812699023645,
 'rouge2': 0.039502543246449,
 'rougeL': 0.1501513006868983,
 'rougeLsum': 0.18685597710721613}

İnce ayarsız

{'rouge1': 0.1310928764315105,
 'rouge2': 0.04581654122835097,
 'rougeL': 0.08415351421221628,
 'rougeLsum': 0.1224749866097021}
Llama 3 ile İnce Ayar (Fine-Tuning)

Hadi pratik yapalım!

Llama 3 ile İnce Ayar (Fine-Tuning)

Preparing Video For Download...