lf.wtf
Relatório de laboratório 01

Pesquisa em IA · SmolLM2-135M

Enxertos de circuito

Escrito e produzido em colaboração com o Claude Opus 5.5

Enxertamos um pequeno circuito nos neurônios de um modelo de 135M, sem treino por gradiente. O modelo é o SmolLM2-135M, e nenhum dos seus pesos originais mudou. Em problemas reservados e lacrados, a pontuação de multiplicação foi de 21.3% para 83.1%.

Onde o enxerto fica no SmolLM2-135MO texto entra como tokens, passa por 30 camadas de neurônios, e a cabeça de saída escolhe o próximo token. O enxerto é um pequeno circuito adicionado ao lado das camadas. Ele lê a camada 20 e soma seu empurrão à última camada, a camada 29, logo antes da cabeça de saída. Os neurônios originais não são alterados.014202129Camadas 0 a 29. Os pontos são uma amostra de cada camada, fora de escala.Tokens deentradaCabeçade saídaPróximotokenEnxerto25,270 a 121,198pesos adicionados,menos de 0.1%132Neurônios originais, inalteradosEnxerto, adicionado ao lado das camadas Onde o enxerto fica no SmolLM2-135MO texto entra como tokens, passa por 30 camadas de neurônios, e a cabeça de saída escolhe o próximo token. O enxerto é um pequeno circuito adicionado ao lado das camadas. Ele lê a camada 20 e soma seu empurrão à última camada, a camada 29, logo antes da cabeça de saída. Os neurônios originais não são alterados.Tokens de entrada014202129Cabeça de saídaPróximo tokenEnxerto25,270 a 121,198pesos adicionados,menos de 0.1%132Neurônios originais, inalteradosEnxerto, adicionado ao lado das camadasOs pontos são uma amostra de cada camada, fora de escala.
Onde o enxerto fica. O SmolLM2-135M tem 30 camadas, cada uma com um bloco de atenção (9 cabeças) seguido de um bloco MLP, trabalhando sobre um estado oculto de 576 números de largura, cerca de 134.5M pesos no total. O enxerto é um pequeno circuito adicionado ao lado das camadas, como um desvio. Nenhum dos neurônios ou pesos originais muda.
  1. A leitura e as duas chaves captam o estado oculto na entrada do MLP da camada 20, na posição em que o modelo está prestes a escrever o próximo algarismo da resposta.
  2. O empurrão do enxerto é somado à saída do MLP da camada 29, a última camada, nessa mesma posição, logo antes de a cabeça de saída escolher o próximo token.
  3. Na adição de três algarismos, a leitura também junta as camadas 14 e 21 (1,728 números no total). A escrita continua entrando na última camada.
Multiplicação, problemas reservados
21.3% → 83.1%
Pesos originais alterados
0
Maior enxerto, fração do modelo
0.09%
Pontos à frente de um enxerto por gradiente do mesmo tamanho
+57.9

Onde isso começou

Uma regra pode servir a muitos fatos

Quero descobrir até onde dá para levar um modelo aberto pequeno rumo ao nível de fronteira editando os pesos dele diretamente e enxertando partes novas, sem uma rodada pesada de treino. Treinar é o caminho de sempre. Você passa bilhões de perguntas e respostas por um modelo e a descida de gradiente descobre as regras sozinha. Mas também dá para abrir um modelo, ler o que ele contém no meio de um problema e mudar isso. Então, será que algumas dessas regras podem ser escritas à mão?

Minha teoria de trabalho é que boa parte do raciocínio roda sobre conjuntos de regras, em que uma regra serve a muitos fatos. O vai-um é o caso mais simples. Ninguém decora todas as somas, porque uma única regra do vai-um cobre todas elas, em todas as casas. Nas minhas anotações, escrevi assim:

Talvez a regra de um fato coincida com a regra de outro.

Fatos custam caro para um modelo pequeno guardar, e regras são baratas. O primeiro circuito de multiplicação deste relatório foi construído para todos os problemas de 2 × 10 até 9 × 99, e tem 25,270 pesos.

As mesmas conversas trouxeram uma segunda ideia que combina com a primeira: um conjunto de regras de aprendizado para aprender algo novo, ao lado de regras de lógica para aplicar o que você já sabe. Este relatório trata do lado da lógica.

O que o modelo já tem

