Accelerator ile modelleri değerlendir

PyTorch ile Verimli AI Model Eğitimi

Dennis Lee

Data Engineer, Amazon

Neden modeli değerlendirme moduna alırız?

  • Eğitim modu
    • Dropout: Nöronları sıfıra ayarlar
    • Batch normalization

Dropout ve batch normalization Girdi, gizli ve çıktı katmanları olan çok katmanlı bir sinir ağının diyagramı. Aşırı uyumu önlemek için gizli katmanlarda dropout uygulanır ve her katmanın çıktısı aktivasyondan önce normalize edilir.

PyTorch ile Verimli AI Model Eğitimi

Neden modeli değerlendirme moduna alırız?

  • Eğitim modu
    • Dropout: Nöronları sıfıra ayarlar
    • Batch normalization
  • Değerlendirme modu bu katmanları devre dışı bırakır
  • model.eval() değerlendirme modunu etkinleştirir

Dropout ve batch normalization Girdi, gizli ve çıktı katmanları olan çok katmanlı bir sinir ağının diyagramı. Aşırı uyumu önlemek için gizli katmanlarda dropout uygulanır ve her katmanın çıktısı aktivasyondan önce normalize edilir.

PyTorch ile Verimli AI Model Eğitimi

torch.no_grad() ile gradyanları devre dışı bırakın

  • Eğitimde gradyan hesaplanır
  • torch.no_grad() gradyanları devre dışı bırakır
  • Hem model.eval hem torch.no_grad() çağırın:
model.eval()
with torch.no_grad():
    outputs = model(**inputs)

Geri yayılımda gradyanların hesaplanması Geri yayılım sürecini gösteren bir sinir ağı diyagramı; her katmanda ağırlıkları ayarlamak için gradyanlar hesaplanır. Hata, çıktı katmanından gizli katmanlara geri yayılır ve gradyan inişiyle ağırlıklar güncellenir.

PyTorch ile Verimli AI Model Eğitimi

Bir doğrulama veri kümesi hazırlayın

  • MRPC veri kümesinin doğrulama bölümünü yükleyin
validation_dataset = load_dataset("glue", "mrpc", split="validation")
  • Doğrulama veri kümesini tokenize edin
def encode(examples):
    return tokenizer(examples["sentence1"], 
                      examples["sentence2"],
                      truncation=True,
                      padding="max_length")

validation_dataset = validation_dataset.map(encode, batched=True)
PyTorch ile Verimli AI Model Eğitimi

Bir epokun yaşamı: eğitim ve değerlendirme döngüleri

  • Her epokta eğitim ve doğrulama veri kümeleri üzerinde yineleyin
  • Önce modeli eğitim modunda çalıştırın
  • Ardından modeli değerlendirme modunda çalıştırın ve metrikleri kaydedin
for epoch in range(num_epochs):

model.train() for step, batch in enumerate(train_dataloader): # Perform training step
model.eval() for step, batch in enumerate(eval_dataloader): # Perform evaluation step
# Log evaluation metrics
PyTorch ile Verimli AI Model Eğitimi

Değerlendirme döngüsünün içi

metric = evaluate.load("glue", "mrpc")
model.eval()
for step, batch in enumerate(eval_dataloader):

with torch.no_grad(): outputs = model(**batch) predictions = outputs.logits.argmax(dim=-1)
predictions, references = accelerator.gather_for_metrics((predictions, batch["labels"]))
metric.add_batch(predictions=predictions, references=references)
eval_metric = metric.compute() print(f"Eval metrics: \n{eval_metric}")
Değerlendirme metrikleri: 
{'accuracy': 0.81, 'f1': 0.77}
PyTorch ile Verimli AI Model Eğitimi

Değerlendirme sonrası metrikleri kaydedin

  • Takip araçları: metrikleri kaydeden not defterleri; örnekler TensorBoard ve MLflow
  • log_with: tüm deney takip araçlarını kullanır
  • .init_trackers(): takip araçlarını başlatır
  • .log(): accuracy, f1, epoch değerlerini kaydeder
  • .end_training(): takibi bitirir
accelerator = Accelerator(project_dir=".",
                          log_with="all")

accelerator.init_trackers("my_project")
for epoch in range(num_epochs): # Training loop is here # Evaluation loop is here accelerator.log({
"accuracy": eval_metric["accuracy"], "f1": eval_metric["f1"],
}, step=epoch)
accelerator.end_training()
PyTorch ile Verimli AI Model Eğitimi

Ayo berlatih!

PyTorch ile Verimli AI Model Eğitimi

Preparing Video For Download...