Efficient AI Model Training with PyTorch
Dennis Lee
Data Engineer
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()
.to(device)
Accelerator
provides an interface for distributed trainingfrom accelerate import Accelerator
accelerator = Accelerator(
device_placement=True
)
device_placement
(bool
, default True
): Handle device placement by defaultfrom transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"distilbert-base-cased", return_dict=True)
Adam
from torch.optim import Adam
optimizer = Adam(params=model.parameters(), lr=2e-5)
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
): PyTorch optimizer, like Adam
num_warmup_steps
(int
): steps to linearly increase lr
, set to int(num_training_steps * 0.1)
num_training_steps
(int
): total training steps, set to len(train_dataloader) * num_epochs
prepare
method handles device placementmodel, optimizer, dataloader, lr_scheduler = \ accelerator.prepare(model,
optimizer,
dataloader,
lr_scheduler)
for batch in dataloader:
optimizer.zero_grad()
inputs, targets = batch inputs = inputs.to(device) targets = targets.to(device)
for batch in dataloader:
optimizer.zero_grad()
inputs, targets = batch
for batch in dataloader:
optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs)
loss = outputs.loss loss.backward()
for batch in dataloader:
optimizer.zero_grad()
inputs, targets = batch
outputs = model(inputs) loss = outputs.loss
accelerator.backward(loss)
optimizer.step() scheduler.step()
loss.backward
with accelerator
Before Accelerator
inputs.to(device)
targets.to(device)
loss.backward()
After Accelerator
accelerator.prepare(model)
accelerator.prepare(dataloader)
accelerator.backward(loss)
Efficient AI Model Training with PyTorch