Os algarismos estão lá dentro

Antes de construir qualquer coisa, olhamos o que o SmolLM2 contém no momento em que começa a escrever uma resposta. Uma leitura linear do estado oculto na posição da resposta, ajustada por mínimos quadrados, extrai os algarismos dos dois números quase perfeitamente. Na adição de três algarismos uma camada não bastou, mas juntando as camadas 14, 20 e 21 a leitura acerta cada algarismo em 99% dos problemas novos.

Onde os algarismos ficam

Adição de três algarismos. Fração de problemas novos em que uma leitura linear acerta todos os seis algarismos dos dois números, lendo uma camada de cada vez e depois as camadas 14, 20 e 21 juntas. Cada leitura é ajustada em 1,500 problemas.

76.6% Melhor camada isolada, camada 21

11.8% Última camada, camada 29

97.9% Camadas 14, 20 e 21 juntas, e 99.2% quando essa leitura é ajustada em 3,000 problemas

Todas as 30 camadas em tabela
CamadaOs seis algarismos certos
00.0%
14.3%
226.0%
350.1%
452.2%
547.1%
631.4%
720.4%
818.8%
918.2%
1027.1%
1127.9%
1239.1%
1347.2%
1474.8%
1570.1%
1664.0%
1763.0%
1864.2%
1963.5%
2072.9%
2176.6%
2271.5%
2362.9%
2448.8%
2530.5%
2619.0%
2713.9%
2811.7%
2911.8%

Então o modelo leu a pergunta. O que ele não consegue fazer de forma confiável é combinar os algarismos: o vai-um, o empresta-um, a tabuada. Essa etapa de combinar é a parte que nós fornecemos.

Como um enxerto funciona

Quatro partes, nenhuma treinada por descida de gradiente

  1. LeituraUma leitura linear para cada algarismo dos dois números, tirada do próprio estado oculto do modelo.
  2. RegrasUma pequena tabela de consulta para cada algarismo da resposta. O algarismo das unidades vem dos dois algarismos das unidades; o das dezenas vem dos algarismos das dezenas mais o vai-um, e assim por diante.
  3. EscritaUm empurrão em direção ao token do algarismo certo na última camada do modelo. O modelo continua escrevendo a própria resposta. O enxerto só inclina qual algarismo vem a seguir.
  4. ChavesDuas chaves ajustadas decidem quando o enxerto está ligado. Elas são ajustadas para disparar só enquanto o modelo escreve a resposta a esse tipo de problema, e para ficar desligadas em outras tarefas de matemática, problemas com enunciado, código e texto comum.

As leituras e as chaves são ajustadas por mínimos quadrados em forma fechada, e as tabelas de regras são escritas por um programa (à mão, no primeiro enxerto de multiplicação). O arquivo do modelo base nunca é tocado. Cada enxerto é adicionado ao lado dele.

Dentro do enxerto, para 38 + 47Ler os algarismos, aplicar as regras, empurrar o algarismo certo e deixar as duas chaves decidirem quando o empurrão está ligado. O empurrão é somado na camada 29 e o modelo escreve 85.1Leituraprimeiro número: 3, 8segundo número: 4, 7algarismos restantes: 22Regrasunidades: 8 + 7 = 15escreve 5, vai 1dezenas: 3 + 4 + 1 = 83Escritaprimeiro algarismo:empurra 8próximo algarismo:empurra 54Chavesempurrão × chave × chaveligado: nesta respostadesligado: outros textosSomado na camada 29. O modelo escreve 85. Dentro do enxerto, para 38 + 47Ler os algarismos, aplicar as regras, empurrar o algarismo certo e deixar as duas chaves decidirem quando o empurrão está ligado. O empurrão é somado na camada 29 e o modelo escreve 85.1Leituraprimeiro número: 3, 8segundo número: 4, 7algarismos restantes: 22Regrasunidades: 8 + 7 = 15escreve 5, vai 1dezenas: 3 + 4 + 1 = 83Escritaprimeiro algarismo: empurra 8próximo algarismo: empurra 54Chavesempurrão × chave × chaveligado: nesta respostadesligado: outros textosSomado na camada 29. O modelo escreve 85.
Dentro do enxerto, com 38 + 47 como ilustração. A leitura encontra 3, 8, 4 e 7, e que restam dois algarismos da resposta. As regras dão 8 + 7 = 15, então o algarismo das unidades é 5 e vai 1, e o algarismo das dezenas é 3 + 4 + 1 = 8. Na primeira posição da resposta o enxerto empurra 8, e na seguinte empurra 5. O empurrão é escalado para cada casa. Duas chaves multiplicam o empurrão, então ele só fica ligado enquanto o modelo escreve a resposta a esse tipo de problema. O modelo continua escrevendo a própria resposta.

