Essencial

Modelar sequências: o ponto de partida

Toda arquitetura de sequência é uma resposta a uma única pergunta — quanto estado um modelo pode carregar de um token para o próximo — e as respostas vão de alguns kilobytes a dezesseis gibibytes.

Atualizada em

01 · Conceito

Conceito

Um modelo está lendo um documento e chegou ao token 40.000. Para prever o token 40.001 ele pode precisar de algo que aconteceu no token 12, ou no token 39.999, ou de nada. A arquitetura não tem como saber de antemão qual dos casos é. Então ela precisa decidir, de uma vez por todas, o que tem permissão de levar adiante de tudo o que já leu.

É essa a pergunta em torno da qual gira a trilha inteira, e vale enunciá-la do jeito mais direto possível: quanto estado um modelo pode carregar entre tokens? Não “qual arquitetura é a melhor” — esse enquadramento esconde a troca. Todo projeto das trilhas 3 e 4, e o arranjo híbrido do espécime deste curso, é uma resposta diferente à pergunta do estado, e cada resposta compra uma coisa e paga com outra.

Duas respostas extremas delimitam o espaço.

A primeira diz que o estado é um vetor de tamanho fixo. Em cada posição o modelo calcula um estado novo a partir do estado velho e do token atual, e o velho é descartado:

ht=f(xt,ht1;θ),yt=g(ht;θy).h_t=f(x_t,h_{t-1};\theta),\qquad y_t=g(h_t;\theta_y).

Os mesmos parâmetros θ\theta agem em toda posição, e é isso que permite a um único modelo lidar com qualquer comprimento. A memória é constante, o trabalho por token é constante, e o token 40.000 custa exatamente o que custou o token 1. A lição 3.2 desenvolve esse projeto.

A segunda diz para guardar um registro de key/value para cada posição. Na hora de prever, use scores de conteúdo aprendidos para misturar esses registros. Isso evita comprimir todo o passado num único estado recorrente e preserva um caminho direto para cada posição armazenada, mas os registros projetados e sua mistura ponderada não garantem recuperação exata. A memória cresce a cada token, e o trabalho de consultar o depósito cresce junto. A lição 3.5 apresenta o mecanismo, e a trilha 4 constrói o Transformer inteiro sobre ele.

Agora torne concreto o limite do estado fixo, porque não é uma preocupação vaga sobre “esquecer” — é aritmética. Considere uma tarefa de cópia: mostre ao modelo uma sequência aleatória de tokens, depois um delimitador, e exija que ele reproduza a sequência exatamente. Tome um vocabulário de 1.000 itens, de modo que cada token aleatório carregue log210009.97\log_2 1000\approx9.97 bits de informação, e um estado de 256 números guardados em bf16, isto é, 512 bytes, ou 4.096 bits, como limite superior absoluto do que ele comporta. Uma sequência de 100 tokens a copiar carrega cerca de 997 bits. Isso cabe dentro de 4.096, então a tarefa é ao menos possível — se o treino encontra a solução é outra questão. Uma sequência de 1.000 tokens carrega cerca de 9.970 bits. Isso não cabe. Nenhuma arquitetura com esse tamanho de estado, nenhuma learning rate, nenhum dataset e nenhuma dose de paciência produzem um modelo que copie 1.000 tokens aleatórios por um canal de 512 bytes, porque a informação simplesmente não está lá para ser recuperada.

Aqui vem o desvio clássico. Um modelo falha numa tarefa que exige informação de muito atrás, e o reflexo é treinar mais tempo, alargar a rede ou culpar o otimizador. Às vezes é isso mesmo. Mas antes de gastar uma semana nisso, faça a conta: estime quantos bits a tarefa exige que atravessem o vão e compare com o que o estado carregado fisicamente comporta. Se a informação necessária excede o canal, pare de ajustar hiperparâmetros e mude a arquitetura. Se cabe com folga e o modelo ainda falha, aí você tem um problema genuíno de aprendizado — que os gradientes que somem da lição 3.2 vão explicar.

O outro extremo também tem um custo, e ele não é sutil em escala de produção. Armazenar cada posição significa memória que cresce sem limite. A lição 7.2 detalha a conta exata para o Qwen3.8-27B: no seu contexto nativo de 262.144 tokens, as keys e values armazenadas de uma única sequência chegam a 16 GiB. Contra isso, as camadas do mesmo modelo que carregam um estado recorrente fixo somam cerca de 144 MiB no total no caminho float32 de referência, e esse número não muda se a sequência tem cem tokens ou um quarto de milhão (Qwen3.8-27B Model Card, 2026). Dezesseis gibibytes contra cento e quarenta e quatro mebibytes, para a mesma sequência, dentro do mesmo modelo. Guarde esse contraste; é o argumento ao qual o resto do curso volta o tempo todo, e as lições 3.6, 4.15 e 4.16 explicam como um único modelo passou a conter as duas respostas ao mesmo tempo.

