| Bellacosa Mainframe e os segredos dos transformers |
☕ Um Café no Bellacosa Mainframe
Transformers: O Que Todo Programador COBOL Precisa Saber Sobre a Arquitetura que Está Revolucionando a Inteligência Artificial
Você Não Está Diante de Mágica. Está Diante de Engenharia de Software em Escala Nunca Vista.
"Toda geração de programadores encontra uma tecnologia que parece mágica. Para quem programava em Assembly, COBOL parecia mágico. Para quem vivia de cartões perfurados, o CICS parecia magia. Hoje, muitos olham para o ChatGPT da mesma forma. Mas, como todo bom sistema, basta abrir a tampa para descobrir que existe muita engenharia por baixo."
Existe uma pergunta que recebo frequentemente quando converso com profissionais de Mainframe:
"Como exatamente um ChatGPT funciona?"
A maioria das respostas que encontramos na Internet são superficiais.
Dizem apenas:
"Ele usa Transformers."
Excelente.
Mas isso é como responder que um IBM Z funciona porque possui processadores.
Não explica absolutamente nada.
Neste artigo vamos desmontar um Transformer da mesma forma que um Programador COBOL gosta de aprender: entendendo cada etapa do processamento.
Você perceberá que muitos conceitos não são tão diferentes do que já conhece há décadas.
A diferença está na escala.
Muito mais do que na ideia.
Pegue seu café.
Hoje vamos abrir o capô do motor.
O maior equívoco sobre IA
Existe uma crença bastante difundida.
Que o ChatGPT "pensa".
Não.
Ele calcula.
Isso muda completamente a forma de enxergar um LLM (Large Language Model).
O Transformer é, essencialmente, uma gigantesca máquina de estatística, álgebra linear e otimização.
Seu trabalho consiste em responder apenas uma pergunta:
"Qual é o próximo token mais provável?"
Nada além disso.
E, surpreendentemente, essa pergunta simples produz resultados extraordinários.
Imagine um Batch COBOL
Vamos fazer uma analogia.
Considere um programa COBOL clássico.
INPUT
↓
Validação
↓
Conversão
↓
Regras de negócio
↓
Atualização do banco
↓
Relatórios
O Transformer segue exatamente essa filosofia.
O texto entra.
Passa por diversas etapas.
Cada etapa transforma um pouco a informação.
No final, surge uma resposta.
Etapa 1 — Tokenização
Nenhum computador entende palavras.
Computadores entendem números.
Quando digitamos
O gato dorme.
Nós enxergamos quatro palavras.
O modelo enxerga algo parecido com:
502
18472
913
25
Cada número representa um token.
Aqui aparece uma surpresa.
Token não significa palavra.
Pode representar:
uma palavra inteira;
metade de uma palavra;
um caractere;
pontuação;
espaços.
Por exemplo:
Mainframe
↓
Main
frame
Ou
Bellacosa
↓
Bella
cosa
Isso reduz enormemente o vocabulário.
Em vez de decorar milhões de palavras, o modelo aprende milhares de pequenas peças reutilizáveis.
É como reutilizar COPYBOOKs.
O Token é o novo Campo
Pense em um registro VSAM.
Você não grava um texto inteiro como um único bloco.
Você possui campos.
Cada campo possui significado.
O Transformer faz algo semelhante.
Cada token torna-se uma unidade independente de processamento.
Etapa 2 — Embeddings
Agora temos números.
Mas ainda não existe significado.
Entra o Embedding.
Imagine uma tabela gigantesca.
Algo como:
TOKEN
↓
VETOR
Só que esse vetor pode possuir milhares de posições.
Algo parecido com:
0.83
-1.24
3.91
0.18
...
2048 posições
Esse vetor representa características aprendidas durante o treinamento.
Curiosamente ninguém programa isso.
O próprio treinamento descobre essas relações.
O "Espaço" onde as palavras vivem
Imagine um mapa.
Nele existem milhões de pontos.
Palavras semelhantes ficam próximas.
Por exemplo:
COBOL
PL/I
Assembler
ficariam relativamente próximas.
Enquanto
Pizza
Astronomia
Dinossauro
estariam muito mais distantes.
Esse espaço vetorial é uma das maiores descobertas da IA moderna.
Etapa 3 — Positional Encoding
Existe um problema.
O Transformer não sabe ordem.
Para ele,
A B C
e
C B A
seriam quase iguais.
Mas ordem importa.
Então adicionamos informação de posição.
É como numerar linhas de um arquivo sequencial.
Cada token recebe:
Embedding
+
Posição
Agora ele sabe:
"Sou a quarta palavra."
Sem isso a linguagem desapareceria.
O Coração do Transformer
Chegamos ao conceito mais importante.
Self-Attention.
Se você entender isso, compreenderá por que os Transformers mudaram toda a Inteligência Artificial.
Self-Attention
Imagine a frase:
João entregou o livro para Maria porque ela precisava estudar.
Quem precisava estudar?
João?
Maria?
O modelo precisa descobrir.
É exatamente isso que a Self-Attention faz.
Cada palavra pergunta:
"Quais outras palavras desta frase são importantes para mim?"
Não existe regra fixa.
Cada frase produz um conjunto diferente de relações.
Parece um JOIN Inteligente
Quem trabalha com DB2 pode imaginar algo semelhante.
Cada token consulta os demais.
Mas não procura igualdade.
Procura relevância.
É como um JOIN baseado em significado.
Queries, Keys e Values
Aqui aparece um conceito inspirado em recuperação de informação.
Cada token gera três vetores.
Query
O que estou procurando?
Key
Quem sou eu?
Value
Qual informação entrego?
Imagine uma biblioteca.
Você chega procurando:
"Livros sobre COBOL."
Essa é sua Query.
Cada livro possui uma Key.
Quando uma Key combina com sua Query...
...o conteúdo daquele livro (Value) é utilizado.
Attention Scores
Agora entra matemática.
O Transformer mede a semelhança entre Query e Key.
Quanto maior a semelhança...
Maior a atenção.
Imagine algo assim:
COBOL
92%
DB2
84%
JCL
70%
Linux
12%
Sorvete
0%
O modelo naturalmente concentra esforço onde existe maior relevância.
Softmax
Esses valores ainda precisam virar probabilidades.
Entra o Softmax.
Ele transforma qualquer conjunto de números em probabilidades cuja soma é exatamente 100%.
Exemplo:
COBOL
61%
JCL
24%
Assembler
9%
Java
6%
Agora o modelo sabe exatamente quanto deve "prestar atenção" em cada token.
Multi-Head Attention
Agora imagine uma equipe inteira de analistas.
Um especialista observa gramática.
Outro observa tempo verbal.
Outro procura relações semânticas.
Outro identifica sujeito e objeto.
Todos trabalham simultaneamente.
Depois unem suas descobertas.
Isso é Multi-Head Attention.
Em vez de uma única visão da frase...
Existem dezenas delas.
Ao mesmo tempo.
Por que isso revolucionou a IA?
Antes dos Transformers existiam as RNNs.
Depois vieram as LSTMs.
Ambas liam texto sequencialmente.
Palavra por palavra.
Como um READ NEXT.
Os Transformers mudaram completamente essa abordagem.
Eles conseguem analisar toda a frase simultaneamente.
Isso permitiu enorme paralelismo.
GPUs adoram processamento paralelo.
Resultado?
Treinamentos centenas de vezes mais rápidos.
Feed-Forward Network
Depois da atenção, cada token entra em uma pequena rede neural.
Ela refina a informação.
É semelhante a uma rotina interna.
Imagine:
PERFORM PROCESSA-TOKEN
Para cada token.
Independentemente dos demais.
Essa etapa extrai padrões mais complexos e prepara os dados para a próxima camada.
Residual Connections
Programadores COBOL antigos conhecem uma boa prática.
Nunca destruir a informação original.
As Residual Connections seguem essa ideia.
Em vez de substituir completamente o resultado anterior...
O Transformer soma:
Entrada
+
Saída
Assim nenhuma informação importante se perde.
Esse pequeno detalhe permitiu construir redes com centenas de camadas.
Layer Normalization
Quem trabalha com processamento numérico conhece problemas de overflow.
Na IA existe algo semelhante.
Valores podem crescer demais.
Ou diminuir demais.
A Layer Normalization mantém tudo equilibrado.
Ela impede que o treinamento fique instável.
É um mecanismo silencioso.
Mas indispensável.
Context Window
Imagine ler um livro.
Se você esquecer tudo que aconteceu duas páginas atrás...
A história deixa de fazer sentido.
O Context Window representa exatamente essa memória temporária.
Modelos antigos:
2 mil tokens.
Depois:
8 mil.
32 mil.
128 mil.
Hoje encontramos modelos capazes de trabalhar com milhões de tokens.
Quanto maior o contexto...
Maior a capacidade de manter conversas longas.
Mas existe um preço.
O custo computacional cresce aproximadamente com o quadrado da quantidade de tokens.
É por isso que surgiram otimizações como FlashAttention e Sliding Window Attention.
Encoder
Alguns Transformers apenas leem.
Eles não escrevem.
Seu objetivo é compreender.
É o caso do BERT.
Imagine um auditor lendo um programa COBOL.
Ele não modifica nada.
Apenas entende.
Esse é o Encoder.
Decoder
Já o GPT pertence à família dos Decoders.
Seu trabalho consiste em gerar texto.
Token após token.
Ele escreve:
Hoje
↓
Hoje vamos
↓
Hoje vamos estudar
↓
Hoje vamos estudar COBOL
Cada palavra exige um novo processamento completo.
Masked Attention
Existe uma regra fundamental.
Durante o treinamento o modelo não pode olhar o futuro.
Imagine um exame.
O aluno não pode consultar o gabarito.
Da mesma forma, quando precisa prever a próxima palavra, o modelo só pode enxergar as anteriores.
Essa restrição torna o aprendizado muito mais realista.
Cross-Attention
Em tarefas como tradução automática, um Decoder consulta constantemente as informações produzidas pelo Encoder.
Imagine:
Entrada:
The Mainframe is reliable.
Encoder:
Compreende toda a frase.
Decoder:
Produz
O Mainframe é confiável.
Enquanto escreve, consulta continuamente o significado construído pelo Encoder.
O Grande Treinamento
Antes de responder qualquer pergunta, o modelo passou meses aprendendo.
São trilhões de tokens.
Livros.
Artigos.
Código-fonte.
Documentação técnica.
Sites.
Papers.
Repositórios.
A tarefa parece simples.
Prever o próximo token.
Mas essa simplicidade força o modelo a aprender:
gramática;
lógica;
sintaxe;
programação;
matemática;
estilo;
contexto;
relações de causa e efeito.
É um gigantesco treinamento estatístico.
Fine-Tuning
Depois disso, surgem especializações.
Imagine pegar um programador COBOL.
Depois treiná-lo apenas em seguros.
Ou apenas em bancos.
Ou apenas em telecomunicações.
É exatamente isso.
O conhecimento geral permanece.
Mas surge especialização.
Hoje existem modelos treinados especificamente para:
medicina;
direito;
engenharia;
segurança;
programação;
IBM Z;
documentação técnica.
Além disso, técnicas como Instruction Tuning e RLHF (Reinforcement Learning from Human Feedback) refinam o comportamento do modelo para seguir instruções, responder de forma útil e reduzir respostas inadequadas.
Next Token Prediction
Aqui está a maior surpresa.
O modelo não escreve um texto inteiro.
Ele apenas responde:
Qual é o próximo token?
Depois repete.
Depois repete.
Depois repete novamente.
Em velocidade impressionante.
Uma resposta de 800 palavras pode representar milhares de ciclos de previsão consecutivos.
Inference
É a fase em que você conversa com o modelo.
Você digita:
Explique VSAM.
Internamente acontecem bilhões de multiplicações matriciais.
Tudo isso para escolher...
Uma única palavra.
Depois outra.
Depois outra.
Até formar a resposta completa.
O que o infográfico não mostra
O excelente infográfico que inspirou este artigo apresenta o fluxo principal, mas um Transformer moderno ainda possui diversos componentes fundamentais que trabalham nos bastidores.
Entre eles estão:
Funções de ativação, como GELU e SiLU, que permitem à rede aprender relações complexas.
Backpropagation, responsável por ajustar bilhões de parâmetros durante o treinamento.
Otimizadores, como AdamW, que definem como os pesos serão atualizados.
Dropout, utilizado para evitar overfitting.
Temperature, Top-k e Top-p Sampling, que controlam criatividade e diversidade na geração de texto.
Mixture of Experts (MoE), onde apenas parte da rede é ativada para cada token, aumentando eficiência.
RAG (Retrieval-Augmented Generation), que permite consultar documentos externos durante a inferência.
Quantização, que reduz o tamanho dos modelos para execução em hardware mais modesto.
FlashAttention, uma otimização que diminui drasticamente o custo da atenção em contextos longos.
Esses elementos ajudam a explicar por que os modelos atuais conseguem ser ao mesmo tempo maiores, mais rápidos e mais eficientes do que os primeiros Transformers apresentados em 2017.
O que um Programador COBOL pode aprender com tudo isso?
Talvez a maior lição não seja técnica.
Seja filosófica.
Durante décadas, nós, desenvolvedores Mainframe, aprendemos que bons sistemas são construídos em camadas.
Entrada.
Validação.
Processamento.
Persistência.
Saída.
Os Transformers seguem exatamente essa filosofia.
A diferença é que, em vez de registros VSAM e tabelas DB2, trabalham com vetores em espaços de milhares de dimensões. Em vez de IFs escritos por programadores, utilizam bilhões de parâmetros ajustados durante o treinamento. Em vez de regras de negócio explícitas, aprendem padrões estatísticos a partir de volumes gigantescos de dados.
Ainda assim, os princípios continuam familiares: modularidade, processamento em etapas, reutilização de informação, otimização de desempenho e preocupação constante com escalabilidade.
Um Café Antes de Ir...
Quando ouvimos falar em Inteligência Artificial, é fácil imaginar algo misterioso ou quase mágico.
Mas, depois de abrir o capô de um Transformer, percebemos que não existe magia.
Existe engenharia.
Existe matemática.
Existe arquitetura.
Existe otimização.
E existe uma ideia brilhante: permitir que cada palavra "converse" com todas as outras para construir contexto antes de decidir qual será a próxima.
Talvez seja justamente por isso que tantos profissionais experientes em Mainframe conseguem compreender rapidamente essa tecnologia. Quem passou anos projetando sistemas robustos, escaláveis e confiáveis reconhece os mesmos princípios fundamentais, apenas aplicados em uma escala sem precedentes.
No fim das contas, um Transformer não substitui a engenharia de software. Ele é uma das maiores realizações da engenharia de software moderna.
E, para um Programador COBOL Padawan, entender essa arquitetura não significa abandonar décadas de experiência. Significa descobrir que muitos dos conceitos que sustentam a Inteligência Artificial já faziam parte do seu repertório — apenas ganharam novas formas, novos algoritmos e uma capacidade de processamento que transformou a maneira como interagimos com computadores.
Porque, como sempre dizemos aqui no Bellacosa Mainframe, tecnologias mudam. Bons princípios de engenharia permanecem.
Sem comentários:
Enviar um comentário