Intenção: 'o Gui está com fome'
Treine um modelo char-level de 4,7M parâmetros que lê uma mensagem informal de WhatsApp e diz se é fome, diversão, esporte ou outra coisa.
165 mensagens escritas por outra pessoa, que leu só as regras (nunca o corpus). O modelo gera a frase de resposta; só conta ponto se a frase for EXATAMENTE uma das 77 do banco e a intenção bater com o gabarito, que fica na Arena.
Entrada: bateu uma larica. Saída: Hum, parece que o Gui está com fome. Não é classificador com softmax: é um modelo de linguagem char a char (RMSNorm + RoPE + SwiGLU, 6 camadas, d=256) que aprende a completar input→resposta. O corpus (40 mil pares) foi gerado 100% por script, sem LLM.
A régua é cega: 165 frases escritas por alguém que leu só o REGRAS.md do lab. O notebook baixa só os inputs; o gabarito fica na Arena. A resposta gerada precisa ser uma das 77 frases do banco, letra por letra, senão não conta.
O notebook padrão (2.500 passos, ~8 min de T4) chega em 78 a 83%, varia por rodada. A régua pede 85%: falta pouco, e o lab original passou de 90% nas 3 classes com o dobro de passos e corpus maior. Onde o modelo erra é metáfora ("a raquete tá juntando poeira") e "outro" com palavra das classes ("reunião na pizzaria, vou de terno").
Passo a passo
- Abra no Lab (T4). O notebook baixa o corpus e o heldout da Arena, treina 2.500 passos (~8 min) e envia as 165 respostas: você deve ver algo entre 78 e 83%.
- Veja o placar por registro (template · reformulado · natural · outro). Natural é onde dói.
- Alavancas: mais passos, ctx, batch, lr, d/camadas. O corpus é fixo, mas você pode filtrar ou balancear.
- Formato inválido alto? O modelo não decorou as 77 frases: treine mais ou baixe a temperatura (greedy).
Dados da missão
- intencao_treino.jsonl · corpus de treino, 40.000 pares input/resposta
- intencao_heldout.jsonl · 165 inputs da régua cega (sem gabarito)
- intencao_banco.json · as 77 respostas válidas, por intenção e família de tempo
O notebook baixa esses arquivos sozinho de https://arena.dankicode.com/dados/.