Trainer ile ince ayar yapın

PyTorch ile Verimli AI Model Eğitimi

Dennis Lee

Data Engineer, Amazon

Veri hazırlığı

 

Model çoğaltma ve veri bölmeyi gösteren dağıtık eğitim diyagramı.

PyTorch ile Verimli AI Model Eğitimi

Dağıtık eğitim

 

 

Ders konularını gösteren akış şeması: veri hazırlığı, dağıtık eğitim, verimli eğitim ve optimize ediciler.

PyTorch ile Verimli AI Model Eğitimi

Trainer ve Accelerator

Accelerator ve Trainer için kullanım kolaylığı ve özelleştirme yeteneği karşılaştırma grafiği.

PyTorch ile Verimli AI Model Eğitimi

Trainer ve Accelerator

Accelerator ve Trainer için kullanım kolaylığı ve özelleştirme yeteneği karşılaştırma grafiği.

PyTorch ile Verimli AI Model Eğitimi

Trainer ile eğitimi turboşarj edin

  • Trainer kütüphanesi

    from transformers import Trainer
    
  • Modeli her aygıtta paralel çalıştırın

  • Montaj hattı gibi, eğitimi hızlandırın
  • Girdileri gözden geçirin: veri seti, model, metrikler
  • E-ticaret için duygu analizi geliştirin

Paralel işlemeyi betimleyen montaj hattında araba üretimi görseli.

PyTorch ile Verimli AI Model Eğitimi

Ürün yorumlarında duygu veri seti

print(dataset)
DatasetDict({
    train: Dataset({
        features: ['Text', 'Label'],
        num_rows: 1000
    }), ...})
print(f'"{dataset["train"]["Text"][0]}": {dataset["train"]["Label"][0]}')
"I love this product!": positive
PyTorch ile Verimli AI Model Eğitimi

Etiketleri tamsayıya dönüştürme

def map_labels(example):
    if example["Label"] == "negative":
        return {"labels": 0}

else: return {"labels": 1} dataset = dataset.map(map_labels)
print(f'First label: {dataset["train"]["labels"][0]}')
First label: 1
PyTorch ile Verimli AI Model Eğitimi

Belirteçleyici ve modeli tanımlama

  • Önceden eğitilmiş model ve belirteçleyiciyi yükleyin:
model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased", 
                                                           num_labels=2)

tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased")
  • text alanına belirteçleyici uygulayın:
def encode(examples):

return tokenizer(examples["Text"], padding="max_length", truncation=True, return_tensors="pt")
dataset = dataset.map(encode, batched=True)
print(f'The first tokenized review is {dataset["train"]["input_ids"][0]}.')
The first tokenized review is [101, 1045, 2293, 2023, 4031, 999, 102].
PyTorch ile Verimli AI Model Eğitimi

Değerlendirme metriklerini tanımlama

import evaluate


def compute_metrics(eval_predictions):
load_accuracy = evaluate.load("accuracy") load_f1 = evaluate.load("f1")
logits, labels = eval_predictions
predictions = np.argmax(logits, axis=-1)
accuracy = load_accuracy.compute(predictions=predictions, references=labels)[ "accuracy" ]
f1 = load_f1.compute(predictions=predictions, references=labels)["f1"]
return {"accuracy": accuracy, "f1": f1}
PyTorch ile Verimli AI Model Eğitimi

Eğitim argümanları

  • output_dir: Modelin kaydedileceği yer
  • Hiperparametreleri belirtin (örn. learning_rate ve weight_decay)
  • save_strategy: Her epoch sonrası kaydet
  • evaluation_strategy: Her epoch sonrası değerlendir
from transformers import (
    TrainingArguments)

training_args = TrainingArguments(
    output_dir="output_folder",

learning_rate=2e-5, per_device_train_batch_size=16, per_device_eval_batch_size=16, num_train_epochs=2, weight_decay=0.01,
save_strategy="epoch", evaluation_strategy="epoch", )
PyTorch ile Verimli AI Model Eğitimi

Trainer’ı ayarlama

from transformers import Trainer

trainer = Trainer(model=model,

args=training_args,
train_dataset=dataset["train"], eval_dataset=dataset["validation"],
compute_metrics=compute_metrics)
trainer.train()
{'epoch': 1.0, 'eval_loss': 0.79, 'eval_accuracy': 0.00, 'eval_f1': 0.00}
{'epoch': 2.0, 'eval_loss': 0.65, 'eval_accuracy': 0.11, 'eval_f1': 0.15}
print(trainer.args.device)
cpu
PyTorch ile Verimli AI Model Eğitimi

E-ticaret için duygu analizi çalıştırma

sample_review = "This product is amazing!"

input_ids = tokenizer.encode(sample_review, return_tensors='pt') print(f"Tokenized review: {input_ids}")
Tokenized review: tensor([[ 101, 2023, 4031, 2003, 6429,  999,  102 ]])
PyTorch ile Verimli AI Model Eğitimi

E-ticaret için duygu analizi çalıştırma

output = model(input_ids)
print(f"Output logits: {output.logits}")
Output logits: tensor([[ -0.0538, 0.1300 ]])
predicted_label = torch.argmax(output.logits, dim=1).item()
print(f"Predicted label: {predicted_label}")
Predicted label: 1
sentiment = "Negative" if predicted_label == 0 else "Positive"
print(f'The sentiment of the product review is "{sentiment}."')
The sentiment of the product review is "Positive."
PyTorch ile Verimli AI Model Eğitimi

Trainer ile kontrol noktaları

  • En son kontrol noktasından devam edin; filme ara vermek gibi
trainer.train(resume_from_checkpoint=True)
{'epoch': 3.0, 'eval_loss': 0.29, 'eval_accuracy': 0.37, 'eval_f1': 0.51}
{'epoch': 4.0, 'eval_loss': 0.23, 'eval_accuracy': 0.46, 'eval_f1': 0.58}
  • Çıkış dizininde kaydedilmiş belirli bir kontrol noktasından devam edin
trainer.train(resume_from_checkpoint="model/checkpoint-1000")
PyTorch ile Verimli AI Model Eğitimi

Ayo berlatih!

PyTorch ile Verimli AI Model Eğitimi

Preparing Video For Download...