Como cresceu

De um enxerto a um pipeline

  1. Enxerto de neurôniosA primeira tentativa adicionou 24 neurônios novos à última camada para fornecer o vai-um na adição de dois algarismos. Ela se sustentou nos problemas selados, +19.7 pontos. Funcionava ajustando de leve a aritmética do próprio modelo, então o passo seguinte foi fazer a aritmética diretamente.
  2. Circuito conectado à mãoPara a multiplicação, escrevemos as tabelas de regras à mão e as alimentamos com as leituras de algarismos do próprio modelo. A primeira versão fez 83.5% nos problemas reservados e selados, contra 21.3% antes. Uma segunda versão, com chaves melhores, fez 83.1%, e a pior mudança dela em outras tarefas de matemática foi de −0.75 ponto.
  3. Regras encontradas por um programaUm programa de busca de regras recebeu 340 problemas resolvidos, na forma de algarismos e respostas. Para cada algarismo da resposta, ele procurou o menor conjunto de entradas que o determina. Encontrou sozinho o vai-um da adição, o empresta-um da subtração e a cadeia de vai-um da multiplicação. Também descobriu que o algarismo das dezenas é a regra das unidades reaproveitada nos algarismos das dezenas, mais uma etapa de vai-um: uma regra servindo a vários algarismos, que é a ideia de onde tudo isso partiu. O circuito de multiplicação dele fez 82.7% nos problemas reservados, a menos de meio ponto do circuito conectado à mão.
  4. Mesmo pipeline, novas habilidadesA subtração e a adição de dois algarismos passaram pelo mesmo script, com configurações copiadas da multiplicação e sem ajuste. A adição de três algarismos precisou de três correções, cada uma testada antes de o conjunto reservado dela ser aberto: a leitura juntando três camadas, uma segunda chave e uma força de empurrão definida para cada casa.
Como funciona o buscador de regrasEntram 340 problemas resolvidos. Para cada algarismo da resposta, o programa encontra o menor conjunto de entradas que o determina, descobre que o algarismo das dezenas reaproveita a regra das unidades mais um vai-um, e compila as regras em tabelas de consulta.340 problemas resolvidos38 + 47 = 8516 + 29 = 4552 + 31 = 83...Entradas mínimas por algarismounidades ← as duas unidadesdezenas ← as duas dezenas+ vai-um das unidadesRegra das unidades, reutilizada uma casa acimaTabelas de consulta8, 7 → 5, vai 16, 9 → 5, vai 12, 1 → 3, vai 0... Como funciona o buscador de regrasEntram 340 problemas resolvidos. Para cada algarismo da resposta, o programa encontra o menor conjunto de entradas que o determina, descobre que o algarismo das dezenas reaproveita a regra das unidades mais um vai-um, e compila as regras em tabelas de consulta.340 problemas resolvidos38 + 47 = 8516 + 29 = 4552 + 31 = 83...Entradas mínimas por algarismounidades ← as duas unidadesdezenas ← as duas dezenas+ vai-um das unidadesRegra das unidades, reutilizada uma casa acimaTabelas de consulta8, 7 → 5, vai 16, 9 → 5, vai 12, 1 → 3, vai 0...
O buscador de regras. Ele recebe 340 problemas resolvidos, na forma de algarismos e respostas. Para cada algarismo da resposta, encontra o menor conjunto de entradas que o determina: o algarismo das unidades depende só dos dois algarismos das unidades. Ele descobre que o algarismo das dezenas reaproveita a regra das unidades mais um vai-um, e compila as regras em tabelas de consulta. As linhas de exemplo são ilustrativas.

Por que funcionou

Por que o programa conseguiu encontrar as regras

