Latih model dengan Accelerator

Pelatihan Model AI Efisien dengan PyTorch

Dennis Lee

Data Engineer, Amazon

Trainer dan Accelerator

Bagan membandingkan kemudahan penggunaan vs. kemampuan kustomisasi untuk Accelerator dan Trainer.

Pelatihan Model AI Efisien dengan PyTorch

Loop pelatihan kustom

  • Trainer: tidak ada loop pelatihan kustom
  • Beberapa tugas lanjutan di AI generatif memerlukan dua jaringan

Gambar generative adversarial network.

1 https://www.aitude.com/basics-of-generative-adversarial-network-model/
Pelatihan Model AI Efisien dengan PyTorch

Trainer dan Accelerator

Bagan membandingkan kemudahan penggunaan vs. kemampuan kustomisasi untuk Accelerator dan Trainer.

Pelatihan Model AI Efisien dengan PyTorch

Mengubah loop pelatihan dasar

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

 

  • Nolkan gradien
  • Pindahkan data ke perangkat tertentu: .to(device)
  • Lakukan forward pass
  • Hitung loss cross-entropy
  • Hitung gradien (backward pass)
  • Perbarui parameter model dan laju belajar
Pelatihan Model AI Efisien dengan PyTorch

Buat objek Accelerator

  • Accelerator menyediakan antarmuka untuk pelatihan terdistribusi
from accelerate import Accelerator
accelerator = Accelerator(
    device_placement=True
)
  • device_placement (bool, default True): Tangani penempatan perangkat secara otomatis
Pelatihan Model AI Efisien dengan PyTorch

Definisikan model dan optimizer

  • Muat model pra-latih
from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-cased", return_dict=True)
  • Optimalkan parameter model dengan Adam
from torch.optim import Adam

optimizer = Adam(params=model.parameters(), lr=2e-5)
Pelatihan Model AI Efisien dengan PyTorch

Definisikan scheduler

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): Optimizer PyTorch, seperti Adam
  • num_warmup_steps (int): langkah untuk menaikkan lr secara linear, setel ke int(num_training_steps * 0.1)
  • num_training_steps (int): total langkah pelatihan, setel ke len(train_dataloader) * num_epochs
Pelatihan Model AI Efisien dengan PyTorch

Siapkan model untuk pelatihan efisien

  • Metode prepare menangani penempatan perangkat
model, optimizer, dataloader, lr_scheduler = \
    accelerator.prepare(model,

optimizer,
dataloader,
lr_scheduler)
Pelatihan Model AI Efisien dengan PyTorch

Membangun loop pelatihan dengan Accelerator

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch inputs = inputs.to(device) targets = targets.to(device)
  • Nolkan gradien
  • Sebelumnya memindahkan data ke perangkat
Pelatihan Model AI Efisien dengan PyTorch

Membangun loop pelatihan dengan Accelerator

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
  • Nolkan gradien
  • Sebelumnya memindahkan data ke perangkat
  • Hapus baris yang memindahkan data secara manual
Pelatihan Model AI Efisien dengan PyTorch

Membangun loop pelatihan dengan Accelerator

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs)
loss = outputs.loss loss.backward()
  • Nolkan gradien
  • Sebelumnya memindahkan data ke perangkat
  • Hapus baris yang memindahkan data secara manual
  • Lakukan forward pass
  • Hitung loss cross-entropy dan gradien
Pelatihan Model AI Efisien dengan PyTorch

Membangun loop pelatihan dengan Accelerator

for batch in dataloader:

optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs) loss = outputs.loss
accelerator.backward(loss)
optimizer.step() scheduler.step()
  • Nolkan gradien
  • Sebelumnya memindahkan data ke perangkat
  • Hapus baris yang memindahkan data secara manual
  • Lakukan forward pass
  • Hitung loss cross-entropy dan gradien
  • Ganti loss.backward dengan accelerator
  • Perbarui parameter model dan laju belajar
Pelatihan Model AI Efisien dengan PyTorch

Ringkasan perubahan

Sebelum Accelerator

  • Harus memindahkan data ke perangkat secara manual
    • inputs.to(device)
    • targets.to(device)
  • Hitung gradien dengan loss.backward()

Setelah Accelerator

  • Penempatan perangkat otomatis dan paralelisme data
    • accelerator.prepare(model)
    • accelerator.prepare(dataloader)
  • Sinkronisasi gradien dengan accelerator.backward(loss)
  • Loop dapat dikustomisasi
  • Mudah digunakan, agnostik perangkat keras, skalabel, dan mudah dirawat
Pelatihan Model AI Efisien dengan PyTorch

Ayo berlatih!

Pelatihan Model AI Efisien dengan PyTorch

Preparing Video For Download...