1 pontos por GN⁺ 2026-03-03 | 1 comentários | Compartilhar no WhatsApp
  • MicroGPT é uma implementação mínima de um modelo GPT escrita em 200 linhas de Python puro, projetada para permitir a compreensão visual da estrutura central dos grandes modelos de linguagem
  • Treina com um conjunto de dados de 32.000 nomes de pessoas para gerar novos nomes, visualizando passo a passo o processo de tokenização, previsão, cálculo de perda e retropropagação
  • Explica, junto com o código, os principais componentes do GPT, como Softmax, Cross-Entropy Loss, Backpropagation, Embedding e Attention
  • No processo de treinamento, usa o otimizador Adam para reduzir gradualmente a perda e depois gera vários nomes por meio de controle de temperatura (Temperature Sampling)
  • Em uma forma simplificada do algoritmo central de modelos grandes como o ChatGPT, é um material educacional para entender como os LLMs funcionam internamente

Visão geral do MicroGPT

  • Explica visualmente o processo de treinamento e inferência de um modelo GPT com base em um script Python de 200 linhas escrito por Andrej Karpathy
    • Implementado apenas com Python puro, sem bibliotecas externas
    • Inclui os algoritmos básicos de grandes modelos de linguagem como o ChatGPT
  • O texto mostra cada etapa do modelo passo a passo com uma abordagem visual amigável para iniciantes

Conjunto de dados e objetivo do treinamento

  • Usa como dados de treinamento 32.000 nomes humanos (por exemplo, emma, olivia, ava)
    • Cada nome é tratado como um documento, e o modelo aprende os padrões de caracteres dos nomes
    • Após o treinamento, gera novos nomes como “kamon”, “karai”, “anna” e “anton”
  • O modelo aprende relações estatísticas entre caracteres, o comprimento dos nomes e padrões fonéticos de início e fim

Processo de converter texto em números

  • Como a rede neural só processa números, cada caractere é convertido em um ID inteiro
    • a–z são definidos como 0–25, e BOS (Beginning of Sequence) como 26
    • O token BOS marca o início e o fim do nome
  • O tiktoken do GPT-4 tokeniza em pedaços de texto em vez de caracteres, mas o princípio é o mesmo

Previsão do próximo token

  • O modelo prevê o próximo caractere com base no contexto fornecido
    • Ex.: [BOS] → “e”, [BOS, e] → “m”, [BOS, e, m] → “m”, [BOS, e, m, m] → “a”
  • Cada etapa gera pares de entrada (contexto) e alvo (próximo caractere), e esse método é o mesmo usado pelo ChatGPT

Softmax e cálculo de probabilidade

  • A saída do modelo é composta por 27 logits, que são convertidos em probabilidades por meio de Softmax
    • Cada logit é exponenciado e depois dividido pela soma para gerar uma distribuição de probabilidade
    • A operação de subtrair o valor máximo é uma estabilização para evitar overflow
  • O resultado do Softmax representa a probabilidade de cada token aparecer em seguida

Cálculo da perda: Cross-Entropy

  • A precisão da previsão é calculada como −log(p)
    • Quanto maior a probabilidade correta, menor a perda; quanto mais próxima de 0, maior a perda
    • Quando p=1, a perda é 0; quando p→0, a perda tende ao infinito
  • O treinamento avança na direção de minimizar essa perda

Retropropagação (Backpropagation)

  • Calcula quanto cada parâmetro afeta a perda com base no valor da perda
    • A diferenciação é feita por meio de um grafo computacional formado por nós para todas as operações (add, multiply, exp, log etc.)
    • Cada nó armazena as entradas e os valores de derivada local, propagando os gradientes no sentido reverso
  • Exemplo: L = a⋅b + a (a=2, b=3) → o gradiente de a é 4.0 (soma de dois caminhos)
  • O princípio é o mesmo de loss.backward() do PyTorch

Embedding

  • Cada ID de token é convertido em um vetor de 16 dimensões para aprender significado
    • O embedding do token e o embedding posicional são somados e usados como entrada
    • O papel do mesmo caractere muda de acordo com a posição
  • Após o treinamento, caracteres semelhantes (por exemplo, vogais) passam a ter vetores semelhantes

Attention

  • Cada token gera vetores Query, Key e Value
    • A relevância é calculada pelo produto interno entre Query e Key, e os pesos são obtidos com Softmax
    • O Value com soma ponderada é usado como saída
  • Aplica-se uma Causal Mask para não consultar tokens futuros
  • Quatro attention heads operam em paralelo e aprendem padrões diferentes

Estrutura geral do GPT

  • Os tokens de entrada passam pelas seguintes etapas
    1. Embedding + embedding posicional
    2. Normalização RMSNorm
    3. Attention multi-head
    4. Conexão residual (Residual)
    5. MLP (expansão para 64 dimensões → ReLU → redução para 16 dimensões)
    6. Nova conexão residual e cálculo dos logits de saída
  • A conexão residual evita o desaparecimento do gradiente
  • O RMSNorm mantém estável a magnitude das ativações, estabilizando o treinamento

Loop de treinamento

  • Treinamento repetido 1.000 vezes
    • Seleção do nome → tokenização → forward pass → cálculo da perda → retropropagação → atualização dos parâmetros
  • Uso do otimizador Adam
    • Convergência estável por meio de momentum e taxa de aprendizado adaptativa
  • A perda inicial cai de cerca de 3,3 para 2,37
    • Os nomes gerados evoluem gradualmente de aleatórios para formas mais naturais

