Senior
O que é acumulação de gradiente e por que é necessária em memória limitada?
sobes.tech IA
Resposta da IA
A acumulação de gradientes é uma técnica que permite treinar modelos com um tamanho de lote maior do que a memória da GPU permite, acumulando os gradientes ao longo de vários mini-lotes antes de atualizar os pesos.
Quando a memória é limitada, não é possível carregar um grande lote de uma só vez. Em vez disso, o modelo processa vários pequenos lotes sequencialmente, acumulando os gradientes (sem atualizar os parâmetros), e após um número definido de passos, realiza uma atualização.
Isso permite:
- Emular um tamanho de lote maior, o que pode melhorar a estabilidade e a qualidade do treinamento.
- Superar as limitações de memória da GPU.
Exemplo de pseudocódigo em 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()
Aqui, accumulation_steps é o número de mini-lotes após os quais os pesos são atualizados.