- 4 fatores que fizeram a Nvidia aumentar o desempenho de GPUs em 1000 vezes ao longo de 10 anos
- Explicados pelo Chief Scientist Bill Dally em um único slide no keynote da IEEE Hot Chips 2023
Representação Numérica: 16 vezes
- "De modo geral, o maior ganho que obtivemos veio da melhoria na representação numérica"
- Esses números se referem aos principais parâmetros das redes neurais
- Entre esses parâmetros, um é o peso (Weights), e outro é a ativação (Activations)
- Peso: a força da conexão entre neurônios do modelo
- Ativação: decide se o neurônio será ativado multiplicando a soma das entradas com os pesos aplicados e propagando a informação para a próxima camada
- Antes da P100, as GPUs da Nvidia representavam esses pesos usando números de ponto flutuante de precisão simples (
single precision floating-point)
- Definidos pelo padrão IEEE 754, esses números têm 32 bits de comprimento: 23 bits representam a fração, 8 bits funcionam como expoente aplicado à fração e 1 bit é usado para o sinal do número
- Mas pesquisadores de machine learning descobriram que, em muitos cálculos, é possível usar números menos precisos e ainda assim a rede neural continuar fornecendo respostas corretas
- Ao processar um número menor de bits, a lógica que executa os principais cálculos do machine learning (multiplicação e acumulação) pode ser menor e mais eficiente
- A energia necessária para multiplicação é proporcional ao quadrado do número de bits
- Por isso, a Nvidia reduziu esse número pela metade na P100 ao usar FP16. O Google também lançou sua própria versão, chamada bfloat16
- A diferença entre os dois está na proporção entre bits de fração, que fornecem precisão, e bits de expoente, que fornecem alcance
- O bfloat16 tem o mesmo número de bits de expoente do FP32, o que facilita a conversão entre os dois formatos
- A GPU mais avançada da atualidade, a H100, consegue executar partes específicas de grandes redes neurais transformadoras, como o ChatGPT e outros LLMs, usando números de 8 bits
- Mas a Nvidia descobriu que isso não é uma solução
one-size-fits-all aplicável a todos os casos
- Por exemplo, a arquitetura de GPU Hopper da Nvidia usa, na prática, dois formatos FP8 diferentes para fazer cálculos
- Um tem precisão um pouco maior, e o outro tem alcance um pouco maior
- O diferencial especial da Nvidia é saber quando usar cada formato
- Dally e sua equipe têm todo tipo de ideia interessante para extrair mais IA de menos bits
- E está claro que o sistema de ponto flutuante não é ideal
- Um dos principais problemas é que a precisão de ponto flutuante é relativamente consistente, independentemente de os números serem grandes ou pequenos
- Mas os parâmetros das redes neurais não usam números grandes e ficam concentrados em torno de 0
- Por isso, o foco de P&D da Nvidia é encontrar maneiras eficientes de representar números com mais precisão quando estão próximos de 0
Instruções Complexas: 12,5 vezes
- "O overhead de buscar e decodificar instruções é várias vezes maior do que o de executar uma operação aritmética simples"
- Por exemplo, um dos tipos de multiplicação consome um overhead equivalente a 20 vezes os 1,5 picojoules da própria operação
- A Nvidia obteve grandes ganhos ao projetar GPUs para executar cálculos grandes com uma única instrução, em vez de uma sequência de instruções
- Ainda existe overhead, mas com instruções complexas é possível amortizar esse custo com mais operações matemáticas
- Por exemplo, no caso da instrução complexa IMMA (
integer matrix multiply and accumulate, multiplicação e acumulação de matrizes inteiras), o overhead representa apenas 16% do custo energético da matemática
Lei de Moore: 2,5 vezes
- Manter o avanço da Lei de Moore envolve investimentos de bilhões de dólares, engenharia extremamente complexa e inúmeras instabilidades internacionais
- Mesmo assim, isso faz parte do aumento de desempenho das GPUs da Nvidia
- A Nvidia vem aproveitando continuamente as tecnologias de fabricação mais avançadas
- A H100 é fabricada no processo N5 (5 nanômetros) da TSMC, e a foundry só começou a produção inicial da próxima geração N3 no fim de 2022
Esparsidade: 2 vezes
- Depois do treinamento, muitas redes neurais ainda mantêm neurônios que, para começar, nem deveriam estar ali
- Em algumas redes neurais, "é possível remover mais da metade dos neurônios sem perder precisão"
- Como os valores de peso desses neurônios são 0 ou quase 0, eles não contribuem para a saída, e incluí-los no cálculo é apenas desperdício de tempo e energia
- Tornar essas redes "esparsas" (
Sparse) para reduzir a carga computacional é uma tarefa complicada
- No entanto, com a A100, antecessora da H100, a Nvidia introduziu um recurso chamado esparsidade estruturada (
Structured Sparsity)
- Esse hardware pode forçar a ocorrência de 2 entre 4 possíveis eventos de poda, permitindo chegar a um novo cálculo de matriz menor
- "A questão da esparsidade ainda não acabou" "Precisamos fazer algo com as ativações, e também podemos ter uma esparsidade maior nos pesos"
6 comentários
Uau, obrigado pelo ótimo texto!
Achei uma leitura divertida.
Nossa, então tenho que continuar comprando ações..
Tenho algumas ações da Nvidia que comprei em 2018 como reconhecimento, e agora estão em 1100%. Eu devia ter comprado um monte naquela época. T_T
Uau..!
16 x 12,5 x 2,5 x 2 dá exatamente 1000.