As regras não vieram do modelo. Um programa separado as encontrou, fora do modelo, a partir de 340 exemplos resolvidos. A parte do modelo é fornecer os números, que o enxerto lê do seu estado oculto. Quatro coisas tornaram isso possível.

  1. Quebrar os problemas em algarismosComo números inteiros, 7 × 48 = 336 é um fato entre 720 problemas possíveis. Quebrado em algarismos, aparece um padrão: o último algarismo da resposta depende só do 7 e do 8. Essa foi a escolha mais importante que fizemos, e combina com o SmolLM2, que guarda cada algarismo como um token próprio.
  2. Pedir a explicação mais simplesPara cada algarismo da resposta, o programa procura o menor conjunto de algarismos de entrada que sempre o decide, e só mantém uma regra se ela vale em todos os exemplos. Uma regra baseada em dois algarismos tem cerca de 100 entradas possíveis, e 340 exemplos preenchem quase todas, então ela funciona em problemas novos que repetem os mesmos pares. Decorar significaria usar todos os algarismos de entrada, com muito mais combinações do que 340 exemplos conseguem cobrir.
  3. Reaproveitar o que já tinha achadoPara o algarismo seguinte, ele tenta a regra das unidades de novo e verifica se um sinal extra explica o que sobra. Esse sinal acabou sendo o vai-um. Ninguém disse a palavra ao programa; ele encontrou a variável porque os dados precisavam de uma. Repetir o passo para o algarismo das centenas dá a cadeia de vai-um.
  4. Conferir em problemas inéditosAs regras foram testadas em problemas que não tinham visto e depois compiladas em tabelas de consulta dentro do enxerto.

O treino por gradiente não tem uma atração embutida pela explicação mais simples, e com poucos exemplos ele decorou. Na multiplicação, o enxerto por gradiente do mesmo tamanho fez 72.7% nos próprios problemas de treino e 25.1% nos 140 problemas de desenvolvimento. O circuito fez 94.7% nos problemas a partir dos quais foi construído e 88.7% nos mesmos problemas de desenvolvimento.

Nós definimos a divisão em algarismos, e o programa encontra regras dentro dela. O próximo passo rumo a habilidades além da aritmética é um programa que também encontre o jeito certo de dividir um problema.

Resultados

Cinco habilidades, em problemas que ninguém usou para ajustar

Os problemas reservados de cada habilidade foram separados antes de qualquer construção, e nada foi ajustado com eles. Cada nota usa duas sementes e quatro execuções por problema, com as mesmas configurações de amostragem para o modelo sozinho e com o enxerto. O conjunto de multiplicação foi aberto uma vez para a primeira versão conectada à mão, e mais uma vez para as duas finais.

Acerto nos problemas reservados, SmolLM2-135M

Fração de problemas respondidos exatamente certo. 140 problemas na multiplicação, 500 nos demais.

  • SmolLM2 sozinho
  • Com o enxerto
  • Mesmo enxerto, fiação embaralhada
Multiplicação7 × 48, regras conectadas à mão
21.3% → 83.1%+61.8
Multiplicação7 × 48, regras encontradas por um programa
21.3% → 82.7%+61.3
Subtração, dois algarismos83 − 27, regras encontradas por um programa
11.3% → 68.3%+57.1
Adição, dois algarismos38 + 47, regras encontradas por um programa
49.7% → 86.5%+36.8
Adição, três algarismos347 + 285, regras encontradas por um programa
26.1% → 83.7%+57.6
Os mesmos resultados em tabela
HabilidadeProblemasSmolLM2 sozinhoCom o enxertoGanho, pontos (limite inferior de 95%)Fiação embaralhadaPesos adicionados
Multiplicação, regras conectadas à mão7 × 4814021.3%83.1%+61.8 (+56.1)2.4%25,2700.019%
Multiplicação, regras encontradas por um programa7 × 4814021.3%82.7%+61.3 (+55.5)6.3%32,5190.024%
Subtração, dois algarismos83 − 2750011.3%68.3%+57.1 (+54.0)7.8%32,4460.024%
Adição, dois algarismos38 + 4750049.7%86.5%+36.8 (+33.8)16.7%32,4760.024%
Adição, três algarismos347 + 28550026.1%83.7%+57.6 (+54.6)21.4%121,1980.090%
  • Nenhum peso original mudou, e não houve treino por gradiente. Cada enxerto adiciona de 25,270 a 121,198 pesos, de 0.019% a 0.090% do modelo. O teto que nos impusemos foi de 0.1%.
  • O controle embaralhado é o mesmo enxerto com a fiação misturada. Ele ficou igual ou abaixo do modelo sozinho em todas as habilidades, de 2.4% a 21.4%, então os pesos extras não fazem nada sem as regras certas.
  • Os três enxertos de dois algarismos (multiplicação, subtração e adição) também rodam juntos em um só modelo, 92,496 pesos no total. Cada um manteve seu ganho nos problemas de desenvolvimento. A pior mudança em outras tarefas de matemática foi de −0.25 ponto, e 200 de 200 prompts sem relação deram a mesma resposta de antes.

