Passos 0-20K: Uma Dieta Restrita
Duas Fases, Uma Execução
O currículo firehose v2 executa em duas fases dentro de uma única execução de treinamento de 200K passos:
Fase A (passos 0 a 20K). Bandit puxa apenas de 7 fontes de chat & prosa:
- hermes3-general
- hermes3-creative
- hermes3-roleplay
- chat
- smoltalk
- oasst
- gutenberg
Fase B (passos 20K a 200K). O Bandit puxa da mistura completa, todas as 16 fontes, incluindo referência (dictionary), técnica (repo-docs, repo-commits) e social (irc, unweapon).
O que a Dieta Restrita Compartilha
Seis das sete fontes de aquecimento são conversacionais. Uma (gutenberg) é prosa em parágrafos. Juntas, elas compartilham uma forma comum: estrutura de turno (prompt então resposta) ou fluxo narrativo. A distribuição de vocabulário nas 7 fontes parece aproximadamente inglês normal; os alvos de entropia cruzada permanecem em uma faixa estável; as magnitudes do gradiente permanecem previsíveis.
Campo de Configuração
"curriculum_warmup_steps": 20000,
"curriculum_warmup_sources": ["hermes3-general", "hermes3-creative",
"hermes3-roleplay", "chat", "smoltalk", "oasst", "gutenberg"]
Identifique a Fase de Aquecimento
Como era o v1 Sem Warmup
v1: Todas as 16 Fontes desde o Passo 0
A primeira execução de treinamento ANDREA-120M (março-abril 2026) ativou o firehose completo no passo 0: 16 fontes, incluindo dictionary (88K definições de palavras no formato > define X / < X é...), repo-docs (documentação em markdown), repo-docstrings (docstrings em Python) & repo-commits (mensagens de commit git ao lado de chat & prosa).
O Que Deu Errado
Um modelo de 120M recém-inicializado com pesos aleatórios não consegue modelar 16 distribuições distintas ao mesmo tempo. Cada batch de uma fonte estruturalmente diferente produz uma direção de gradiente diferente. Transições de fonte a cada 7-42 passos faziam as magnitudes do gradiente oscilarem wildly; o modelo saltava entre atratores mais rápido do que conseguia formar representações.
Ao passo 80K, v1 produziu: region region region region region region region. A destilação do professor Hermes3-general recompensava (média 340-453) fontes com estrutura de lista repetitiva com as maiores pontuações em entropia cruzada, o que o bandit interpretou como 'esses braços são fáceis.' O bandit alimentou o modelo com mais do que o fez degenerar.
Por Que Restringir a 7 Fontes Ajuda
1. Similaridade de distribuição. Todas as 7 fontes de warmup produzem texto de forma similar (estrutura de turno ou narrativa). As direções de gradiente entre batches permanecem aproximadamente alinhadas.
2. Coerência em primeiro lugar. O modelo aprende a frequência de vocabulário, padrões sintáticos e estrutura de turnos antes de encontrar listas de definições, código ou mensagens do git.
3. Currículo estável. Sinais de recompensa do Bandit em 7 fontes de chat/prosa permanecem em uma faixa comparável; a seleção UCB1 não é sequestrada por uma única fonte com recompensa anômalamente alta.
Quando a Fase B é Ativada
No passo 20K, o modelo produziu ~40-50 amostras (uma por 100 passos), mostra inglês coerente nas amostras e construiu distribuições estáveis de bigramas e trigramas. Agora ele pode absorver o padrão do dicionário > define X / < X is..., blocos de código dos repo-docs e cabeçalhos de commits git sem perder a estrutura de chat por baixo.
Diagnosticar a Falha do v1
v3 Polish define curriculum_warmup_steps = 0
Um Ponto de Partida Diferente
O pivô de polish da v3 no passo 112.619 retomou o treinamento a partir de step_112600.bin com curriculum_warmup_steps definido como 0. À primeira vista, isso parece uma contradição: se o warmup ajudou a v2, por que desativá-lo na fase de polish?
Porque o Modelo Já Aprendeu Coerência
A Fase A compra tempo para um modelo recém-inicializado aprender frequência de vocabulário, estrutura de turnos e coerência de parágrafo. Até o passo 112K, o modelo já fez tudo isso. Auditorias de amostra em 112K mostraram turnos conversacionais coerentes, haiku, Q&A e diálogo. O propósito original do warmup (proteger um modelo novo frágil do caos de gradiente) não se aplica mais.
Polish Reajusta Pesos, Não Reinicia
Polish é uma perturbação de currículo, não uma execução fresca. O mesmo alvo de 200K, mesma arquitetura, mesmo estado do otimizador, mesmo histórico de perda. O que muda: limites superiores e inferiores da fonte são reajustados para favorecer conversa sobre braços de conhecimento. Com o modelo já coerente, toda fonte ativa é justa a partir do passo 112.619 em diante.
Tabela de Resumo
| Fase | curriculum_warmup_steps | Por quê |
|---|---|---|
| v1 | (não presente) | Todas as 16 fontes do passo 0 -> colapso |
| v2 (passos 0-200K) | 20.000 | Proteger pesos recém-inicializados do caos de gradiente |
| v3 base (passos 0-112K) | 20.000 | Mesma proteção que v2 |
| v3 polish (passos 112K-200K) | 0 | Modelo já coerente; não há regime de inicialização frágil para proteger |