Gleam.br Wiki

GBR: ADR-0010 Adoção do Framework `candle` (Rust Puro) para Inferência Local Soberana | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: ADR-0010 Adoção do Framework candle (Rust Puro) para Inferência Local Soberana

  • *Status:* Aceito
  • *Data:* 2026-05-01

*Contexto:*

A implementação anterior baseada no motor llama.cpp (C++) exigia uma infraestrutura de build complexa e instável em ambientes Windows (CMake, Ninja, MinGW, Win32 ABI fixes). Além de gerar uma dívida técnica massiva no build.rs, a integração manual de C++ via NIF expunha a Erlang VM (BEAM) a riscos de falha de segmentação (Segmentation Faults) e picos de memória imprevisíveis, violando o princípio de "Sistemas Lúcidos" do Gleam-BR.

*Decisão:*

  1. *Abandono do motor C++:* Remoção completa das dependências de llama.cpp e das abstrações llama-cpp-2.
  2. **Migração para candle (Hugging Face):** Adoção do framework de ML escrito 100% em Rust. O candle permite a inferência local de modelos GGUF e SafeTensors utilizando apenas o compilador cargo, eliminando dependências de sistema operacional.
  3. *Gestão de Vocabulário Nativa:* Integração da crate tokenizers para processar BPE (Byte Pair Encoding) diretamente em Rust, garantindo que o Agente Gleam-BR permaneça auto-contido.
  4. *Isolamento de Estado Mutável:* O motor de pesos neurais quantizados (ModelWeights) é encapsulado num Mutex dentro da struct LlamaState, protegida pelo ResourceArc da BEAM, permitindo inferência multithread segura nas schedulers do Erlang.

*Consequências:*

  • *Positivas:* Estabilidade inabalável da VM (crashes de inferência agora são panics Rust capturáveis ou erros lógicos, não quedas de sistema). Processo de build simplificado para apenas um comando just build-native. Preparação nativa para compilação cruzada para WebAssembly (WASM).
  • *Negativas/Riscos:* Pequena perda marginal de performance bruta comparada às rotinas de Assembly C++ altamente otimizadas. Perda da funcionalidade nativa de "Gramáticas GBNF" (exigindo implementação manual de Logits Processors futuramente para o MCP).

Reflexão do Arquiteto: O Próximo Nível

Agora que o motor é *Pure Rust*, o "Cérebro" está sincronizado com o "Sistema Nervoso" (Gleam).

Nós provamos o conceito do Oráculo em modo REPL e Web. A nossa infraestrutura P2P já foi estressada com injeção de caos e sobreviveu. O DuckDB está engolindo o monorepo via AST Chunking.

Qual próximo passo?

  1. *Dar "Mãos" ao Oráculo:* Implementar o suporte real ao MCP no gleambr_web para que a IA comece a executar just build ou gleam test sozinha após uma alteração sugerida.
  2. *O Swarm de Conhecimento:* Fazer dois nós P2P trocarem o arquivo .duckdb quantizado (conhecimento compartilhado) de forma automática.