Os ganhos são pareados por problema, com um limite inferior bootstrap unilateral de 95%. A verificação de efeitos colaterais cobre outros oito conjuntos de aritmética e de problemas com enunciado, além de GSM8K e código. Os prompts sem relação são 200 prompts do IFEval, respondidos com decodificação gulosa. As regras e as previsões de cada execução foram anotadas antes do resultado dela.

Contra o treino por gradiente

Três confrontos diretos

O treino por gradiente é o jeito padrão de adicionar uma habilidade, então o colocamos como concorrente. Cada enxerto por gradiente foi ajustado numa grade de configurações antes do teste.

Multiplicação, problemas reservados e selados

140 problemas, 2 sementes, 4 execuções cada. O primeiro circuito conectado à mão contra dois enxertos treinados por gradiente e ajustados.

SmolLM2 sozinho
21.3%
Enxerto por gradiente, mesmo tamanho14 neurônios
25.6%
Enxerto por gradiente no teto de 0.1%77 neurônios
23.7%
Enxerto de circuito25,270 pesos, sem gradiente
83.5%

O circuito ficou à frente por 57.9 e 59.8 pontos.

Multiplicação contra ajuste fino com LoRA

140 problemas de desenvolvimento, 2 sementes, 4 execuções cada. O LoRA usou a melhor configuração de uma busca em grade.

SmolLM2 sozinho
28.5%
Ajuste fino com LoRA115,200 pesos treinados
39.4%
Enxerto de circuito25,270 pesos, sem gradiente
88.7%

49.3 pontos à frente, com limite inferior de 95% de +42.8, usando menos de um quarto dos pesos.

Subtração de dois algarismos

500 problemas de desenvolvimento, 2 sementes, 4 execuções cada. As configurações do circuito foram copiadas da multiplicação, sem ajuste.

SmolLM2 sozinho
11.35%
Enxerto por gradiente, 14 neurônios
48.15%
Enxerto por gradiente, 77 neurônios133,056 pesos, ajustado
65.0%
Enxerto de circuito32,446 pesos, sem ajuste
64.98%

Empate com um enxerto por gradiente quatro vezes maior, e cerca de 17 pontos à frente do de 14 neurônios.

As regras de subtração do circuito vieram de 340 problemas. Os enxertos por gradiente treinaram com 1,500, os mesmos 1,500 em que as leituras de algarismos do circuito foram ajustadas.

Ainda em andamento

Transplantes de modelos maiores

Também estamos tentando trazer habilidades de modelos maiores. O Qwen3.5-4B acertou 300 de 300 desses problemas de multiplicação na nossa verificação, então tentamos traduzir um conjunto de neurônios dele para o SmolLM2. Separadamente, mapeamos um sinal de correção do Qwen3.5-4B para o Qwen3.5-0.8B em problemas com enunciado do ensino fundamental. Nenhum dos dois funcionou ainda, e os dois seguem em aberto. Até agora, o modelo maior foi mais útil como guia para mostrar onde o pequeno falha.

O que é um enxerto

Uma calculadora alimentada pela leitura do próprio modelo

O enxerto faz a aritmética por conta própria, a partir de números que o modelo já contém. O SmolLM2 não aprende a multiplicar. O enxerto funciona com a forma simples da pergunta (“Quanto é 347 + 285?”), e as chaves o mantêm desligado em problemas com enunciado de propósito. Por enquanto, tudo isso foi feito em um só modelo.

O método se transfere para novas habilidades. As regras são encontradas por um programa a partir de 340 exemplos, compiladas em tabelas e colocadas com as mesmas configurações para cada habilidade. O próximo passo é o lado do aprendizado: fazer o SmolLM2 usar um fato que recebe no prompt.