Habr AI mostrou como montar um Linear Layer em C++ e CUDA na série «De MNIST a Transformer»

A Habr AI lançou a terceira parte da série «De MNIST a Transformer» — desta vez sobre tensores, multiplicação de tensores e um Linear Layer próprio sem PyTorch. O artigo traz bastante C++ e CUDA: o autor monta uma camada totalmente conectada passo a passo, explica o gerenciamento de memória na GPU e chega a uma rede simples para classificação do MNIST.

Processado por IA de Habr AI; editado por Hamidun News
Habr AI mostrou como montar um Linear Layer em C++ e CUDA na série «De MNIST a Transformer»
Fonte: Habr AI. Colagem: Hamidun News.
Ouvir artigo
Ficha técnica e números-chave
ParâmetroDados
Fonte originalHabr AI ↗
Editor-chefe
Dado-chave #1Implementação de multiplicação de tensores
Dado-chave #2Criação da primeira camada Linear, ou seja, uma camada totalmente conectada
Dado-chave #3Trabalho com memória e colocação de dados na GPU

A Habr AI lançou a terceira parte da série "Do MNIST ao Transformer", onde analisa a transição de matrizes comuns para tensores e mostra como construir uma camada Linear básica do zero sem PyTorch. O material conduz o leitor através de uma rede neural simples para reconhecimento de MNIST e enfatiza não as APIs das bibliotecas, mas como essas operações são realmente executadas na GPU.

Sobre a terceira parte

O novo artigo continua a rota do código CUDA de baixo nível para as arquiteturas em que Transformers e LLMs modernos são construídos posteriormente. Em vez de abstrações prontas, o autor propõe olhar diretamente para os cálculos: como os dados ficam na memória, como a GPU inicia operações e por que até uma camada elementar de rede neural requer um grande volume de trabalho de engenharia. Este é um bom formato para quem está cansado de perceber frameworks de ML como mágica de uma única linha de código.

A mudança principal nesta parte é a transição de matrizes para tensores. Para aprendizado de máquina aplicado, este é um tópico básico porque dados reais raramente se limitam a duas dimensões. O autor mostra como o pensamento de um desenvolvedor muda quando ele começa a trabalhar não apenas com tabelas de números, mas com estruturas multidimensionais, a partir das quais são montados lotes, pesos de camadas, representações intermediárias e outros blocos de construção do modelo futuro. É neste nível que começa a preparação para compreender blocos mais complexos como atenção e embeddings.

O que eles implementam manualmente

A parte prática é construída em torno de código customizado em C++ e CUDA. Não há tentativa de esconder a complexidade por trás de uma interface conveniente: em vez disso, o leitor recebe um caminho da fórmula matemática para a implementação manual. Esta abordagem é útil porque conecta álgebra linear abstrata com etapas específicas de desenvolvimento — colocação de dados, chamadas de kernel, verificação de formas de dimensionalidade e compreensão de onde exatamente erros ou perdas de desempenho aparecem. Sem este elo, é difícil sentir a diferença entre um exemplo de livro didático e um sistema real.

  • Implementação de multiplicação de tensores
  • Criação da primeira camada Linear, ou seja, uma camada totalmente conectada
  • Trabalho com memória e colocação de dados na GPU
  • Ligação de matemática e código para treinamento em MNIST
  • Construção de uma rede simples para reconhecer dígitos manuscritos
"Apenas assim você pode realmente entender como as LLMs funcionam."

Após implementar operações básicas, o artigo conduz a uma camada totalmente conectada customizada e depois a uma pequena rede para reconhecimento de dígitos manuscritos do MNIST. Este é um momento importante: o material não se interrompe em primitivos individuais, mas mostra como montá-los em uma cadeia funcional. Ao mesmo tempo, fica claro que até um classificador simples se baseia em um conjunto bastante profundo de conhecimentos — da matemática à estrutura da memória de vídeo e às peculiaridades da computação paralela.

Por que isso é importante

O valor de tais análises é que elas eliminam a ilusão de facilidade que os invólucros Python frequentemente criam. Quando um desenvolvedor vê apenas chamadas prontas de bibliotecas, é difícil para ele avaliar o custo de cada operação e entender por que um modelo de repente esbarra em limite de memória, largura de banda ou tamanho de lote. A análise no nível de tensores e camadas ajuda a ler melhor os perfiladores, projetar a arquitetura com mais cuidado e escolher compromissos de forma mais consciente entre velocidade, precisão e complexidade de implementação.

A série "Do MNIST ao Transformer" é especialmente útil para quem quer não apenas executar modelos de outras pessoas, mas compreender a mecânica dos sistemas de IA modernos. Não promete entrada rápida e avisa diretamente: haverá muito código, CUDA, matemática e trabalho manual com memória. Mas é precisamente este formato que fornece a base que será útil tanto na otimização de inferência quanto na leitura de implementações CUDA de terceiros, e ao tentar entender por que algumas decisões arquitetônicas funcionam mais rapidamente que outras.

O que isso significa

Para o público falante de russo, este é um bom sinal: a demanda está se deslocando de tutoriais superficiais para análise de engenharia dos internos da pilha de IA. Quanto mais desses materiais aparecem, menos as LLMs são percebidas como caixas pretas e mais fácil fica para os desenvolvedores fazer a transição do uso de modelos prontos para sua configuração e otimização consciente. Isto é especialmente importante agora, quando a demanda por otimização de GPU e compreensão dos internos de modelos está crescendo rapidamente entre engenheiros praticantes.

História

Perguntas frequentes sobre a notícia

O que se sabe sobre Sobre a terceira parte?

O novo artigo continua a rota do código CUDA de baixo nível para as arquiteturas em que Transformers e LLMs modernos são construídos posteriormente. Em vez de abstrações prontas, o autor propõe olhar diretamente para os cálculos: como os dados ficam na memória, como a GPU inicia operações e por que até uma camada elementar de rede neural requer um grande volume de trabalho de engenharia. Este é um bom formato para quem está cansado de perceber frameworks de ML como mágica de uma única linha de código. A mudança principal nesta parte é a transição de matrizes para tensores.

O que eles implementam manualmente?

A parte prática é construída em torno de código customizado em C++ e CUDA. Não há tentativa de esconder a complexidade por trás de uma interface conveniente: em vez disso, o leitor recebe um caminho da fórmula matemática para a implementação manual. Esta abordagem é útil porque conecta álgebra linear abstrata com etapas específicas de desenvolvimento — colocação de dados, chamadas de kernel, verificação de formas de dimensionalidade e compreensão de onde exatamente erros ou perdas de desempenho aparecem. Sem este elo, é difícil sentir a diferença entre um exemplo de livro d

Por que isso é importante?

O valor de tais análises é que elas eliminam a ilusão de facilidade que os invólucros Python frequentemente criam. Quando um desenvolvedor vê apenas chamadas prontas de bibliotecas, é difícil para ele avaliar o custo de cada operação e entender por que um modelo de repente esbarra em limite de memória, largura de banda ou tamanho de lote. A análise no nível de tensores e camadas ajuda a ler melhor os perfiladores, projetar a arquitetura com mais cuidado e escolher compromissos de forma mais consciente entre velocidade, precisão e complexidade de implementação. A série "Do M

ZK
Zhemal Khamidun — CPO da Alpina Digital, gerente de produto do AlpinaGPT. Cria produtos de IA desde 2019. O Hamidun News é um projeto pessoal que virou um agregador em produção com mais de 6.000 leitores.
✦ Unified AI Workspace · Nomad

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.

Try Nomad AI →Launch Nomad Agent
O que você acha?
Carregando comentários…