Precisão Mista e Escalonamento de Loss

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

O treino em precisão mista usa formatos numéricos mais pequenos por velocidade e memória. Em vez de guardar cada cálculo em precisão total (os habituais floats de 32 bits), muitas operações usam float16 ou bfloat16: formatos de 16 bits que ocupam metade da memória em troca de menos precisão e, no caso do float16, de um intervalo mais estreito de tamanhos representáveis.

O risco é o intervalo numérico. Alguns gradientes são minúsculos. Se um número minúsculo for arredondado para zero, o otimizador perde informação. O escalonamento de loss protege esses gradientes pequenos multiplicando a loss antes da retropropagação, e depois dividindo os gradientes de volta para baixo.

Uma balança de cozinha que arredonda para gramas inteiras pode não notar uma pitada minúscula de especiaria. Se pesares dez pitadas idênticas juntas, a balança consegue ver o total. Depois divides por dez para recuperar uma pitada. O escalonamento de loss usa o mesmo truque: torna o valor pequeno mais fácil de representar, e depois reescala-o de volta. A figura abaixo é um lembrete do que está em jogo. A descida só funciona se o gradiente de cada passo sobreviver à aritmética; a precisão não muda o ciclo, decide é se os declives minúsculos perto do mínimo continuam visíveis para ele.

Onde isto aparece no MLA precisão mista é uma das razões por que as grandes redes neuronais treinam depressa em hardware moderno. Os otimizadores continuam a precisar dos mesmos conceitos, mas a escala numérica passa a fazer parte da receita de treino.
▶ Precisão Mista e Escalonamento de Loss
← Mínimos Quadrados AlternadosEscalonamento do Tamanho de Batch →