Middle — Senior
Opowiedz o akumulacji gradientów. W jakich przypadkach jest stosowana?
sobes.tech AI
Odpowiedź od AI
Akumulacja gradientów to technika stosowana podczas treningu sieci neuronowych, w której gradienty są gromadzone przez kilka mini-batchy przed aktualizacją wag modelu. Pozwala to efektywnie symulować większy rozmiar batcha niż ten, który fizycznie mieści się w pamięci GPU.
Stosuje się ją w przypadkach, gdy z powodu ograniczeń pamięci nie można używać dużego rozmiaru batcha, a duży rozmiar batcha jest ważny dla stabilności i jakości treningu. Zamiast aktualizować wagi po każdym małym batchu, gradienty są sumowane (akumulowane) przez kilka iteracji, a następnie wykonywany jest krok optymalizacji.
Przykład pseudokodu:
accumulation_steps = 4
optimizer.zero_grad()
for i, data in enumerate(dataloader):
outputs = model(data)
loss = loss_fn(outputs, targets) / accumulation_steps
loss.backward()
if (i + 1) % accumulation_steps == 0:
optimizer.step()
optimizer.zero_grad()
W ten sposób model jest aktualizowany rzadziej, ale z gradientem równoważnym większemu batchowi.