Gradyan biriktirme

PyTorch ile Verimli AI Model Eğitimi

Dennis Lee

Data Engineer, Amazon

Dağıtık eğitim

 

 

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

PyTorch ile Verimli AI Model Eğitimi

Verimli eğitim

 

 

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

PyTorch ile Verimli AI Model Eğitimi

Eğitim verimliliğini artırma

 

 

Bellek verimliliği, iletişim verimliliği ve hesaplama verimliliğini temsil eden simgeler.

PyTorch ile Verimli AI Model Eğitimi

Eğitim verimliliğini artırma

 

 

Bellek verimliliği, iletişim verimliliği ve hesaplama verimliliğini temsil eden simgeler.

PyTorch ile Verimli AI Model Eğitimi

Eğitim verimliliğini artırma

 

 

Bellek verimliliği, iletişim verimliliği ve hesaplama verimliliğini temsil eden simgeler.

PyTorch ile Verimli AI Model Eğitimi

Gradyan biriktirme bellek verimliliğini artırır

 

 

Bellek verimliliği, iletişim verimliliği ve hesaplama verimliliğini temsil eden simgeler.

PyTorch ile Verimli AI Model Eğitimi

Büyük yığınların sorunu

  • Büyük yığınlar: Daha sağlam gradyan tahminleri, daha hızlı öğrenme
  • GPU belleği yığın boyutlarını sınırlar

 

 

Büyük yığınların bellek taşması hatalarına yol açabildiğini, küçük yığınların ise eğitimi başarıyla tamamlamaya yardımcı olduğunu gösteren diyagram.

PyTorch ile Verimli AI Model Eğitimi

Gradyan biriktirme nasıl çalışır?

Büyük bir yığının daha küçük yığınlara bölündüğünü gösteren diyagram.

  • Gradyan biriktirme: Küçük yığınlar üzerinde gradyanları topla
  • Modeli etkin biçimde büyük yığınla eğit
  • Gradyanlar toplandıktan sonra parametreleri güncelle

Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch, Accelerator ve Trainer

PyTorch, Accelerator ve Trainer için kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

PyTorch, Accelerator ve Trainer

PyTorch, Accelerator ve Trainer için kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

PyTorch, Accelerator ve Trainer

PyTorch, Accelerator ve Trainer için kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

PyTorch ile gradyan biriktirme

for index, batch in enumerate(dataloader):
    inputs, targets = (batch["input_ids"], 
                       batch["labels"])
    inputs, targets = (inputs.to(device), 
                       targets.to(device))









Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch ile gradyan biriktirme

for index, batch in enumerate(dataloader):
    inputs, targets = (batch["input_ids"], 
                       batch["labels"])
    inputs, targets = (inputs.to(device), 
                       targets.to(device))
    outputs = model(inputs, labels=targets)
    loss = outputs.loss







Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch ile gradyan biriktirme

for index, batch in enumerate(dataloader):
    inputs, targets = (batch["input_ids"], 
                       batch["labels"])
    inputs, targets = (inputs.to(device), 
                       targets.to(device))
    outputs = model(inputs, labels=targets)
    loss = outputs.loss
    loss = loss / gradient_accumulation_steps







Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch ile gradyan biriktirme

for index, batch in enumerate(dataloader):
    inputs, targets = (batch["input_ids"], 
                       batch["labels"])
    inputs, targets = (inputs.to(device), 
                       targets.to(device))
    outputs = model(inputs, labels=targets)
    loss = outputs.loss
    loss = loss / gradient_accumulation_steps
    loss.backward()







Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch ile gradyan biriktirme

for index, batch in enumerate(dataloader):
    inputs, targets = (batch["input_ids"], 
                       batch["labels"])
    inputs, targets = (inputs.to(device), 
                       targets.to(device))
    outputs = model(inputs, labels=targets)
    loss = outputs.loss
    loss = loss / gradient_accumulation_steps
    loss.backward()
    if ((index + 1) 
        % gradient_accumulation_steps == 0):





Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch ile gradyan biriktirme

for index, batch in enumerate(dataloader):
    inputs, targets = (batch["input_ids"], 
                       batch["labels"])
    inputs, targets = (inputs.to(device), 
                       targets.to(device))
    outputs = model(inputs, labels=targets)
    loss = outputs.loss
    loss = loss / gradient_accumulation_steps
    loss.backward()
    if ((index + 1) 
        % gradient_accumulation_steps == 0):
        optimizer.step()
        lr_scheduler.step()
        optimizer.zero_grad()

Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

PyTorch’tan Accelerator ve Trainer’a

PyTorch’tan Accelerator ve Trainer’a kadar kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

PyTorch’tan Accelerator ve Trainer’a

PyTorch, Accelerator ve Trainer için kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan biriktirme

accelerator = \
    Accelerator(gradient_accumulation_steps=2)

for index, batch in enumerate(dataloader): inputs, targets = (batch["input_ids"], batch["labels"])

Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan biriktirme

accelerator = \
    Accelerator(gradient_accumulation_steps=2)

for index, batch in enumerate(dataloader):

        inputs, targets = (batch["input_ids"],
                           batch["labels"])
        outputs = model(inputs, 
                        labels=targets)
        loss = outputs.loss





Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan biriktirme

accelerator = \
    Accelerator(gradient_accumulation_steps=2)

for index, batch in enumerate(dataloader):
    with accelerator.accumulate(model):
        inputs, targets = (batch["input_ids"],
                           batch["labels"])
        outputs = model(inputs, 
                        labels=targets)
        loss = outputs.loss




Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan biriktirme

accelerator = \
    Accelerator(gradient_accumulation_steps=2)

for index, batch in enumerate(dataloader):
    with accelerator.accumulate(model):
        inputs, targets = (batch["input_ids"],
                           batch["labels"])
        outputs = model(inputs, 
                        labels=targets)
        loss = outputs.loss
        accelerator.backward(loss)



Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan biriktirme

accelerator = \
    Accelerator(gradient_accumulation_steps=2)

for index, batch in enumerate(dataloader):
    with accelerator.accumulate(model):
        inputs, targets = (batch["input_ids"],
                           batch["labels"])
        outputs = model(inputs, 
                        labels=targets)
        loss = outputs.loss
        accelerator.backward(loss)



Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan biriktirme

accelerator = \
    Accelerator(gradient_accumulation_steps=2)

for index, batch in enumerate(dataloader):
    with accelerator.accumulate(model):
        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()

Birden çok yığından gelen gradyanların toplamı olarak gradyan biriktirmeyi betimleyen diyagram.

PyTorch ile Verimli AI Model Eğitimi

Accelerator’dan Trainer’a

PyTorch, Accelerator ve Trainer için kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

Accelerator’dan Trainer’a

PyTorch, Accelerator ve Trainer için kullanım kolaylığı ile özelleştirme yeteneğinin karşılaştırıldığı grafik.

PyTorch ile Verimli AI Model Eğitimi

Trainer ile gradyan biriktirme

training_args = TrainingArguments(output_dir="./results",
                                  evaluation_strategy="epoch",
                                  gradient_accumulation_steps=2)

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.73, 'eval_accuracy': 0.03, 'eval_f1': 0.05}
{'epoch': 2.0, 'eval_loss': 0.68, 'eval_accuracy': 0.19, 'eval_f1': 0.25}
PyTorch ile Verimli AI Model Eğitimi

Hadi pratik yapalım!

PyTorch ile Verimli AI Model Eğitimi

Preparing Video For Download...