Senior
25
Что такое gradient accumulation и зачем он нужен на ограниченной памяти?
Companies where asked
Skyeng
Магнит
Answer from AI
sobes.tech AI
Gradient accumulation — это техника, позволяющая эффективно обучать модели с большим размером батча, чем позволяет память GPU, путём накопления градиентов за несколько мини-батчей перед обновлением весов.
Когда память ограничена, нельзя загрузить большой батч целиком. Вместо этого модель обрабатывает несколько маленьких батчей последовательно, накапливая градиенты (без обновления параметров), а после заданного количества таких шагов выполняет один шаг оптимизации.
Это позволяет:
- Эмулировать больший размер батча, что может улучшить стабильность и качество обучения.
- Обойти ограничения памяти GPU.
Пример псевдокода на 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()
Здесь accumulation_steps — количество мини-батчей, после которых происходит обновление весов.