Inferência (Inference) e amostragem

  • Após o treinamento, começa com BOS e prevê repetidamente o próximo token
    • A geração se repete até que BOS apareça novamente
  • A Temperature controla a diversidade da amostragem
    • Quanto menor, mais determinístico (mais médio); quanto maior, mais criativo, porém mais instável
    • A temperatura adequada para gerar nomes é cerca de 0,5
  • Exemplo de saída: “karai”

Eficiência e escalabilidade

  • O MicroGPT é uma implementação completa simplificada do algoritmo central do GPT
    • A diferença em relação ao ChatGPT é apenas de escala
    • Em vez de 32.000 nomes, usa-se trilhões de tokens; em vez de 4.192 parâmetros, centenas de bilhões de parâmetros
    • Em vez de operações escalares em CPU, usa operações tensoriais em GPU
  • O loop básico é o mesmo: tokenização → embedding → attention → previsão → perda → retropropagação → atualização

Conclusão

  • O MicroGPT é um modelo educacional para aprender intuitivamente o funcionamento interno do GPT
  • Ao simplificar a estrutura complexa dos LLMs em grande escala, permite experimentar diretamente os mecanismos centrais dos modelos de linguagem

1 comentários

 
GN⁺ 2026-03-03
Opiniões do Hacker News
  • Foi dito que, ao fim do treinamento, o modelo gera nomes como "kamon", "karai", "anna" e "anton", mas na prática esses nomes já estão incluídos no dataset
    Parece melhor usar outros nomes — link do dataset

    • Sim, o texto inteiro pareceu como se tivesse sido escrito por IA
    • Obrigado, vou corrigir
  • Dizem que é para iniciantes, mas não sei quantos iniciantes conseguiriam entender esse tipo de explicação matemática
    Por exemplo, a parte que explica a fórmula de cross-entropy loss pareceu complicada demais

    • Eu também não sou especialista, mas tenho algum conhecimento, então acho que acabo usando expressões que podem ser difíceis para iniciantes
      Vou repensar isso
  • A parte que eu não entendo é como um modelo tão simples acaba conseguindo depurar problemas de código arbitrários
    Tenho curiosidade sobre como inferência estatística vira “capacidade de raciocínio”
    Como uso Claude Code todos os dias, agora realmente parece que isso acontece

    • Acho que essa pergunta é o maior mistério da pesquisa em ML
      A ideia central é que, se você sempre consegue prever corretamente a próxima palavra, no fim consegue responder corretamente a qualquer pergunta
      Por isso, recentemente, a área vem evoluindo para buscar a “resposta correta” por meio de abordagens baseadas em aprendizado por reforço, como RLHF e RLVR
    • Não é simplesmente inferência estatística no nível das palavras; trata-se de um processo repetido de inferência hierárquica de estruturas semânticas complexas
    • DNN não é inferência estatística no sentido comum do termo
      Matematicamente, está mais perto de um problema de otimização baseado em cálculo
      Não é apenas aprender estatísticas de texto, e sim encontrar uma solução complexa para prever o próximo token
    • A expressão “inferência estatística” é uma simplificação excessiva
      Existem elementos estatísticos nas redes neurais, mas, assim como o cérebro humano, há algo além disso
  • Li o texto inteiro e, embora houvesse partes úteis, pareceu um caso de “desenhe o resto da coruja”
    Parecia que faltavam as conexões entre os conceitos, mas a estrutura interativa foi boa

    • No começo estava bom, mas logo apareceu uma explicação do tipo “um MLP é uma rede feedforward de 2 camadas, projeta em 64 dimensões, aplica ReLU e depois projeta de volta para 16 dimensões”, e aí a dificuldade subiu de repente
      Seria bom tratar isso com mais profundidade
  • Fiquei me perguntando se hoje em dia virou moda colocar erros de ortografia ou gramática de propósito para mostrar que um texto não foi escrito por LLM
    Tanto no blog do Karpathy quanto neste texto havia vários desses erros

    • Esse tipo de counter signaling provavelmente vai ficar mais comum no futuro
    • Acho que só agora percebi isso
    • Para falar a verdade, Karpathy não é uma figura tão grandiosa assim
      Ele só sustentou por muito tempo o projeto Full Self Driving do Elon, e também não ficou tanto tempo na OpenAI
      Hoje em dia, parece focar quase só em code golf e em criar neologismos
  • O texto original está no blog do Karpathy — link para o texto sobre microGPT

  • Algumas pessoas disseram que era básico demais, e outras, profundo demais, mas
    para alguém como eu, que não entende muito bem como os modelos funcionam, foi uma boa visão geral
    Não entendi tudo completamente, mas parece um bom ponto de partida para começar a estudar

  • Foi um dos tutoriais mais úteis que já vi
    Eu nem programava, mas passei a escrever código graças à IA
    A explicação é simples e clara, o que ajuda muito na hora de pensar no que digitar para a IA

  • Parece que a T-Mobile está bloqueando essa página do blog
    link para a página de aviso de bloqueio

  • Depois de ler o texto, entendi que ele imprime nomes, mas fiquei pensando por que usar justamente geração de nomes como exemplo

    • Nomes são apenas um problema arbitrário para demonstrar o modelo
      Daria para fazer o mesmo com qualquer outro tipo de dado