Alguns cuidados de arrumação fazem parte genuína do problema, e não da periferia dele. Que contexto é legítimo depende da tarefa: um modelo causal prevendo a posição t+1t+1 não pode ver tokens futuros, e essa fronteira precisa ser imposta durante o treino mesmo que todos os alvos já estejam no arquivo. Um encoder bidirecional classificando uma frase completa pode ler os dois lados. Usar informação futura num benchmark offline invalida silenciosamente um sistema que deveria rodar ao vivo, e é um dos erros mais fáceis de cometer e mais difíceis de notar.

Sequências num batch têm comprimentos diferentes, então padding preenche um tensor retangular e uma máscara marca quais posições são reais. O padding não pode alterar nenhum estado, receber peso de attention nem contribuir para a loss. Um bug de mascaramento produz métricas excelentes seja vazando rótulos, seja fazendo média sobre posições de padding fáceis — e a métrica vai parecer maravilhosa o tempo todo.

O treino de modelos autorregressivos normalmente usa teacher forcing: no passo tt o modelo recebe o token anterior verdadeiro em vez da própria amostra. Isso torna os alvos construíveis em paralelo e estabiliza o aprendizado, mas a inferência condiciona nas escolhas anteriores do próprio modelo, então um erro cedo muda todo o contexto seguinte. O descasamento é real e as alternativas não são de graça.

Por fim, a avaliação precisa combinar com a estrutura. Acurácia por token pode esconder baixa validade da sequência inteira; calcular a média da loss de formas diferentes sobre posições com e sem padding muda o número; sequências geradas exigem escolhas de decoding e muitas vezes têm vários alvos aceitáveis. Reporte direcionalidade, limite de contexto, truncamento, mascaramento e como as métricas agregam. Um teste confiável de vazamento vale ser construído uma vez e mantido: monte dois exemplos idênticos até o tempo tt e diferentes depois, e confirme que a representação causal em tt é bit a bit idêntica em modo de avaliação. Se ela se move, informação futura chegou até lá por mascaramento, pré-processamento, normalização ou construção de alvos.

02 · Analogia

Analogia

Um locutor de rádio narra uma partida de futebol um lance por vez. O comentário atual depende do último chute, do placar até aqui, de quem está com a bola e dos cartões anteriores. Um locutor trabalha com uma caderneta de bolso de tamanho fixo, reescrita a cada lance; outro mantém a transcrição completa da partida sobre a mesa e relê o que for relevante antes de falar. A caderneta nunca fica mais pesada e nunca fica mais rica. A transcrição responde qualquer pergunta sobre a partida e cresce a tarde inteira.

03 · Explique de volta

Explique de volta

Enuncie a pergunta central de projeto da modelagem de sequências em termos de estado, contraste as respostas de estado fixo e de guardar tudo em custo e capacidade, e explique por que um estado fixo tem um teto informacional rígido.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Aguardando sua explicação.

Comparar com uma resposta-modelo

Na posição t o modelo precisa de alguma função de x1…xt, e a pergunta de projeto é o que ele pode levar adiante. Um estado de tamanho fixo custa a mesma memória e o mesmo trabalho por token em qualquer comprimento, mas tudo o que o futuro vier a precisar tem de sobreviver dentro de um número limitado de valores — então uma tarefa que exija mais bits do que o estado comporta é impossível independentemente do treino, o que é um argumento de contagem, não uma falha de otimização. Guardar um registro de key/value para cada posição passada preserva acesso aprendido direto a cada registro, com memória e trabalho por token que crescem com o comprimento; não garante recuperação exata. A lição 7.2 mostra que no Qwen3.8-27B isso chega a 16 GiB para uma única sequência de comprimento máximo, contra cerca de 144 MiB de estado recorrente fixo no caminho float32 de referência nas camadas que carregam um. As arquiteturas modernas misturam os dois.

04 · Teste seu entendimento

Teste seu entendimento

01A lição 2.9 insistiu que afirmações sejam sustentadas por evidência em dados retidos. Aplicado à alegação de que um modelo 'tem memória longa', o que valeria como evidência?
Resposta e explicação

Uma tarefa em que a informação necessária fica a uma distância controlada, avaliada em distâncias crescentes sobre dados que o modelo não viu no treino — Um comprimento de contexto anunciado diz o que o modelo aceita, não o que ele usa; só uma sonda controlada em dados retidos distingue as duas coisas.

02Por que um estado de tamanho fixo impõe um teto rígido, e não apenas uma dificuldade?
Resposta e explicação

Se uma tarefa exige levar adiante mais bits do que o estado consegue armazenar, nenhuma quantidade de treino faz caber — É um argumento de contagem sobre capacidade, da mesma família do resultado do XOR na lição 2.1: o limite é representacional, não um problema de otimização.

03O que caracteriza um modelo de sequência causal?
Resposta e explicação

A representação na posição t não pode depender de nenhuma posição depois de t — A causalidade impede o vazamento de tokens que ainda não existiriam no momento da previsão, e precisa ser imposta durante o treino mesmo com o arquivo inteiro disponível.

Conclua o teach-back e acerte o quiz para finalizar a aula.

◎ · Marcador de evidência

Fontes

  1. Jeffrey L. Elman (1990). Finding Structure in Time.
  2. Qwen Team (2026). Qwen3.8-27B Model Card.