Gradient accumulation s Acceleratorem
Trénuješ jazykový model pro zjednodušování překladů pomocí parafrázování složitých vět, ale tvoje GPU začíná docházet paměť. Gradient accumulation umožňuje modelu efektivně trénovat na větších dávkách tím, že používá malé dávky, které se do paměti vejdou. Protože chceš mít přehled o struktuře tréninkové smyčky, píšeš ji explicitně pomocí Accelerator. Toto cvičení ve skutečnosti běží na CPU, ale kód zůstává stejný jako pro GPU.
model, train_dataloader, optimizer a lr_scheduler jsou již předem definovány.
Toto cvičení je součástí kurzu
Efficient AI Model Training with PyTorch
Pokyny k cvičení
- Nakonfiguruj
Accelerator()tak, aby používal gradient accumulation se dvěma kroky. - Nastav context manager
Acceleratorpro povolení gradient accumulation promodel.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
# Set up an Accelerator context manager
with ____.____(____):
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()
print(f"Loss = {loss}")