Acumulação de Gradiente

Como os modelos realmente aprendem, do gradiente descendente simples ao Adam

A acumulação de gradiente simula um batch maior quando a memória é limitada. Em vez de dar um passo depois de cada micro-batch, somas os gradientes de vários micro-batches, e depois dás um único passo de otimizador.

O tamanho de batch efetivo é o tamanho do micro-batch vezes o número de passos de acumulação. Isto permite que uma GPU pequena se comporte mais como se tivesse treinado num batch maior.

Um barril de água da chuva capta a ideia. Uma pequena caneca não consegue regar o jardim inteiro de uma vez, por isso deitas várias canecas num barril e depois usas a quantidade do barril. A acumulação de gradiente recolhe várias contribuições pequenas de gradiente antes de uma única atualização. A figura abaixo é literalmente este processo: cada novo termo é uma caneca, e as barras a subir são o barril a encher-se em direção ao seu total. A acumulação de gradiente é uma soma parcial de gradientes que trocas por um único passo.

Onde isto aparece no MLA acumulação de gradiente é comum em grandes modelos de linguagem, imagens grandes, e memória de GPU limitada. Permite às equipas escolher um tamanho de batch efetivo sem exigir que esse batch inteiro caiba de uma vez.
▶ Acumulação de Gradiente
← Escalonamento do Tamanho de BatchInicialização e Escala de Sinal →