Sobes.tech
Senior

Czym jest akumulacja gradientów i dlaczego jest potrzebna przy ograniczonej pamięci?

sobes.tech AI

Odpowiedź od AI

Akumulacja gradientów to technika pozwalająca na efektywne trenowanie modeli z większym rozmiarem partii niż pozwala na to pamięć GPU, poprzez gromadzenie gradientów z kilku mini-partii przed aktualizacją wag.

Gdy pamięć jest ograniczona, nie można załadować dużej partii naraz. Zamiast tego, model przetwarza kilka małych partii kolejno, gromadząc gradienty (bez aktualizacji parametrów), a po określonej liczbie takich kroków wykonuje jeden krok optymalizacji.

To pozwala:

  • emulować większy rozmiar partii, co może poprawić stabilność i jakość treningu.
  • obejść ograniczenia pamięci GPU.

Przykład pseudokodu w PyTorch:

optimizer.zero_grad()
for i, (inputs, targets) in enumerate(dataloader):
    outputs = model(inputs)
    loss = criterion(outputs, targets) / accumulation_steps
    loss.backward()
    if (i + 1) % accumulation_steps == 0:
        optimizer.step()
        optimizer.zero_grad()

Tutaj, accumulation_steps to liczba mini-partii po których następuje aktualizacja wag.