Habr AI mostra como montar uma Linear Layer em C++ e CUDA na série «De MNIST a Transformer»
O Habr AI publicou a terceira parte da série «De MNIST a Transformer». Desta vez, o tema são tensores, multiplicação de tensores e uma Linear Layer própria, sem PyTorch. O artigo tem bastante C++ e CUDA: o autor monta passo a passo uma camada totalmente conectada, explica o uso de memória na GPU e termina com uma rede simples para reconhecer MNIST. O foco não está nas APIs das bibliotecas, mas em como essas operações são realmente executadas na GPU.
Processado por IA de Habr AI; editado por Hamidun News
O Habr AI publicou a terceira parte da série «De MNIST a Transformer», que analisa a passagem das matrizes comuns para os tensores e mostra como montar à mão uma Linear Layer básica, sem PyTorch. O material leva o leitor até uma rede neural simples para reconhecer MNIST e foca não nas APIs das bibliotecas, mas em como essas operações realmente rodam na GPU.
Sobre o que é a terceira parte
O novo artigo continua o caminho do código CUDA de baixo nível até as arquiteturas sobre as quais depois se constroem o Transformer e os LLMs modernos. Em vez de abstrações prontas, o autor propõe olhar diretamente para o cálculo: como os dados ficam na memória, como a GPU dispara as operações e por que até uma camada de rede neural aparentemente elementar exige muito trabalho de engenharia. É um bom formato para quem cansou de enxergar os frameworks de ML como mágica de uma linha de código.
A principal mudança nesta parte é a passagem das matrizes para os tensores. Para o aprendizado de máquina aplicado, esse é um tema básico, porque dados reais raramente se limitam a duas dimensões. O autor mostra como muda a forma de pensar do desenvolvedor quando ele passa a trabalhar não só com tabelas de números, mas com estruturas multidimensionais, das quais depois se formam os batches, os pesos das camadas, as representações intermediárias e outros blocos do futuro modelo. É nesse nível que começa a preparação para entender blocos mais complexos, como attention e embeddings.
O que é implementado à mão
A parte prática gira em torno de código próprio em C++ e CUDA. Não há tentativa de esconder a complexidade atrás de uma interface conveniente; ao contrário, o leitor percorre o caminho da fórmula matemática até a implementação manual. Essa abordagem é útil porque liga a álgebra linear abstrata a passos concretos de desenvolvimento: alocação de dados, chamadas de kernels, verificação das formas das dimensões e compreensão de onde exatamente surgem erros ou perdas de desempenho. Sem esse elo, é difícil sentir a diferença entre um exemplo didático e um sistema real.
- Implementação da multiplicação de tensores
- Criação da primeira Linear Layer, isto é, uma camada totalmente conectada
- Trabalho com memória e posicionamento de dados na GPU
- Ligação entre matemática e código para treinar no MNIST
- Montagem de uma rede simples para reconhecer dígitos manuscritos
«Só assim é possível entender de verdade como os LLMs funcionam».
Depois de implementar as operações básicas, o artigo chega a uma camada totalmente conectada própria e, em seguida, a uma pequena rede para reconhecer dígitos manuscritos do MNIST. É um ponto importante: o material não para em primitivas isoladas, mas mostra como combiná-las numa cadeia funcional. Também fica claro que até um classificador simples se apoia em uma pilha de conhecimento bastante profunda, da matemática à estrutura da memória de vídeo e às particularidades da computação paralela.
Por que isso importa
O valor desse tipo de análise está em desfazer a ilusão de facilidade que o wrapper em Python costuma criar. Quando o desenvolvedor vê apenas chamadas prontas de bibliotecas, fica difícil avaliar o custo de cada operação e entender por que o modelo de repente esbarra em memória, largura de banda ou tamanho do batch. Analisar no nível de tensores e camadas ajuda a ler melhor os profilers, a projetar a arquitetura com mais cuidado e a escolher com mais consciência os compromissos entre velocidade, precisão e complexidade de implementação.
A série «De MNIST a Transformer» é especialmente útil para quem quer não apenas rodar modelos alheios, mas entender a mecânica dos sistemas de IA modernos. Ela não promete entrada rápida e avisa de forma direta: haverá muito código, CUDA, matemática e trabalho manual com memória. Mas esse formato dá uma base que serve tanto na otimização de inferência quanto na leitura de implementações CUDA de terceiros e na tentativa de entender por que certas decisões de arquitetura rodam mais rápido que outras.
O que isso significa
Para o público de língua russa, é um bom sinal: a demanda está saindo de tutoriais superficiais e indo para a análise de engenharia dos bastidores da pilha de IA. Quanto mais materiais assim surgem, menos os LLMs são vistos como caixa-preta e mais fácil fica para os desenvolvedores passar do uso de modelos prontos para o ajuste e a otimização conscientes. Isso é especialmente importante agora, quando cresce rapidamente entre engenheiros em atividade a demanda por otimização de GPU e pelo entendimento do funcionamento interno dos modelos.
- 2 de nov. de 2026TensorFold 1.2.0 aumenta em 44,2% a vazão do Qwen3.8-27B no M3 Ultra com 16 fluxos
- 1 de nov. de 2026Modelos locais perdem para Opus e Codex: 0,21 ponto no MacBook contra 1,00 do Codex
- 1 de nov. de 2026Autor do Habr faz fine-tuning do YOLOv8l em radiografias dentárias e leva o mAP50 a 0,642
- 1 de nov. de 2026Bots de voz com LLM usam o classificador rápido Jev: decisão em 200–500 ms
Perguntas frequentes sobre a notícia
O que se sabe sobre Sobre o que é a terceira parte?
O novo artigo continua o caminho do código CUDA de baixo nível até as arquiteturas sobre as quais depois se constroem o Transformer e os LLMs modernos. Em vez de abstrações prontas, o autor propõe olhar diretamente para o cálculo: como os dados ficam na memória, como a GPU dispara as operações e por que até uma camada de rede neural aparentemente elementar exige muito trabalho de engenharia. É um bom formato para quem cansou de enxergar os frameworks de ML como mágica de uma linha de código. A principal mudança nesta parte é a passagem das matrizes para os tensores. Para o
O que é implementado à mão?
A parte prática gira em torno de código próprio em C++ e CUDA. Não há tentativa de esconder a complexidade atrás de uma interface conveniente; ao contrário, o leitor percorre o caminho da fórmula matemática até a implementação manual. Essa abordagem é útil porque liga a álgebra linear abstrata a passos concretos de desenvolvimento: alocação de dados, chamadas de kernels, verificação das formas das dimensões e compreensão de onde exatamente surgem erros ou perdas de desempenho. Sem esse elo, é difícil sentir a diferença entre um exemplo didático e um sistema real. Implementa
Por que isso importa?
O valor desse tipo de análise está em desfazer a ilusão de facilidade que o wrapper em Python costuma criar. Quando o desenvolvedor vê apenas chamadas prontas de bibliotecas, fica difícil avaliar o custo de cada operação e entender por que o modelo de repente esbarra em memória, largura de banda ou tamanho do batch. Analisar no nível de tensores e camadas ajuda a ler melhor os profilers, a projetar a arquitetura com mais cuidado e a escolher com mais consciência os compromissos entre velocidade, precisão e complexidade de implementação. A série «De MNIST a Transformer» é es
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.