O kimi-k3-in-c é um motor de inferência em C99 para rodar o Kimi K3 localmente em uma CPU. FareedKhan-dev criou o projeto em 2026-08-01. O código executa um modelo de 2.78 trilhões de parâmetros com pico de 8.24 GB de RAM, embora precise de um checkpoint de 1.56 TB. A ferramenta serve para quem aceita uma execução lenta e quer evitar GPU, Python e serviços externos.

O código troca velocidade por uso controlado de memória

O motor lê o checkpoint em shards .safetensors e transmite os dados durante a inferência. O usuário precisa apontar --trunk para o diretório do trunk empacotado; esse parâmetro ativa o streaming. Sem ele, o programa carrega cerca de 113.5 GB do trunk na memória, mesmo quando os limites configurados são menores.

O projeto separa o orçamento entre camadas fixadas, anel de streaming e cache LRU dos routed experts. --trunk-gb define o orçamento do trunk, enquanto --cache-gb define o espaço para a cache. Os presets laptop, desktop, workstation, server e max ajustam os dois valores de uma vez.

O código implementa atenção linear e mantém o estado recorrente KDA entre os tokens. Com --incremental, ele reaproveita a KV cache e esse estado, em vez de recalcular todo o prefixo a cada token. A compilação usa OpenMP, e os tópicos do projeto também citam AVX2.

O motor inteiro mede 176 KB. Ele não usa BLAS, framework de aprendizado profundo nem GPU. A inferência acontece na CPU local, e o checkpoint permanece como o único arquivo grande indispensável para gerar texto.

A instalação é simples, mas o checkpoint muda a conta

A instalação começa com o clone do repositório e o comando make -j. O projeto reúne sete arquivos C, um compilador e OpenMP. O usuário não precisa instalar Python nem baixar dados para compilar e testar o motor.

A suíte de testes roda sem checkpoint e sem rede. Ela valida teacher forcing, decodificação gulosa e execução incremental; o README registra 32 de 32 posições no primeiro teste e 20 de 20 tokens nos dois seguintes. O resultado esperado é “ENGINE MATCHES THE REFERENCE EXACTLY”.

Para gerar texto, o programa aceita --prompt, --prompt-file ou --ids. --prompt e --prompt-file exigem --tok, que aponta para o diretório com os arquivos do tokenizer. --prompt-file preserva os bytes do arquivo e evita a recodificação que o shell pode aplicar aos argumentos.

--ids recebe os IDs diretamente e dispensa o tokenizer. O modo também forma o canal reproduzível usado pelos testes. O programa exige exatamente uma dessas três opções; passar nenhuma ou mais de uma encerra a execução com erro 2.

O modelo é base, não um assistente com template de conversa. Depois de um texto como “ Paris.”, o motor continua a sequência em vez de produzir uma resposta formatada. A geração aceita até 4096 tokens, e o prompt pode chegar a 32768 tokens.

O README diz que mais memória não muda a resposta, apenas o tempo de execução. A ferramenta, portanto, não serve para quem precisa de baixa latência ou não consegue armazenar um checkpoint de 1.56 TB. Ela atende melhor a quem quer testar a implementação localmente e aceita esperar.

O repositório tinha 2.071 estrelas, 336 forks e 7 issues abertas. Ele tinha 3 dias de idade, recebeu o último commit em 2026-08-01 e chegou à versão v0.1.0 em 2026-08-02. A licença Apache-2.0 permite usar, alterar e redistribuir o código sob seus termos, mas a pouca idade ainda limita o histórico disponível para avaliar manutenção.

Fontes

CApache-2.0Infraestrutura e MLOpsTrendshift
Como fazemos: nossa equipe monitora diariamente os repositórios de código aberto em maior alta e produz esta cobertura com apoio de modelos de linguagem, sempre a partir de dados verificados na fonte primária — repositório, documentação oficial e ranking público. Os números de estrelas e a posição no ranking refletem o momento da coleta. Entenda o método.