Salame: o modelo generaliza?
Treine um decoder de ~125k parâmetros do zero e faça ele responder sobre 'salame' sem nunca ter visto salame numa pergunta. O notebook padrão faz 0/18: sua missão é descobrir por quê.
Palavras que só aparecem no texto bruto ('o salame eh uma comida muito boa') e NUNCA em pergunta/resposta. O modelo tem que responder 'P: o que eh um salame ? R:' com 'salame' como 1ª palavra. 9 palavras × 2 templates de pergunta = 18 testes.
Um GPT minúsculo (RoPE + RMSNorm + SwiGLU, 3 blocos) aprende frases como o feijao eh uma comida muito boa e pares pergunta/resposta sobre 250 comidas. Só que salame, chuchu e pudim aparecem apenas no texto bruto: nunca numa pergunta. A pergunta do lab é se o modelo liga os dois formatos sozinho.
Spoiler honesto: do jeito que o notebook vem, ele faz 0 de 18 no holdout com 93% no treino. Ele decorou "escolher uma comida da lista" em vez de "copiar a comida da pergunta". Mais passos, mais camadas e outro learning rate não mudam qual regra nasce: o lab original testou. O que muda é o que o modelo enxerga: quem tokeniza por caractere (em vez de palavra) já passa da régua na maioria das seeds; quem além disso injeta a cada passo pares P/R com nomes inventados que não existem no texto bruto (dado infinito, decorar é impossível) chega a 70-80%. Depois disso, o ranking premia quem consegue o mesmo com menos parâmetros.
Passo a passo
- Abra no Lab e rode tudo numa T4 (≈4 min). A última célula avalia e envia a métrica sozinha. Veja o 0/18.
- Olhe o acerto no treino vs no holdout: treino alto e holdout zero = decorou por token.
- Alavanca 1: troque o tokenizador de palavra por caractere (célula dos dados:
vocab,ence a decodificação). Aumente os passos (8.000 em ~7 min de T4). - Alavanca 2: gere a cada passo um lote de pares P/R com nomes inventados (sílabas aleatórias) e loss só no nome copiado. Isso força o circuito de cópia.
- Passou da régua? Tente reduzir D, blocos ou passos mantendo o acerto.