Gradyan kontrol noktaları ve yerel SGD

PyTorch ile Verimli AI Model Eğitimi

Dennis Lee

Data Engineer, Amazon

Eğitim verimliliğini artırma

 

 

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

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları bellek verimliliğini artırır

 

 

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

PyTorch ile Verimli AI Model Eğitimi

Yerel SGD, iletişim verimliliğini ele alır

 

 

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

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla
    • Önce A, B’yi, sonra C’yi hesapla

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla
    • Önce A, B’yi, sonra C’yi hesapla
    • A ve B ileri geçişin geri kalanı için gerekmez
  • A ve B’yi saklamalı mı silmeli miyiz?

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla
    • Önce A, B’yi, sonra C’yi hesapla
    • A ve B ileri geçişin geri kalanı için gerekmez
  • A ve B’yi saklamalı mı silmeli miyiz?
    • Kontrol noktası yoksa: A ve B’yi sakla

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla
    • Önce A, B’yi, sonra C’yi hesapla
    • A ve B ileri geçişin geri kalanı için gerekmez
  • A ve B’yi saklamalı mı silmeli miyiz?
    • Kontrol noktası yoksa: A ve B’yi sakla
    • Kontrol noktası varsa: A ve B’yi sil

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla
    • Önce A, B’yi, sonra C’yi hesapla
    • A ve B ileri geçişin geri kalanı için gerekmez
  • A ve B’yi saklamalı mı silmeli miyiz?
    • Kontrol noktası yoksa: A ve B’yi sakla
    • Kontrol noktası varsa: A ve B’yi sil
    • Geri yayılımda A ve B’yi yeniden hesapla

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Gradyan kontrol noktaları nedir?

  • Gradyan kontrol noktaları: hangi aktivasyonların saklanacağını seçerek belleği azaltır
  • Örnek: A + B = C hesapla
    • Önce A, B’yi, sonra C’yi hesapla
    • A ve B ileri geçişin geri kalanı için gerekmez
  • A ve B’yi saklamalı mı silmeli miyiz?
    • Kontrol noktası yoksa: A ve B’yi sakla
    • Kontrol noktası varsa: A ve B’yi sil
    • Geri yayılımda A ve B’yi yeniden hesapla
    • B’yi yeniden hesaplamak pahalıysa, B’yi sakla

Düğümler ve kenarlarla gradyan kontrol noktalarını gösteren grafik

PyTorch ile Verimli AI Model Eğitimi

Trainer ve Accelerator

Hızlandırıcı ve Trainer için kullanım kolaylığı ve özelleştirme yeteneği karşılaştırması grafiği.

PyTorch ile Verimli AI Model Eğitimi

Trainer ve Accelerator

Hızlandırıcı ve Trainer için kullanım kolaylığı ve özelleştirme yeteneği karşılaştırması grafiği.

PyTorch ile Verimli AI Model Eğitimi

Trainer ile gradyan kontrol noktaları

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







PyTorch ile Verimli AI Model Eğitimi

Trainer ile gradyan kontrol noktaları

training_args = TrainingArguments(output_dir="./results",
                                  evaluation_strategy="epoch",
                                  gradient_accumulation_steps=4,
                                  gradient_checkpointing=True)

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}
PyTorch ile Verimli AI Model Eğitimi

Trainer’dan Accelerator’a geçiş

Hızlandırıcı ve Trainer için kullanım kolaylığı ve özelleştirme yeteneği karşılaştırması grafiği.

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan kontrol noktaları

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()
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile gradyan kontrol noktaları

accelerator = Accelerator(gradient_accumulation_steps=2)
model.gradient_checkpointing_enable()

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()
PyTorch ile Verimli AI Model Eğitimi

Yerel SGD, iletişim verimliliğini artırır

 

 

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

PyTorch ile Verimli AI Model Eğitimi

Yerel SGD nedir?

Belirli adımlardan sonra gradyanların nasıl senkronize edildiğini gösteren yerel SGD diyagramı.

  • Her aygıt gradyanları paralel hesaplar
PyTorch ile Verimli AI Model Eğitimi

Yerel SGD nedir?

Belirli adımlardan sonra gradyanların nasıl senkronize edildiğini gösteren yerel SGD diyagramı.

  • Her aygıt gradyanları paralel hesaplar
  • Gradyan senkronizasyonu: Sürücü düğüm, her aygıttaki model parametrelerini günceller
  • Yerel SGD: Gradyan senkronizasyonunun sıklığını azaltır
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile yerel SGD





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()

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile yerel SGD

from accelerate.local_sgd import LocalSGD

with LocalSGD(accelerator=accelerator, model=model, local_sgd_steps=8, 
              enabled=True) as local_sgd:
    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()

PyTorch ile Verimli AI Model Eğitimi

Accelerator ile yerel SGD

from accelerate.local_sgd import LocalSGD

with LocalSGD(accelerator=accelerator, model=model, local_sgd_steps=8, 
              enabled=True) as local_sgd:
    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()
            local_sgd.step()
PyTorch ile Verimli AI Model Eğitimi

Hadi pratik yapalım!

PyTorch ile Verimli AI Model Eğitimi

Preparing Video For Download...