Executando o Google Gemma 4 localmente com o Headless CLI do LM Studio e o Claude Code
(ai.georgeliu.com)- Gemma 4 usa uma arquitetura mixture-of-experts, ativando apenas parte dos parâmetros para oferecer inferência de alto desempenho mesmo em hardware mais modesto
- LM Studio 0.4.0 introduz o novo Headless CLI (
llmster), permitindo baixar, carregar, conversar com modelos e executar um servidor de API sem o app desktop - Por meio de uma API compatível com OpenAI e Anthropic, é possível servir o Gemma 4 como servidor local e usar o Claude Code como assistente de código totalmente offline
- Ajustes finos de hardware, como comprimento de contexto, offloading para GPU e requisições paralelas, permitem equilibrar desempenho e eficiência de memória
- A inferência local baseada em modelos MoE permite revisão rápida de código e testes de prompt sem custo de API, surgindo como tecnologia central para montar um ambiente de IA offline para desenvolvedores
Executando o Google Gemma 4 localmente — integração do novo Headless CLI do LM Studio com o Claude Code
-
Por que executar localmente
- APIs de IA em nuvem têm limitações como custo, rate limits, privacidade e latência de rede
- Para trabalhos iterativos rápidos, como revisão de código, rascunhos e testes de prompt, executar modelos localmente é vantajoso
- A execução local oferece as vantagens de custo de API zero, nenhum envio de dados para fora e disponibilidade constante
-
O Gemma 4** usa uma arquitetura mixture-of-experts (MoE), na qual apenas 4B dos parâmetros de um modelo 26B são ativados**, permitindo alto desempenho mesmo em hardware mais modesto
- Em um MacBook M4 Pro (48GB), foi registrada velocidade de 51 tokens por segundo; no Claude Code, fica um pouco mais lento
-
Família de modelos Gemma 4
- O Google lançou o Gemma 4 em 4 famílias de modelos, otimizadas para diferentes hardwares
- A série E (E2B, E4B) usa Per-Layer Embeddings e oferece suporte a entrada de áudio (reconhecimento de voz e tradução)
- O modelo dense 31B alcança 85,2% no MMLU Pro e 89,2% no AIME 2026
- O modelo 26B-A4B ativa apenas 8 de 128 especialistas (3,8B de parâmetros), operando com qualidade de nível 10B e custo de nível 4B
- Com 82,6% no MMLU Pro, 88,3% no AIME e Elo 1441, ele se aproxima do modelo dense 31B e compete com modelos de 400B+
- Suporte a contexto de 256K, entrada de visão, chamada de função e configuração de modo de raciocínio o torna adequado para inferência local
-
Principais mudanças no LM Studio 0.4.0
-
A introdução do mecanismo de inferência independente chamado
llmster** permite execução completa via CLI sem o app desktop**- Com a CLI
lms, é possível baixar modelos, carregá-los, conversar e executar o servidor - Principais recursos:
llmster daemon: gerencia carregamento de modelos e inferência em segundo plano- Processamento de requisições paralelas: lida com várias requisições simultâneas por meio de batching contínuo
- Stateful REST API: mantém histórico de conversa pelo endpoint
/v1/chat - Integração MCP: suporte local ao Model Context Protocol
- Com a CLI
-
-
Instalação e download do modelo
- Comando de instalação:
curl -fsSL https://lmstudio.ai/install.sh | bash - Executar o daemon:
lms daemon up - Atualizar runtimes:
lms runtime update llama.cpp,lms runtime update mlx - Baixar o modelo Gemma 4 26B:
lms get google/gemma-4-26b-a4b - A quantização padrão é Q4_K_M (17.99GB)
- Depois do download, carregue com
lms load google/gemma-4-26b-a4b
- Comando de instalação:
-
Gerenciamento de modelos locais
- Ver a lista de modelos instalados:
lms ls - A saída de exemplo inclui Gemma 4, Qwen 3.5, GLM 4.7 Flash e vários outros modelos MoE
- Modelos MoE permitem inferência eficiente usando apenas parte dos parâmetros ativos
- Ver a lista de modelos instalados:
-
Execução de conversa e desempenho
- Iniciar conversa:
lms chat google/gemma-4-26b-a4b --stats - Exemplo de saída:
Tokens/Second: 51.35 Time to First Token: 1.551s - Com 51 tok/sec e 1,5 s até a primeira resposta, a velocidade é suficiente para uso interativo
- Iniciar conversa:
-
Verificando estado do modelo e memória
- Ver os modelos carregados:
lms ps - Exemplo: uso de 17.99GB de memória, contexto de 48K, 2 requisições paralelas e TTL de 1 hora
- Principais itens visíveis na saída JSON (
lms ps --json | jq):"architecture": "gemma4""quantization": {"name": "Q4_K_M", "bits": 4}"vision": true,"trainedForToolUse": true"maxContextLength": 262144,"parallel": 2
- Ver os modelos carregados:
-
Estimativa de memória conforme o comprimento de contexto
- A opção
--estimate-onlypermite prever o requisito de memória - O modelo base consome cerca de 17.6GiB, e a cada duplicação do contexto o uso cresce 3~4GiB
- Em 48K de contexto, são necessários cerca de 21GiB; em 256K, 37.48GiB
- Exemplo de comando:
lms load google/gemma-4-26b-a4b --estimate-only --context-length 48000 - A relação linear entre comprimento de contexto e memória é útil para planejar capacidade
- A opção
-
Ajuste de carregamento por hardware
-
Comprimento de contexto
- Defina dentro do limite de memória, descontando o uso do sistema operacional (4~6GB)
- Ex.:
lms load google/gemma-4-26b-a4b --context-length 128000
-
Offloading para GPU
- Apple Silicon usa arquitetura de memória unificada, então
--gpu=1.0pode usar toda a GPU - Em sistemas NVIDIA, é possível dividir conforme o limite de VRAM, por exemplo com
--gpu=0.5
- Apple Silicon usa arquitetura de memória unificada, então
-
Requisições paralelas
- Várias requisições simultâneas são tratadas com batching contínuo
- No GUI, ajuste Max Concurrent Predictions (padrão 4)
- No caso do Gemma 4, em um sistema de 48GB, contexto de 48K e paralelismo 2 são adequados
-
Descarregamento automático por TTL
- Com
--ttl 1800, o modelo é descarregado automaticamente após 30 minutos de inatividade - O padrão é 1 hora, e 0 ou -1 desativam o recurso
- Com
-
Salvar valores padrão por modelo
- No app desktop, em My Models → ícone de configurações, é possível salvar padrões de GPU, contexto e Flash Attention
-
Speculative Decoding
- Em modelos MoE, é ineficiente; no Gemma 4, recomenda-se deixar desativado
- Em testes com Mixtral, houve melhora de 39% em tarefas de código, mas queda de 54% em tarefas matemáticas
-
Flash Attention
- Reduz o uso de memória do cache KV, permitindo contextos longos
- Em Apple Silicon, ao ativar, há economia de memória
-
-
App desktop do LM Studio
- No GUI, é possível visualizar status do servidor, carregamento de modelos, endpoints de API e stream de logs
- Inclui protocolo compatível com Anthropic (
POST /v1/messages) - O recurso de visão permite analisar imagens
- Exemplo: ao analisar uma imagem do Timezone Scheduler, foram gerados 504 tokens a 54.51 tok/sec
- Resultado do monitoramento do sistema:
- Uso de memória: 46.69GB/48GB, swap 27.49GB
- GPU em 90%, CPU a 91°C, GPU a 92°C
- Consumo de energia de 23.56W (CPU 11.06W, GPU 13.32W)
- A arquitetura de memória unificada elimina a necessidade de copiar dados entre CPU e GPU
-
Servindo o modelo como servidor de API
- Iniciar servidor:
lms server start - API compatível com OpenAI:
http://localhost:1234/v1 - Endpoint compatível com Anthropic:
POST /v1/messages - Mudar a porta:
--port 8080 - O carregamento JIT do modelo faz carregamento automático na requisição e descarregamento automático após o TTL
- Stream de logs em tempo real:
lms log stream --source model --stats - Também é possível acessar a partir de outros dispositivos na rede, com suporte a autenticação por token de API
- Iniciar servidor:
-
Integração com o Claude Code
- Por meio do endpoint compatível com Anthropic, é possível executar o Claude Code com um modelo local
- Adicione a função
claude-lmao~/.zshrc:export ANTHROPIC_BASE_URL=http://localhost:1234 export ANTHROPIC_MODEL="gemma-4-26b-a4b" ... claude "$@" - Todas as chamadas de modelo do Claude Code (Opus, Sonnet, Haiku) são roteadas para o Gemma 4
- Configuração de contexto de 48K, limite de saída de 8K tokens e ambiente somente local
- Ao executar
claude-lm, é possível usar um assistente de código totalmente offline - A velocidade é menor que na nuvem, mas é adequado para revisão de código, pequenas alterações e tarefas exploratórias
-
Principais aprendizados
- Modelos MoE são centrais para a inferência local: o Gemma 4 26B-A4B entrega qualidade de nível 10B com custo de nível 4B
- O daemon headless permite um workflow totalmente baseado em CLI
- O comprimento de contexto é a principal variável de uso de memória
--estimate-onlyajuda a evitar OOM- O endpoint compatível com Anthropic permite executar o Claude Code totalmente offline em ambiente local
-
Limitações
- O
lms chatnão mostra diretamente o nome do modelo - O contexto padrão de 48K é conservador; se houver memória sobrando, recomenda-se expandir
- A execução local do Claude Code não substitui completamente a API da Anthropic; há restrições para trabalhos maiores
- Em sistemas de 48GB, há pressão de memória e uso de swap; recomenda-se 64GB ou mais
- O
-
Próximos passos
- Estão planejados testes comparativos com Qwen 3.5 35B, GLM 4.7 Flash e Nemotron 3 Nano
- Resumo do procedimento:
curl -fsSL https://lmstudio.ai/install.sh | bash lms daemon up lms get google/gemma-4-26b-a4b lms chat google/gemma-4-26b-a4b --stats - Integração com Claude Code: adicione a função
claude-lme depois executeclaude-lm - Pode ser usado para montar um workflow local de IA e integrá-lo a webapps e ambientes de desenvolvimento
1 comentários
Comentários do Hacker News
É possível rodar um LLM localmente usando diretamente o llama.cpp server e aproveitá-lo no Claude Code ou em outros agentes de CLI
Foi organizado um guia completo de configuração testando LLMs open-weight recentes, como o Gemma4, em um MacBook M1 Max 64GB
O modelo 26BA4B foi o mais interessante nesse hardware e mostrou uma velocidade de geração de tokens (40 tok/s) quase duas vezes maior que a do Qwen3.5 35BA3B
Mas os resultados no benchmark tau2 ficaram abaixo das variantes do Qwen (68% vs 81%), então é provável que não seja adequado para tarefas complexas centradas em ferramentas
Estou usando mlx_vlm e vMLX, mas no Claude Code recebo erro 400 Bad Request
Queria saber se no llama-server esse problema não aconteceu
Tenho a sensação de que os modelos locais já passaram do estágio de apenas “ser possível” e entraram numa fase de uso realmente confortável
Especialmente o fluxo com LM Studio headless é impressionante. Ele permite usar inferência local em ferramentas reais
Estou desenvolvendo um agente open source de programação via CLI chamado cloclo, que oferece suporte a vários backends, como LM Studio, Ollama, vLLM, Jan e llama.cpp
Os modelos locais estão se aproximando de uma combinação ideal: uso diário pessoal e barato, enquanto os modelos em nuvem ficam para tarefas de alto desempenho
O ponto central aqui não é tanto o próprio Gemma 4, mas o fato de que o harness e o modelo ficaram totalmente separados
Claude Code, OpenCode, Pi e Codex funcionam com qualquer backend
Ou seja, os agentes de programação estão cada vez mais virando uma camada generalizada, e o foco da competição está migrando para qualidade e custo do modelo
Isso é bom para os usuários e uma ameaça para empresas que dependiam do harness
Por exemplo, no texto “Improving 15 LLMs at Coding in One Afternoon”, foi dito que só trocar o harness já trouxe grande melhora
Dá para executar de forma simples com o comando
ollama launch claude --model gemma4:26bNemotron, glm e qwen 3.5 funcionam bem, mas só o gemma deu problema
Essa abordagem também parece útil para automação de testes de software web
Selenium e Puppeteer costumam quebrar facilmente quando o design da web muda um pouco
Já esses modelos parecem conseguir se adaptar às mudanças, o que permitiria testes mais flexíveis
Especialmente porque parece viável usá-los até com modelos pequenos
MoE na prática não economiza (V)RAM
Todos os pesos precisam permanecer na memória, e apenas parte deles é usada em uma inferência
Então o tok/s melhora, mas o uso de VRAM continua o mesmo
Esta visualização ajudou a entender
Por exemplo, dá para rodar um MoE de 35B parâmetros com uma combinação de GPU com 12GB de VRAM + 16GB de RAM
É possível fazer carregamento sob demanda por troca a partir de RAM, disco, rede etc.
O MoE reduz a quantidade de dados que precisa ser trocada na próxima etapa de inferência
Estou usando o Claude Code como interface principal para iteração em pipelines de dados
Em especial, para padronizar disclosures regulatórios governamentais (XBRL) e expô-los por REST e MCP
O MCP é a parte mais interessante: em vez de chamar o cliente diretamente, você define ferramentas de forma declarativa e o modelo decide quando chamá-las
Por exemplo, uma consulta como “compare a tendência de alavancagem desta empresa ao longo de 10 anos com a média do setor” é automaticamente decomposta na sequência adequada de chamadas de ferramenta
Porém, no uso interativo com MCP, a latência é muito mais sensível
Uma resposta em 2 segundos é aceitável em um script, mas quebra o fluxo da conversa
Então passei a manter em cache as tabelas mais usadas na memória e consegui respostas abaixo de 100ms
Fico curioso se outras pessoas também passaram por esse tipo de limiar de latência
Em implementações simples, ele consome dezenas de milhares de tokens a mais para a mesma funcionalidade
Existe um texto explicativo da Anthropic, mas o material já está um pouco desatualizado
Acima disso, cadeias de múltiplas etapas ficam lentas, e o modelo começa a adicionar raciocínio desnecessário, inflando o contexto
Além do cache, também funcionou bem uma estratégia para reduzir o número de chamadas de ida e volta, retornando vários dados de uma vez
Foi compartilhado como configurar o Gemma 4 26B no macOS como inferência local para o Claude Code
Talvez no futuro os principais laboratórios de IA passem a operar LLMs locais em paralelo para reduzir a carga da nuvem, deixando apenas os cálculos pesados para a nuvem
Fico curioso sobre quão bem o modelo Gemma 4 funciona em tarefas de programação orientadas a agentes e qual é a impressão prática de uso