Accelerator ile modelleri eğitin

PyTorch ile Verimli AI Model Eğitimi

Dennis Lee

Data Engineer, Amazon

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

Özel eğitim döngüleri

  • Trainer: özel eğitim döngüleri yok
  • Üretken yapay zekâdaki bazı ileri görevler iki ağ gerektirir

Bir üretici çekişmeli ağ görseli.

1 https://www.aitude.com/basics-of-generative-adversarial-network-model/
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

Temel bir eğitim döngüsünü değiştirme

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch inputs = inputs.to(device) targets = targets.to(device)
outputs = model(inputs)
loss = outputs.loss
loss.backward()
optimizer.step() scheduler.step()

 

  • Gradyanları sıfırlayın
  • Veriyi belirli bir cihaza taşıyın: .to(device)
  • İleri geçiş yapın
  • Çapraz entropi kaybını hesaplayın
  • Geri yayılımda gradyanları hesaplayın
  • Model parametrelerini ve öğrenme oranını güncelleyin
PyTorch ile Verimli AI Model Eğitimi

Bir Accelerator nesnesi oluşturun

  • Accelerator, dağıtık eğitim için bir arayüz sunar
from accelerate import Accelerator
accelerator = Accelerator(
    device_placement=True
)
  • device_placement (bool, varsayılan True): Varsayılan olarak aygıt yerleşimini yönetir
PyTorch ile Verimli AI Model Eğitimi

Modeli ve optimize ediciyi tanımlayın

  • Önceden eğitilmiş bir modeli yükleyin
from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-cased", return_dict=True)
  • Model parametrelerini Adam ile optimize edin
from torch.optim import Adam

optimizer = Adam(params=model.parameters(), lr=2e-5)
PyTorch ile Verimli AI Model Eğitimi

Zamanlayıcıyı tanımlayın

from transformers import get_linear_schedule_with_warmup

lr_scheduler = get_linear_schedule_with_warmup(
      optimizer=optimizer,

num_warmup_steps=num_warmup_steps,
num_training_steps=num_training_steps)
  • optimizer (obj): Adam gibi bir PyTorch optimize edicisi
  • num_warmup_steps (int): lr’ı doğrusal artırma adımları, int(num_training_steps * 0.1) olarak ayarlayın
  • num_training_steps (int): toplam eğitim adımı, len(train_dataloader) * num_epochs olarak ayarlayın
PyTorch ile Verimli AI Model Eğitimi

Modeli verimli eğitime hazırlayın

  • prepare yöntemi aygıt yerleşimini yönetir
model, optimizer, dataloader, lr_scheduler = \
    accelerator.prepare(model,

optimizer,
dataloader,
lr_scheduler)
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile bir eğitim döngüsü kurma

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch inputs = inputs.to(device) targets = targets.to(device)
  • Gradyanları sıfırlayın
  • Veriyi daha önce cihaza taşıyın
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile bir eğitim döngüsü kurma

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
  • Gradyanları sıfırlayın
  • Veriyi daha önce cihaza taşıdınız
  • Veriyi elle taşıyan satırları kaldırın
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile bir eğitim döngüsü kurma

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs)
loss = outputs.loss loss.backward()
  • Gradyanları sıfırlayın
  • Veriyi daha önce cihaza taşıdınız
  • Veriyi elle taşıyan satırları kaldırın
  • İleri geçiş yapın
  • Çapraz entropi kaybını ve gradyanları hesaplayın
PyTorch ile Verimli AI Model Eğitimi

Accelerator ile bir eğitim döngüsü kurma

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs) loss = outputs.loss
accelerator.backward(loss)
optimizer.step() scheduler.step()
  • Gradyanları sıfırlayın
  • Veriyi daha önce cihaza taşıdınız
  • Veriyi elle taşıyan satırları kaldırın
  • İleri geçiş yapın
  • Çapraz entropi kaybını ve gradyanları hesaplayın
  • loss.backward yerine accelerator kullanın
  • Model parametrelerini ve öğrenme oranını güncelleyin
PyTorch ile Verimli AI Model Eğitimi

Değişikliklerin özeti

Accelerator öncesi

  • Veriyi aygıtlara elle taşıma gerekir
    • inputs.to(device)
    • targets.to(device)
  • Gradyanları loss.backward() ile hesaplayın

Accelerator sonrası

  • Otomatik aygıt yerleşimi ve veri paralelliği
    • accelerator.prepare(model)
    • accelerator.prepare(dataloader)
  • Gradyan senkronizasyonunu accelerator.backward(loss) ile yönetin
  • Özelleştirilebilir döngü
  • Kullanıcı dostu, donanımdan bağımsız, ölçeklenebilir ve sürdürülebilir
PyTorch ile Verimli AI Model Eğitimi

Vamos praticar!

PyTorch ile Verimli AI Model Eğitimi

Preparing Video For Download...