
WASTE: motor de inferência open source para modelos maiores que a memória
O que é o WASTE
WASTE (Weight-Aware Streaming Tensor Engine) é um motor de inferência open source em C, sem dependências externas de inferência, projetado para rodar modelos cujos pesos são muito maiores que a memória disponível na máquina. O primeiro modelo suportado é o Kimi K3, um mixture-of-experts com 2,78 trilhões de parâmetros: o checkpoint original de 1,42 TB foi convertido em um container de 982 GB e executado completo em um MacBook Pro com 64 GB de memória unificada. Não se trata de versão destilada, podada ou reduzida.
Como funciona
K3 possui 896 experts roteados, mas apenas 16 são ativados por token em cada camada. O WASTE separa o modelo em duas partes: o "trunk" (tronco) permanece residente em RAM, enquanto os pesos dos experts ficam em armazenamento NVMe e são lidos sob demanda pelo router. A RAM restante funciona como cache limitado de experts.
Cada token acessa aproximadamente 17 GB de dados de experts, tornando a largura de banda do armazenamento e o comportamento do cache os fatores centrais de performance. O resultado atual é de cerca de 0,32 tokens por segundo - insuficiente para uso interativo, mas suficiente como prova de conceito.
Descobertas do desenvolvimento
O projeto documenta abertamente o que funcionou e o que não funcionou:
- SSD externo vs. interno: benchmarks convencionais não representavam o padrão de acesso real. O SSD externo via USB atingiu 0,94 GB/s, enquanto o interno chegou a 12,78 GB/s. A limitação era a ponte USB, não o NVMe.
- Cache de experts: abaixo de 17 GB de cache, a taxa de acerto é efetivamente zero. Acima disso, aumentar indefinidamente piora a performance porque o sistema operacional começa a comprimir e paginar memória. O orçamento ideal na máquina de teste foi ~46 GB, não os 64 GB totais.
- Trunk em 3 bits: liberou memória e aumentou hit rate do cache, mas degradou a qualidade de geração porque K3 não foi treinado com quantização consciente para o trunk.
- GPU/Metal: implementado e verificado, mas 22% mais lento que CPU para esse workload de operações pequenas e dependentes.
- Otimização que funcionou: em vez de expandir pesos quantizados para float antes do uso, o WASTE opera diretamente sobre a representação de quantização vetorial residual, construindo tabelas de dot-product parciais por codebook. Isso reduziu a inferência do Kimi-Linear 48B de 2,15 s/token para ~0,12 s/token.
Contexto e próximos passos
O Kimi-Linear 48B roda no mesmo hardware a ~8,9 tok/s com container de 19 GB e orçamento de 8 GB de RAM - mais próximo do caso de uso prático. O K3 serve como caso de referência extremo.
Prioridades futuras incluem melhorar recuperação de experts, reduzir bytes lidos por token, suportar mais arquiteturas, publicar containers pré-convertidos e simplificar distribuição. O projeto está sob licença Apache 2.0 no GitHub (sqliteai/waste).