AdamW ile dengeli eğitim

PyTorch ile Verimli AI Model Eğitimi

Dennis Lee

Data Engineer, Amazon

Verimli eğitim

 

 

Kursun bölüm konularını gösteren ve eniyileyicileri vurgulayan diyagram.

PyTorch ile Verimli AI Model Eğitimi

Eğitim verimliliği için eniyileyiciler

 

 

Üç eniyileyiciyi gösteren diyagram: AdamW, Adafactor ve 8-bit Adam.

PyTorch ile Verimli AI Model Eğitimi

Eğitim verimliliği için eniyileyiciler

 

 

Üç eniyileyiciyi gösteren diyagram: AdamW, Adafactor ve 8-bit Adam.

PyTorch ile Verimli AI Model Eğitimi

Eğitim verimliliği için eniyileyiciler

 

 

Üç eniyileyiciyi gösteren diyagram: AdamW, Adafactor ve 8-bit Adam.

PyTorch ile Verimli AI Model Eğitimi

Eniyileyici ödünleşimleri

AdamW, Adafactor ve 8-bit Adam için parametre sayısı ile duyarlılık arasındaki ödünleşimleri gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

Eniyileyici ödünleşimleri

AdamW, Adafactor ve 8-bit Adam için parametre sayısı ile duyarlılık arasındaki ödünleşimleri gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

Eniyileyici ödünleşimleri

AdamW, Adafactor ve 8-bit Adam için parametre sayısı ile duyarlılık arasındaki ödünleşimleri gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

Eniyileyici ödünleşimleri

AdamW, Adafactor ve 8-bit Adam için parametre sayısı ile duyarlılık arasındaki ödünleşimleri gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

AdamW nasıl çalışır?

AdamW’nin nasıl çalıştığını gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

AdamW nasıl çalışır?

AdamW’nin nasıl çalıştığını gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

AdamW nasıl çalışır?

AdamW’nin nasıl çalıştığını gösteren diyagram.

  • Gradyanların üstel hareketli ortalamasını (EMA) hesaplayın
PyTorch ile Verimli AI Model Eğitimi

AdamW nasıl çalışır?

AdamW’nin nasıl çalıştığını gösteren diyagram.

  • Gradyanların üstel hareketli ortalamasını (EMA) hesaplayın
  • Kare gradyanların EMA’sını hesaplayın
PyTorch ile Verimli AI Model Eğitimi

AdamW nasıl çalışır?

AdamW’nin nasıl çalıştığını gösteren diyagram.

  • Gradyanların üstel hareketli ortalamasını (EMA) hesaplayın
  • Kare gradyanların EMA’sını hesaplayın
PyTorch ile Verimli AI Model Eğitimi

AdamW nasıl çalışır?

AdamW’nin nasıl çalıştığını gösteren diyagram.

  • Gradyanların üstel hareketli ortalamasını (EMA) hesaplayın
  • Kare gradyanların EMA’sını hesaplayın
PyTorch ile Verimli AI Model Eğitimi

AdamW’nin bellek kullanımı

AdamW hesaplamalarında yer alan nicelikleri gösteren diyagram: parametre gradyanları, gradyanların EMA’sı ve kare gradyanların EMA’sı.

  • Her kare bir parametreyi, her renk bir durumu gösterir
PyTorch ile Verimli AI Model Eğitimi

AdamW’nin bellek kullanımı

AdamW hesaplamalarında yer alan nicelikleri gösteren diyagram: parametre gradyanları, gradyanların EMA’sı ve kare gradyanların EMA’sı.

  • Her kare bir parametreyi, her renk bir durumu gösterir
PyTorch ile Verimli AI Model Eğitimi

AdamW’nin bellek kullanımı

AdamW hesaplamalarında yer alan nicelikleri gösteren diyagram: parametre gradyanları, gradyanların EMA’sı ve kare gradyanların EMA’sı.

  • Her kare bir parametreyi, her renk bir durumu gösterir
  • Parametre başına bellek = 8 bayt = durum başına 4 bayt * 2 durum
  • Toplam bellek = Parametre başına bellek (8 bayt) * Parametre sayısı
PyTorch ile Verimli AI Model Eğitimi

AdamW bellek kullanımını tahmin etme

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-cased", return_dict=True)

num_parameters = sum(p.numel() for p in model.parameters()) print(f"Number of model parameters: {num_parameters:,}")
Number of model parameters: 65,783,042
estimated_memory = num_parameters * 8 / (1024 ** 2)
print(f"Estimated memory usage of AdamW: {estimated_memory:.0f} MB")
Estimated memory usage of AdamW: 502 MB
PyTorch ile Verimli AI Model Eğitimi

Trainer ve Accelerator

Accelerator ve Trainer için özelleştirme olanağı ile kullanım kolaylığı arasındaki ödünleşimi gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

Trainer ile AdamW uygulama

from torch.optim import AdamW

optimizer = AdamW(params=model.parameters())


trainer = Trainer(model=model, args=training_args, train_dataset=train_dataset, eval_dataset=validation_dataset, compute_metrics=compute_metrics, optimizers=(optimizer, lr_scheduler))
trainer.train()
{'epoch': 1.0, 'eval_accuracy': 0.7, 'eval_f1': 0.8}
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile AdamW uygulama

from torch.optim import AdamW

optimizer = AdamW(params=model.parameters())


for batch in train_dataloader: inputs, targets = batch["input_ids"], batch["labels"] outputs = model(inputs, labels=targets) loss = outputs.loss accelerator.backward(loss) optimizer.step() lr_scheduler.step() optimizer.zero_grad() print(f"Loss = {loss}")
Loss = 0.7
PyTorch ile Verimli AI Model Eğitimi

Eniyileyici durumunu inceleme

optimizer_state = optimizer.state.values()
print(optimizer_state)
dict_values([{'step': tensor(3.),

'exp_avg': tensor([[0., 0., 0., ..., 0., 0., 0.], ...]),
'exp_avg_sq': tensor([[0., 0., 0., ..., 0., 0., 0.], ...])}, ...])
PyTorch ile Verimli AI Model Eğitimi

Eniyileyici boyutunu hesaplama

def compute_optimizer_size(optimizer_state):
    total_size_megabytes, total_num_elements = 0, 0

for params in optimizer_state:
for name, tensor in params.items(): tensor = torch.tensor(tensor)
num_elements = tensor.numel()
element_size = tensor.element_size()
total_num_elements += num_elements
total_size_megabytes += num_elements * element_size / (1024 ** 2)
return total_size_megabytes, total_num_elements
PyTorch ile Verimli AI Model Eğitimi

Eniyileyici boyutunu hesaplama

total_size_megabytes, total_num_elements = \
    compute_optimizer_size(trainer.optimizer.state.values())
print(f"Number of optimizer parameters: {total_num_elements:,}")
Number of optimizer parameters: 131,566,188
print(f"Optimizer size: {total_size_megabytes:.0f} MB")
Optimizer size: 502 MB
PyTorch ile Verimli AI Model Eğitimi

Hadi pratik yapalım!

PyTorch ile Verimli AI Model Eğitimi

Preparing Video For Download...