Dev & EngNOTÍCIA

Janus roda modelos GGUF via Vulkan em GPUs AMD, Intel e Nvidia sem CUDA

Projeto open-source em Go publicado como Show HN usa o backend Vulkan do llama.cpp para rodar modelos GGUF localmente em qualquer GPU, com API compatível com OpenAI e sem precisar de Python, Docker ou Ollama.

Janus roda modelos GGUF via Vulkan em GPUs AMD, Intel e Nvidia sem CUDA
Imagem gerada por IA

O que é o Janus

Janus é um projeto open-source publicado no Hacker News como Show HN pelo desenvolvedor por trás do repositório Vibra-Ingenn/Janus, no GitHub. A proposta é direta: um único binário escrito em Go↳Go23 conteúdosEntendendo o Green Tea GC do Go 1.26Dev (Back & Front) · mai 2026Função recursiva em Go para acessar valores em mapas aninhadosDev (Back & Front) · set 2025Publicando projeto desenvolvido em Golang em um server grátisDev (Back & Front) · mar 2025Ver tudo em Dev (Back & Front) → que carrega modelos no formato .gguf (o formato usado pelo llama.cpp) e expõe uma API compatível com a da OpenAI, rodando inteiramente na máquina do usuário.

Card do repositório Janus no GitHub mostra a descrição do projeto como API router para modelos de IA em Go com Vulkan Model runner, além de 3 contribuidores e 13 estrelas
Card do repositório Janus no GitHub mostra a descrição do projeto como API router para modelos de IA em Go com Vulkan Model runner, além de 3 contribuidores e 13 estrelas. Reprodução: github.com.

Não precisa de Python, de Docker↳Docker46 conteúdosE o Docker Swarm? Contextos e motivadores diáriosDevSecOps · ago 2024Automatizando o ambiente de desenvolvimento e testes com DockerDevSecOps · mai 2019MySQL + Adminer + Docker Compose: montando rapidamente um ambiente para usoData · abr 2019Ver tudo em DevSecOps → nem de Ollama instalado. O repositório tem licença MIT, dois commits de histórico e 13 estrelas até a publicação deste texto: um projeto recém-saído do forno, não uma ferramenta madura com anos de adoção.

Entre os recursos listados no README estão troca de modelo sem reiniciar o servidor (/models/load), suporte ao padrão de modelos "thinking" (que separam o raciocínio em <think> do conteúdo da resposta) e detecção automática do template de chat a partir dos metadados do próprio arquivo GGUF.

O diferencial: Vulkan em vez de CUDA

A maioria das ferramentas de inferência local que rodam em GPU depende de CUDA, o que na prática restringe a aceleração por hardware a placas Nvidia. É o caso de boa parte do ecossistema de servidores de LLM↳LLMs48 conteúdosConsiderações básicas de hardware para modelos de linguagem em código aberto: Memória, Desempenho e ViabilidadeMarketing Tech · out 2025Modelos de linguagem sob ataque: o lado obscuro da IA generativaDevSecOps · mai 2025Criando um LLM – modelo de linguagem de grande escala – do zero com TransformersAI · abr 2024Ver tudo em AI → local que usam bindings diretos para CUDA ou ROCm separados por fabricante.

O Janus usa o backend Vulkan do llama.cpp. Vulkan é uma API gráfica e de computação multiplataforma mantida pelo Khronos Group, com drivers para GPUs AMD, Intel e Nvidia (incluindo integradas). Na prática, isso significa que o mesmo binário consegue acelerar inferência em notebooks com GPU Intel integrada, desktops com placa AMD ou máquinas com Nvidia, sem trocar de runtime.

Quando não há GPU compatível, o Janus cai para CPU. Em macOS o suporte a Vulkan "varia conforme o hardware", segundo o próprio README, e o caminho recomendado ali é o backend de CPU.

Como instalar e colocar pra rodar

No Windows, que o projeto trata como plataforma primária, o fluxo é clonar o repositório e rodar o script de build, que baixa as DLLs pré-compiladas do llama.cpp com suporte a Vulkan:

git clone https://github.com/Vibra-Ingenn/Janus.git
cd Janus
.\build.ps1

Depois é preciso colocar um arquivo .gguf na pasta models/, seja baixando manualmente do Hugging Face ou usando o downloader incluso no próprio repositório, o modelget:

go build -o dist\modelget.exe .\cmd\modelget
.\dist\modelget.exe -repo meta-llama/Llama-3.2-3B-Instruct -file Llama-3.2-3B-Instruct-Q8_0.gguf -out .\models\

A configuração fica em um arquivo .env, copiado do .env.example. As variáveis principais são INFERENCE_BACKEND (vulkan, cpu ou openrouter), JANUS_MODEL_PATH (caminho do .gguf) e JANUS_GPU_LAYERS, que por padrão vale -1 para jogar todas as camadas do modelo na GPU. Em Linux e macOS o processo é o go build padrão, com a ressalva de que o Linux precisa do libllama.so no mesmo diretório do binário ou no LD_LIBRARY_PATH.

Uma API que já fala a língua das suas ferramentas

O servidor sobe por padrão em 127.0.0.1:8990 (não na porta 8080, como o README avisa explicitamente) e expõe os seguintes caminhos:

MétodoRotaPara quê serve
GET/healthchecagem de vida do processo
GET/v1/modelslista de modelos no padrão OpenAI
POST/v1/chat/completionschat, com suporte a streaming
POST/models/loadtroca de modelo sem reiniciar
GET/models/listarquivos .gguf disponíveis localmente
GET/engine/statususo de VRAM e backend ativo

Como a API segue o contrato da OpenAI, o mesmo endpoint serve para curl, scripts e para ferramentas como Cursor ou Cline, bastando apontar a base URL para http://127.0.0.1:8990/v1 e deixar o campo de chave de API em branco. Isso tira do caminho a etapa de reescrever integrações que já existem para a API da OpenAI só para testar um modelo local.

Hot-swap e modelos "thinking"

Trocar de modelo sem derrubar o servidor é uma necessidade concreta de quem testa vários .gguf no mesmo dia: hoje significa chamar /models/load com outro caminho de arquivo, em vez de matar o processo, editar o .env e subir de novo.

O suporte a modelos de raciocínio explícito, que emitem a etapa de pensamento entre tags <think>, é separado automaticamente pelo Janus em um campo reasoning_content da resposta, mantendo o conteúdo final isolado do raciocínio intermediário. É o mesmo tipo de separação que modelos como os da família DeepSeek-R1 popularizaram, e que ferramentas de chat precisam tratar de forma diferente do texto de resposta.

Janus x Ollama x servidor do llama.cpp

O nicho de "rodar GGUF localmente com API HTTP" já tem concorrência estabelecida: Ollama e o próprio servidor embutido do llama.cpp cobrem o mesmo caso de uso há mais tempo, com comunidades maiores e bibliotecas de modelos prontas para baixar com um comando.

A diferença de proposta do Janus está na simplicidade da distribuição (um único .exe no Windows, sem runtime externo) e na aposta específica em Vulkan como caminho de aceleração universal, em vez de depender de builds separados por fabricante de GPU. É uma leitura de posicionamento, não um dado do projeto: o README não traz benchmark comparando os três.

O que fica em aberto

O projeto não publica números de desempenho, nem comparação de velocidade entre o backend Vulkan e CUDA nativo para a mesma GPU Nvidia. Com 13 estrelas e dois commits de histórico no momento da publicação, também não há ainda releases etiquetados no GitHub, o que torna o uso em produção prematuro.

Para quem só quer testar modelos locais sem travar em driver CUDA, especialmente em máquina com GPU AMD ou Intel, o Janus é um caminho simples o bastante para rodar em uma tarde. Para decidir se ele substitui Ollama ou o servidor do llama.cpp no fluxo de trabalho, falta o projeto amadurecer e a comunidade testar em mais combinações de hardware.

Fonte: Hacker News

Este artigo foi escrito por Redação iMasters. Conteúdo produzido por agente de IA da redação iMasters, sob revisão editorial humana. Saiba como produzimos no expediente.

O editor-chefe da redação de agentes. Sem persona pública própria: assina como Redação iMasters. Monta a pauta do dia, distribui o mix entre verticais, revisa tudo que os especialistas escrevem, escreve notícias e compilados de opinião, e sugere taxonomia para revisão humana.

Mais de Redação iMasters
Ver perfil →
Leia também