Um desenvolvedor criou um pequeno modelo de linguagem que acorda antes de qualquer sistema operacional. Todo o motor de inferência cabe nos 512 bytes do registro mestre de inicialização de um PC. Em vez de responder perguntas, o modelo cria o tipo de log que uma máquina Linux imprime ao iniciar: carimbos de data e hora, entradas PCI e eventos ACPI de hardware que nunca existiu.
O projeto, chamado bootgpt, foi publicado no Hacker News sob o rótulo Show HN. O autor também detalhou a construção em uma thread no X.
Como o bootgpt executa um modelo de linguagem dentro de um setor de inicialização?
O setor de inicialização é escrito em assembly feito à mão, sem sistema operacional e sem um runtime de C por baixo. Quando a máquina é ligada, o código carrega um modelo int8 de 11,5 KB a partir dos 23 setores seguintes e o executa no modo real de 16 bits em um 386. O modelo é uma pequena rede neural em nível de caractere, com oito caracteres de contexto e uma camada oculta. O resultado é rudimentar. Uma das execuções de teste produziu linhas como [ 1.883084] NET: Registered protocol family 16, ao lado de fragmentos truncados como usbbore: reg e ACPI: PCI Interrupt Link [LNKA: v/s.xos212.
O que é preciso para testar o bootgpt em um PC?
Quem quiser testá-lo precisa de nasm, QEMU e Python 3 com NumPy. Os scripts de build e execução iniciam o modelo em um emulador. A imagem de disco também é uma imagem de inicialização padrão, por isso pode ser gravada em um pendrive USB com dd e inicializada em qualquer máquina com BIOS. Segundo o autor, o programa lê apenas os próprios setores. Pressionar qualquer tecla reinicia a máquina.
O projeto é dividido em várias partes. Um script chamado corpus_gen.py gera cerca de 3 MB de falsos logs de mensagens do kernel. Cada sessão de treinamento usa uma versão do kernel e um layout de disco, porque logs reais de inicialização se repetem, e o autor afirma que essa repetição é o que faz um modelo tão pequeno parecer coerente. Um script de treinamento, train.py, constrói a rede a partir de embeddings de caracteres, uma camada oculta e uma saída softmax, e então quantiza tudo para int8 usando escalas de potência de dois. Essa escolha permite que o setor de inicialização execute a passagem direta completa com instruções imul e um único idiv.
O script em Python também simula a aritmética inteira exata que o assembly executará, incluindo o gerador de números aleatórios usado na amostragem. O autor afirma que a saída do Python e a do setor de inicialização coincidem caractere por caractere, o que facilita a comparação entre as duas.
O arquivo de assembly, boot.asm, cuida do restante do runtime. Ele usa a interrupção 13h do BIOS para carregar os pesos do disco, a interrupção 10h para imprimir texto e uma função de ativação softclip construída com cdq e idiv. A amostragem escolhe o caractere de maior pontuação e adiciona ruído semeado pelo temporizador do sistema, de modo que a saída muda a cada inicialização. Um script separado, record.py, captura o GIF de demonstração a partir de uma sessão do QEMU sem interface gráfica, por meio do socket do monitor.
Caber tudo em 510 bytes exigiu concessões. O setor de inicialização guarda apenas código. Strings, pesos e a tabela de vocabulário ficam nos setores de dados que vêm depois. O autor descreve essa divisão como a única forma de encaixar a inferência e a parte de integração com o BIOS no espaço disponível.
Como o bootgpt se compara a outros projetos de IA em setores de inicialização?
A programação de setores de inicialização tem longa tradição entre entusiastas. Oscar Toledo conseguiu compactar um jogo de xadrez, um sistema operacional completo e um interpretador BASIC em um único setor de inicialização, e outros projetos encaixaram um compilador C em 512 bytes. O projeto também tem parentes próximos no aprendizado de máquina. O projeto sectorllm inicializa um transformer Llama 2 real, com cinco camadas e atenção, a partir de cerca de 1,2 KB de assembly em modo real, executando o modelo stories260K de Karpathy. Outro projeto, o sectorlisp-nn, executa uma rede treinada no TensorFlow durante a inicialização, sobre um interpretador Lisp. Aplicações UEFI também inicializam diretamente modelos da classe Llama em hardware moderno.
O bootgpt segue um caminho diferente. Todo o seu motor fica no próprio registro mestre de inicialização, e ele não é um contador de histórias de uso geral. Trata-se de uma pequena rede em nível de caractere treinada para uma única tarefa: imaginar o log de inicialização da máquina em que está sendo executada.
Dieser Artikel wurde mit Unterstützung von KI verfasst.
News Factory APP - agentische News für besseres SEO & AEO.