Um desenvolvedor criou uma versão do modelo de linguagem Qwen 3.5 4B que carrega um processador funcional dentro de seus próprios pesos. O projeto, chamado Qwenputer, consegue executar aritmética, código C e MicroPython sem chamar uma ferramenta externa, plugin ou sandbox. O cálculo acontece durante a geração normal de texto do modelo.
Divyansh Agrawal, autor do projeto, descreve o trabalho como um modelo Qwen 3.5 4B padrão com um acréscimo. Incorporado aos pesos está um núcleo RISC-V de 32 bits que implementa o conjunto de instruções RV32IM, junto com a extensão Zba e uma pequena unidade para aritmética de números grandes. O processador ocupa 11 camadas na frente das 32 camadas existentes do modelo.
O truque está em uma parte do Qwen 3.5 que já existe. Três em cada quatro camadas de atenção do modelo usam Gated DeltaNet, uma rede neural recorrente linear. Cada cabeça de atenção mantém uma matriz de estado, e esse estado normalmente guarda um resumo misturado e desvanecente do que veio antes. Agrawal descobriu que, ao definir o portão como 1 e a força de escrita como 1, e ao usar chaves one-hot, cada escrita sobrescreve exatamente uma linha e cada consulta lê de volta um valor exato. Isso transforma as camadas em memória endereçável.
A vantagem está no custo. O estado de uma cabeça Gated DeltaNet mantém o mesmo tamanho independentemente da duração de uma conversa, ao contrário do cache de chave-valor em que a atenção padrão se apoia. Agrawal escreve que a CPU mantém seus registradores, sua memória e seu contador de programa nessas linhas.
A ideia de que a regra delta pode funcionar como memória associativa não é nova. Schlag e colegas mostraram em 2021 que a atenção linear com a regra delta funciona dessa forma. A contribuição de Agrawal é tornar essa memória exata e endereçável dentro de um modelo de produção, confiável o suficiente para executar um processador completo.
Não foi necessário treinamento. Um compilador define os pesos diretamente a partir de uma descrição da CPU como uma longa lista de pequenos passos, como ler um registrador, somar dois números ou saltar se for zero. Cada passo se torna parte de uma camada do transformador. As cabeças de atenção fazem as buscas, as unidades feed-forward lidam com a matemática e as cabeças recorrentes armazenam a memória. Cada instrução produz alguns tokens gerados, e a CPU roda à medida que o modelo decodifica esses tokens.
Para fazer o Qwen usar o processador de forma confiável, Agrawal reaproveitou o formato de chamada de ferramentas que o modelo já conhece bem. O Qwen envia instruções à CPU e lê de volta os resultados. Um pequeno driver, chamado RvChat, carrega o firmware no estado recorrente e mantém os tokens de rastreamento do processador fora das camadas de texto do modelo. Os pesos originais permanecem inalterados. Os novos circuitos ficam ao lado deles, em dimensões e camadas extras.
Resultados dos benchmarks
Nos conjuntos de aritmética da DeepMind, o Qwenputer obteve 97,5% na divisão de números grandes. Um Qwen 3.5 4B base com uma ferramenta Python obteve 95% no mesmo teste, e o modelo sem modificações obteve 72,5%. Na multiplicação de números grandes, o Qwenputer obteve 97,5%, a versão com ferramenta Python obteve 100%, e o modelo base obteve 55%. Em um conjunto misto de multiplicação e divisão com problemas mais longos, o Qwenputer alcançou 100%, contra 97,5% da versão Python e 90% do modelo base. Na soma e subtração de números grandes, o Qwenputer igualou a versão Python com 97,5%, contra 87,5% do modelo base.
No benchmark de aritmética de inteiros longos NUPA, o Qwenputer subiu de 48,6% para 100%, o mesmo resultado da configuração com ferramenta Python. Agrawal afirma ter reproduzido cerca de 230.000 posições de saída da CPU em uma máquina de referência e não encontrou divergências. Ele também relata que o texto comum do modelo quase não mudou, com uma divergência em relação ao Qwen base que fica dentro da margem de ruído da medição.
Um sistema de arquivos no modelo
Agrawal também acrescentou um sistema de arquivos experimental. O modelo consegue salvar, anexar, ler, listar e excluir arquivos por meio de operações internas, novamente sem chamadas de ferramentas externas. Os nomes dos arquivos são convertidos por hash em uma de 1.024 posições de um diretório mantido no estado recorrente, e o texto dos arquivos é armazenado em outras cabeças, com oito tokens por linha. O sistema comporta até 512 arquivos, ou cerca de 53.000 tokens de texto.
Como o estado pode ser salvo, um sistema de arquivos pode persistir entre conversas. Agrawal afirma que o Qwen recuperou corretamente fatos que haviam mudado entre conversas em 90% das vezes, contra 30% quando as conversas antigas eram coladas de volta. Nesse teste, o desempenho foi semelhante ao de ferramentas de memória executadas via Python, com 83,3% contra 78,9%. Ele descreve o sistema de arquivos como ainda experimental.
O projeto tem limites claros. O checkpoint tem 18,8 GB, cerca do dobro do tamanho do modelo base, embora a maior parte seja preenchimento com zeros. Ele exige o driver RvChat e ainda não funciona com uma chamada simples de generate(). Cada instrução da CPU custa vários tokens decodificados, de modo que um cálculo grande leva segundos em vez de milissegundos. O executor em lote usado nos benchmarks processou cerca de 3.200 tokens de CPU por segundo em uma GPU L4.
Os próximos objetivos de Agrawal incluem fazer o Qwen escrever Python e executá-lo no MicroPython dentro de seus pesos, além de tornar a CPU mais rápida. O código está no GitHub, e os modelos estão no Hugging Face e no ModelScope.
Este artículo fue escrito con la asistencia de IA.
News Factory APP - noticias agénticas para impulsar tu SEO y AEO.