Notícias portuguesas
Mais recente
IA e Tecnologia

Tensor Cores, Triton, redes residuais e transformers de visão

Detalhe ilustrativo do die de uma CPU dos anos 1980, não de uma GPU.
Detalhe ilustrativo do die de uma CPU dos anos 1980, não de uma GPU.

Entre 2015 e hoje, o aprendizado profundo evoluiu do código C++ para GPU ajustado manualmente e das redes convolucionais para mecanismos matriciais acelerados por hardware e arquiteturas Transformer. Estes três marcos definem como os modelos modernos de IA são projetados e ampliados.

1. A evolução moderna do CUDA: Tensor Cores e OpenAI Triton

Em 2012, Alex Krizhevsky escreveu CUDA C++ de baixo nível (cuda-convnet) para calcular operações individuais de ponto flutuante em núcleos CUDA padrão. Hoje, o aprendizado profundo depende de hardware matricial especializado e compiladores de alto nível.

  • Dos núcleos CUDA aos Tensor Cores. Os núcleos CUDA tradicionais executam uma multiplicação e uma adição escalares por ciclo de clock. A partir da arquitetura Volta (2017), a NVIDIA introduziu os Tensor Cores, que multiplicam pequenas matrizes inteiras (como blocos 4×4 ou 16×16) em um único ciclo de clock. Os Tensor Cores modernos usam formatos de precisão mista como FP16, BF16 e FP8, oferecendo ganhos de velocidade de uma ordem de grandeza nas multiplicações de matrizes.
  • cuDNN e seleção automática de kernels. Em vez de os pesquisadores escreverem convoluções C++ personalizadas, a biblioteca cuDNN da NVIDIA agora contém centenas de kernels assembly pré-compilados. Em tempo de execução, frameworks como PyTorch comparam o desempenho de diferentes algoritmos para o formato exato do tensor e escolhem automaticamente a rotina de Tensor Core mais rápida.
  • OpenAI Triton (programação de GPU baseada em Python). Escrever diretamente em CUDA C++ exige gerenciar manualmente a indexação de threads, os conflitos entre bancos de memória compartilhada e a sincronização de warps. Lançado pela OpenAI, o Triton permite que pesquisadores escrevam kernels de alto desempenho para GPU diretamente em Python. Você define operações no nível do bloco (blocos de dados), e o compilador Triton cuida automaticamente da coalescência de memória, da divisão em blocos na memória compartilhada e do escalonamento dos Tensor Cores, muitas vezes igualando ou superando CUDA C++ ajustado manualmente.

2. Conexões de salto do ResNet e fluxo de retropropagação

Antes do ResNet (2015), empilhar mais de ~20 camadas convolucionais fazia o erro de treinamento disparar. À medida que os gradientes percorriam para trás dezenas de etapas de multiplicação, encolhiam em direção a zero (desaparecimento dos gradientes) ou se tornavam instáveis.

  • Aprender resíduos em vez de saídas brutas. Em um bloco de rede padrão, as camadas empilhadas tentam aprender um mapeamento direto H(x) a partir da entrada x. O ResNet introduz uma conexão de salto (atalho de identidade) que soma a entrada original x diretamente à saída do bloco:

y=F(x)+x

Aqui, F(x) representa as camadas convolucionais empilhadas. Em vez de reconstruir toda a representação do zero, as camadas só precisam aprender o resíduo (o pequeno ajuste F(x) = y - x). Se uma camada não for necessária, a rede pode facilmente levar F(x) a zero, deixando uma passagem de identidade sem alterações.

  • Uma via ininterrupta para os gradientes. Durante a retropropagação, a regra da cadeia calcula o gradiente da perda (L) em relação à entrada x:

(∂ L)/(∂ x)=(∂ L)/(∂ y)((∂ F(x))/(∂ x)+1)

Por causa do termo + 1 criado pelo atalho de identidade, o gradiente a montante ((∂ L)/(∂ y)) flui diretamente para trás até as camadas anteriores sem ser reduzido pelas pequenas matrizes de pesos em (∂ F(x))/(∂ x). Isso permite que os gradientes se propaguem sem obstáculos por mais de 100 ou até mais de 1.000 camadas.

3. A mudança das CNNs para os Vision Transformers (ViT)

Por quase uma década após o AlexNet, as redes neurais convolucionais (CNNs) dominaram a visão computacional deslizando pequenos filtros locais sobre as imagens. Em 2020, o Google introduziu o Vision Transformer (ViT), adaptando a arquitetura Transformer do processamento de linguagem natural às imagens.

CaracterísticaRedes neurais convolucionais (CNNs)Vision Transformers (ViT)
Processamento da entradaProcessa toda a grade 2D da imagem usando filtros deslizantes (por exemplo, 3×3).Divide a imagem em regiões de tamanho fixo (por exemplo, 16×16 pixels) e as achata em uma sequência de tokens.
Campo receptivoLocal primeiro. As camadas iniciais veem apenas os pixels vizinhos; o contexto global se forma lentamente nas camadas profundas.Global imediatamente. A autoatenção conecta cada região da imagem a todas as outras já a partir da camada 1.
Viés indutivoAlto. Pressupostos incorporados sobre invariância à translação e localidade espacial 2D ajudam as CNNs a aprender bem em conjuntos de dados menores.Baixo. Não tem regras espaciais 2D incorporadas (depende de embeddings posicionais), exigindo conjuntos de dados enormes para aprender a estrutura visual.
Escalabilidade do hardwareDepende de kernels de convolução especializados e padrões complexos de acesso à memória.Depende quase inteiramente de multiplicações de matrizes densas (GEMMs), que saturam os Tensor Cores das GPUs modernas com eficiência máxima.
  • Por que os ViTs assumiram a liderança na IA moderna. Embora as CNNs continuem eficientes para dispositivos móveis e de borda leves, os Vision Transformers escalam muito melhor quando treinados com centenas de milhões de imagens. Além disso, como os ViTs representam imagens como sequências de tokens, exatamente o mesmo formato usado para texto e áudio, eles permitiram que modelos modernos de IA multimodal (como GPT-4o e Gemini) processassem visão e linguagem em uma única arquitetura unificada.

Mais notícias: IA e Tecnologia