Precisão mista
Aumente a eficiência da aprendizagem profunda com formação de precisão mista! Obtenha velocidades mais rápidas, menor utilização de memória e poupanças de energia sem sacrificar a precisão.
A precisão mista é uma técnica utilizada na aprendizagem profunda para acelerar a formação de modelos e reduzir o consumo de memória. Envolve a utilização de uma combinação de formatos numéricos de menor precisão, como o ponto flutuante de 16 bits (FP16), e formatos de maior precisão, como o ponto flutuante de 32 bits (FP32), durante o cálculo. Ao utilizar estrategicamente números de precisão inferior para determinadas partes do modelo, como a multiplicação de pesos, e ao manter componentes críticos como as actualizações de pesos em precisão superior, o treino de precisão mista pode acelerar significativamente o desempenho nas GPUs modernas sem uma perda substancial na precisão do modelo.
Como funciona a precisão mista
A ideia central por trás da precisão mista é aproveitar a velocidade e a eficiência de memória dos tipos de dados de precisão mais baixa. O hardware moderno, especialmente as GPUs NVIDIA com Tensor Cores, pode executar operações em números de 16 bits muito mais rapidamente do que em números de 32 bits. O processo normalmente envolve três etapas principais:
- Conversão para menor precisão: A maioria das operações do modelo, particularmente as multiplicações e convoluções de matrizes computacionalmente intensivas, são efectuadas utilizando aritmética de meia precisão (FP16). Isto reduz o espaço de memória e acelera os cálculos.
- Manutenção de uma cópia mestre dos pesos: Para manter a precisão e a estabilidade do modelo, uma cópia mestre dos pesos do modelo é mantida no formato padrão de ponto flutuante de 32 bits (FP32). Essa cópia mestre é usada para acumular gradientes e atualizar os pesos durante o processo de treinamento.
- Escalonamento de perdas: Para evitar o underflow numérico - onde pequenos valores de gradiente se tornam zero quando convertidos para FP16 - é usada uma técnica chamada escalonamento de perdas. Ela envolve a multiplicação da perda por um fator de escala antes da retropropagação para manter os valores de gradiente dentro de um intervalo representável para FP16. Antes de os pesos serem actualizados, os gradientes são reduzidos.
As estruturas de aprendizagem profunda, como o PyTorch e o TensorFlow, têm suporte integrado para precisão mista automática, o que facilita a sua implementação.
Aplicações e exemplos
A precisão mista é amplamente adoptada na formação de modelos de aprendizagem automática (ML) em grande escala, onde a eficiência é fundamental.
Conceitos relacionados
A precisão mista é uma das várias técnicas de otimização utilizadas para tornar os modelos de aprendizagem profunda mais eficientes. É importante distingui-la de conceitos relacionados:
- Quantização de modelos: A quantização reduz o tamanho do modelo e o custo computacional, convertendo números de vírgula flutuante (como FP32 ou FP16) em formatos inteiros de bits inferiores, como INT8. Embora a precisão mista utilize diferentes formatos de vírgula flutuante durante a formação, a quantização é normalmente aplicada após a formação(quantização pós-formação) ou durante a mesma(formação consciente da quantização) para otimizar a inferência, especialmente em dispositivos de ponta.
- Poda de modelos: A poda é uma técnica que envolve a remoção de conexões redundantes ou sem importância (pesos) de uma rede neural. Ao contrário da precisão mista, que altera o formato numérico dos pesos, a poda altera a própria arquitetura do modelo para reduzir o seu tamanho e complexidade. Estas técnicas podem ser utilizadas em conjunto para obter ganhos de desempenho ainda maiores.