basal-omni local: Ollama, llama.cpp e Mac no RTX 4090
Executei o basal-omni localmente com Ollama e RTX 4090. Veja como instalar, quais versões escolher e os resultados do teste com prompts em polonês.
👁 120 leituras
O basal-omni é um modelo de decisão de Remek Kinas: em vez de escrever textos, ele escolhe uma resposta de uma lista e informa o nível de confiança. Desde 19 de outubro, versões menores podem ser executadas sem uma GPU de servidor, com Ollama, llama.cpp ou em um Mac. Fiz isso no meu RTX 4090 com a versão mini em GGUF e rodei o mesmo conjunto de solicitações em polonês que usei antes para avaliar o Jev e outros modelos de decisão. A seguir, mostro as instruções que funcionaram para mim, os requisitos de hardware e os resultados.
Resumo (teste de 19/10/2026)
- basal-omni-1.0-mini Q8_0: arquivo de 7,9 GB; no Ollama, ocupou 5,1 GB de memória da GPU.
- Categoria: 42 de 47 solicitações em polonês; urgência: 47 de 50; escolha de ferramenta: 10 de 10.
- Mediana de 137 ms por decisão; teste completo, com 60 consultas, em 20 segundos.
- O Ollama sozinho não basta: só o mecanismo basal-serve fornece respostas com probabilidades.
- No Mac: versão MLX mini (8,6 GB) ou GGUF Q8_0 em um Mac com 16 GB de memória.
Qual versão escolher para cada hardware
Todos os arquivos estão na conta de Remek no Hugging Face, sob a licença Apache-2.0. As versões GGUF e MLX aceitam apenas texto, sem imagens ou áudio.
| Variante | Arquivo | Tamanho | Onde usar |
|---|---|---|---|
| mini GGUF Q8_0 | basal-omni-1.0-mini-GGUF | 7,9 GB | Ollama, llama.cpp, GPU NVIDIA, Mac, CPU |
| mini GGUF Q6_K | basal-omni-1.0-mini-GGUF | 6,2 GB | Os mesmos usos, com um pouco menos de fidelidade ao original |
| max GGUF Q8_0 / Q6_K | basal-omni-1.0-max-GGUF | 12,7 / 9,8 GB | Ollama, llama.cpp |
| mini / max MLX 8-bit | -MLX | 8,6 / 13,6 GB | Mac com Apple Silicon |
| 1.1-max MLX 8-bit | basal-omni-1.1-max-MLX | 13,6 GB | Mac com Apple Silicon |
| mini / max FP8 | -FP8 | 12 / 14 GB | vLLM em servidor NVIDIA |
| mini / max / ultra bf16 | Pesos originais | cerca de 16 / 24 / 62 GB de memória da GPU | PyTorch; versão completa com imagem e áudio |
O autor lançou apenas as quantizações Q8_0 e Q6_K, pois foram as únicas aprovadas no teste de fidelidade ao original. Em 10.606 decisões com 2 a 10 opções, a Q8_0 escolhe a mesma opção que a versão bf16 em 98,7% dos casos; a Q6_K, em 97,1%. Q5_K_M e Q4_K_M não passaram. A maior versão, ultra (31 bilhões de parâmetros), não tem arquivo GGUF disponibilizado pelo autor.
Como instalar no Windows com GPU NVIDIA e Ollama
Fiz isso em 19 de outubro, no Windows 11, com Ollama 0.40.5 (é necessária a versão 0.35 ou posterior) e Python 3.12 instalado pelo uv.
- Configure o ambiente e instale o mecanismo basal 2.2. No modo Ollama, o modelo é executado pelo Ollama na GPU, então para mim bastou instalar a versão do PyTorch para CPU:
uv venv --python 3.12 env uv pip install --python env/Scripts/python.exe torch --index-url https://download.pytorch.org/whl/cpu uv pip install --python env/Scripts/python.exe "basal @ https://github.com/rkinas/basal/archive/refs/tags/v2.2.0.tar.gz" - Baixe o modelo (cerca de 8 GB). Basta o arquivo Q8_0 e os arquivos auxiliares: Modelfile, tokenizer, calibração e basal.json. Baixei cada item separadamente, mas é mais simples usar a ferramenta hf, instalada junto com o mecanismo:
hf download Remek/basal-omni-1.0-mini-GGUF --local-dir basal-omni-1.0-mini-GGUF --exclude "*Q6_K*" - Registre o modelo no Ollama com o arquivo Modelfile fornecido no repositório:
cd basal-omni-1.0-mini-GGUF ollama create basal-omni-1.0-mini:q8_0 -f Modelfile.Q8_0 cd .. - Inicie o servidor basal antes do Ollama:
basal-serve --model ./basal-omni-1.0-mini-GGUF --mode ollama --ollama-model basal-omni-1.0-mini:q8_0 --port 8000 - Faça a primeira consulta com Python, usando apenas a biblioteca padrão. O formato é o mesmo da API do Jev, com o endpoint
/v1/systemone. O texto abaixo é uma tradução do prompt original testado em polonês; não é um novo teste em português:import json, urllib.request body = {"state": "O painel está fora do ar desde as 9h, erro 500, toda a equipe de vendas está parada.", "questions": { "dzial": {"type": "choice", "instructions": "Para qual departamento a solicitação deve ser encaminhada?", "criteria": {"platnosci": "pagamentos e faturas", "awaria": "algo não está funcionando tecnicamente", "sprzedaz": "dúvidas antes da compra"}}, "pilne": {"type": "noul", "instructions": "É necessário agir ainda hoje?", "criteria": {"true": "sim", "false": "não"}}}} req = urllib.request.Request("http://127.0.0.1:8000/v1/systemone", json.dumps(body, ensure_ascii=False).encode("utf-8"), {"Content-Type": "application/json; charset=utf-8"}) print(json.load(urllib.request.urlopen(req))["answers"])
Você recebe a opção escolhida, a probabilidade de cada opção e o nível de confiança (confidence
- Caracteres poloneses no terminal do Windows. Uma consulta enviada com curl pelo Git Bash terminou em erro de decodificação UTF-8. Com Python e a codificação definida explicitamente, funcionou sem problemas.
- Usar apenas
ollama runnão resolve. Nesse caso, o modelo retorna somente texto livre. O basal-serve calcula as respostas estruturadas com probabilidades, lendo as probabilidades dos códigos das opções em um único token. - Limites do modo Ollama: no máximo 20 opções por pergunta e 4096 tokens por consulta. Para documentos mais longos e até 255 opções, o autor recomenda o modo llama.cpp.
Como usar o basal com llama.cpp ou em um Mac
- llama.cpp no próprio processo: instale o complemento
basal[gguf](llama-cpp-python 0.3.36 ou posterior) e executebasal-serve --model ./basal-omni-1.0-mini-GGUF --mode gguf --gguf basal-omni-1.0-mini-GGUF/basal-omni-1.0-mini-Q8_0.gguf --port 8000. Para usar uma GPU NVIDIA, é preciso compilar o llama-cpp-python com suporte a CUDA. Não testei essa variante. - Mac com Apple Silicon: use o modo
--mode mlxcom o complementobasal[mlx]e o repositório -MLX, ou use GGUF com Metal. Segundo o autor, a versão mini Q8_0 funciona em um Mac com 16 GB de memória. No M4 Pro, a versão MLX mini chega a 0,73 decisão por segundo com 8 consultas simultâneas e leva 173 ms para uma consulta individual. Também não verifiquei isso, pois não tenho um Mac.
Meu teste: 50 solicitações em polonês e 10 decisões sobre ferramentas
Usei o conjunto de 13 de outubro, com o qual avaliei modelos do ranking da Artificial Analysis: 50 solicitações a uma loja online, com 7 categorias e indicação de urgência, e 10 conversas em que o assistente deve decidir se responde por conta própria, chama uma ferramenta, pede mais informações ou recusa. As perguntas e o gabarito são os mesmos; não alterei nada para o basal. Como no teste anterior, calculei a categoria com 47 solicitações, porque três itens do gabarito eram discutíveis. O guia Modelos de decisão de IA explica isso em mais detalhes. O basal também errou esses itens, assim como os 11 modelos avaliados em 13 de outubro. Todo o teste usou solicitações em polonês; as traduções apresentadas aqui não foram testadas em português.
| Modelo | Categoria (de 47) | Urgência (de 50) | Ferramentas (de 10) |
|---|---|---|---|
| basal-omni-1.0-mini Q8_0 (local, 19/10) | 42 | 47 | 10 |
| Jev 1.13 (API, 13/10) | 41 | 46 | 10 |
| Microsoft-Decision-1 (API, 13/10) | 44 | 42 | 10 |
| Decider v1.1 27B (API, 13/10) | 44 | 48 | 10 |
| d1 da Liquid AI (API, 13/10) | 42 | 43 | 10 |
| Claude Haiku 5.5, LLM convencional (API, 13/10) | 45 | 46 | 10 |
- O basal menor fica no meio da tabela entre os grandes modelos de decisão via API. Acertou uma solicitação a mais que o Jev 1.13 e duas a menos que o Microsoft-Decision-1 e o Decider. Ainda assim, tem 4 bilhões de parâmetros e roda em uma GPU doméstica.
- Bom resultado em urgência: 47 de 50. Só o Decider e o GPT-6 Luna Decisions tiveram resultado superior, com 48 cada. O basal não classificou como urgentes uma sobrecarga tripla da placa gráfica (probabilidade de 0,05) nem uma cafeteira soltando faíscas (0,34), e marcou como urgente, sem necessidade, uma mensagem de spam sobre criptomoedas.
- Erros de categoria: bolo de casamento com status “em preparação” (vendas em vez de entrega), cafeteira soltando faíscas (falha técnica em vez de reclamação), oferta de listas de e-mail (vendas em vez de spam), pedido de reembolso por uma compra cancelada e código de desconto que não funciona.
- Confira a confiança nos seus próprios dados. Entre as solicitações com confiança de pelo menos 0,9, o basal acertou 35 de 40; o Jev, 37 de 39. Entre os erros considerados confiáveis estão a oferta de listas de e-mail (0,95) e o código de desconto que não funciona (0,97). Por isso, a nova ferramenta basal-calibrate é importante: ela ajusta os limites com base nos seus exemplos.
- Velocidade: mediana de 137 ms por decisão; a primeira consulta levou 12 segundos, incluindo o carregamento do modelo na GPU. Medi os modelos via API na Polônia em 13 de outubro, incluindo a rede (Jev: 361 ms), então não é uma comparação direta. No uso local, porém, você não paga por tokens e os dados não saem do computador.
O teste ocupou a GPU por 20 segundos. Fiz uma única rodada, com uma única ordem de opções e a calibração incluída no arquivo GGUF. Depois do teste, liberei a memória ocupada pelo modelo.
Quando faz sentido usar o basal localmente
- Os dados não podem sair da empresa - como solicitações de clientes, documentos e e-mails.
- Você precisa tomar muitas decisões que consistem em escolher uma opção: categoria, urgência, assunto, aprovação de texto ou ferramenta a chamar.
- Você tem algumas centenas de exemplos rotulados para calibrar os limites e encaminhar automaticamente apenas as decisões confiáveis.
Expliquei de onde veio o modelo e como ele se saiu no ranking no artigo basal-omni em 1º lugar entre os modelos abertos no JevBench. Reuni outros modelos que você pode executar no seu próprio computador no hub IA local.
Fontes
- Hugging Face: basal-omni-1.0-mini-GGUF, instruções e medições de fidelidade
- Hugging Face: basal-omni-1.0-max-GGUF
- Hugging Face: página do basal-omni-1.0-mini
- GitHub: basal 2.2, notas da versão (19/10/2026)
- GitHub: rkinas/basal, instalação e modos de uso
- Meu teste: 50 solicitações e 10 decisões sobre ferramentas, RTX 4090, Ollama 0.40.5, 19/10/2026


