Sobes.tech
Senior

Čo je akumulácia gradientov a prečo je potrebná pri obmedzenej pamäti?

sobes.tech AI

Odpoveď od AI

Akumulácia gradientov je technika, ktorá umožňuje efektívne trénovanie modelov s väčšou veľkosťou dávky, než akú umožňuje pamäť GPU, tým, že sa gradienty zhromažďujú počas niekoľkých mini-dávok pred aktualizáciou váh.

Keď je pamäť obmedzená, nie je možné načítať veľkú dávku naraz. Namiesto toho model spracováva niekoľko malých dávok po sebe, zhromažďuje gradienty (bez aktualizácie parametrov) a po stanovenom počte krokov vykoná jeden krok optimalizácie.

Toto umožňuje:

  • emulovať väčšiu veľkosť dávky, čo môže zlepšiť stabilitu a kvalitu učenia.
  • prekonať obmedzenia pamäti GPU.

Príklad pseudokódu v 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()

Tu je accumulation_steps počet mini-dávok, po ktorých sa aktualizujú váhy.