Orquestração de LLMs Locais no Desktop: Qwen, Gemma e Ollama — do código local ao escalonamento para 6 APIs cloud
Monte um time de modelos locais e deixe um orquestrador mandar cada tarefa pro especialista certo: Qwen-Coder para código, Qwen3 para raciocínio, Gemma para visão e multilíngue. Instalação blindada do Ollama na RTX 4060, os quatro modos (solo, council, pipeline, debate), um servidor OpenAI-compatível para o VS Code Continue, observabilidade real e — quando a tarefa pede mais potência — escalonamento com a sua permissão para 6 APIs cloud. Atualizado com o cenário de 2026.
O que você vai aprender
Ao final deste curso, você instala e blinda o Ollama em D:, orquestra Qwen-Coder, Qwen3 e Gemma 3 com os modos solo, council e pipeline, resolve os problemas mais comuns numa RTX 4060 8GB e aciona os modelos do celular com o bridge Hermes por Discord, WhatsApp e Telegram — tudo local, em 127.0.0.1.
O contexto de 2026: IA local virou infraestrutura
A pergunta deixou de ser "dá pra rodar LLM em casa?" e passou a ser "qual modelo pra qual tarefa?". Em 2025-2026 o ecossistema amadureceu: o Ollama chegou na versão 0.30, o Qwen3 e o Gemma 3 trouxeram tool calling nativo e multimodal, e padrões de orquestração que antes eram papel de pesquisa viraram receita de produção — roteamento por tarefa, council multi-modelo (Mixture-of-Agents), pipelines de especialistas. Em maio de 2026 o ritmo acelerou ainda mais: o suporte nativo ao Gemma 4 (arquitetura MoE com ~4B parametros ativos de 26B totais, 256K de contexto e function calling treinado no proprio peso) chegou ao Ollama, e modelos como o Qwen 3.6 (abril/2026, 77,2% no SWE-bench na variante 27B) elevaram a regua do que cabe num desktop. Este curso ja reflete esse cenario e roda na versao 0.30 do Ollama nesta maquina.
O ponto central deste curso é simples e contra-intuitivo: um modelo grande não é a melhor jogada num desktop. A melhor jogada é um time de modelos pequenos, cada um afiado numa coisa, e um orquestrador que manda a tarefa certa pro especialista certo. É o mesmo princípio de uma equipe: você não contrata um gênio pra tudo, você monta um time onde cada um faz o que faz bem.
Neste módulo você vai entender os 3 modelos, o que a sua placa realmente entrega, e — antes de tudo — onde está a fronteira entre o local e a nuvem. Sem essa fronteira clara, você vai tentar usar a ferramenta errada e se frustrar.
Os 3 modelos e seus papéis
O setup roda três famílias, cada uma com um trabalho
1. Qwen-Coder = CÓDIGO. É o cavalo de batalha. O qwen2.5-coder:7b (rota coder_fast) roda 100% na GPU a ~50 tok/s e resolve a maior parte do dia: gerar função, refatorar, explicar trecho, escrever teste. Quando você precisa de qualidade acima da média — um patch mais complexo, raciocínio sobre arquitetura — entra o qwen3-coder:30b (rota coder_heavy), um MoE de 30B com ~3B parâmetros ativos por token: roda em modo híbrido (CPU + RAM), é mais lento, porém entrega melhor. E há ainda o qwen2.5-coder:1.5b-base, minúsculo e residente, dedicado a autocomplete FIM (fill-in-the-middle) dentro do editor.
2. Qwen3 = RACIOCÍNIO. Quando a tarefa é pensar antes de responder — planejar, depurar lógica, decompor um problema —, é o Qwen3 8B. Ele tem dois modos: reason (qwen3-8b-nothink, sem o passo de pensamento, rápido) e reason_think (qwen3:8b, com thinking mode, mais latência mas raciocínio mais profundo). Roda a ~36-42 tok/s.
3. Gemma 3 = VISÃO / MULTILÍNGUE / GERAL. É o modelo multimodal: lê imagens, faz OCR, analisa documento, e fala 140+ idiomas (incluindo PT-BR bem tokenizado). gemma3:4b-it-qat (rota vision/general) é o ponto ótimo de velocidade; gemma3:12b-it-qat (rota vision_heavy/multilingual) entrega mais qualidade quando cabe na VRAM.
Fora do trio, dois coadjuvantes essenciais: `bge-m3` para embeddings (busca semântica, RAG) e o `qwen3-coder:30b` também atuando como *judge* — o juiz que consolida respostas no modo council.
# Ver o que está instalado e o que está carregado AGORA na GPU/CPU.# Regra de ouro: se 'ollama ps' mostrar CPU, o modelo NÃO coube na VRAM.ollama list # tudo que existe em D:\Ollama\modelsollama ps # o que está na GPU/CPU neste instante# Confirmar que o servidor responde (escopo localhost — nunca exposto na rede):curl http://127.0.0.1:11434/api/version# Sanidade de hardware: VRAM ocupada, temperatura, utilização da GPU.nvidia-smiA realidade do hardware: RTX 4060 8GB
Aqui está a parte que separa expectativa de prática. Sua placa tem 8GB de VRAM, com ~6GB efetivamente utilizáveis (1-2GB de margem para o sistema). Isso define duas zonas bem distintas:
Zona verde — 7B/8B, 100% GPU. Modelos de 7-8B cabem inteiros na VRAM e voam. Benchmark medido neste setup numa RTX 4060 8GB, 100% GPU: qwen2.5-coder:7b = ~50 tok/s; qwen3:8b = 36-42 tok/s. É a sua zona de uso interativo fluido — chat, código, raciocínio rápido — e onde você vai passar a maior parte do tempo. Para refazer a medida: pwsh -File D:\Ollama\bench.ps1 -Model qwen2.5-coder:7b (histórico em D:\Ollama\logs\benchmarks.csv).
Zona híbrida — 30B MoE, CPU + RAM. O qwen3-coder:30b não cabe só na GPU. Mas por ser MoE (30B totais, ~3B ativos por token), você empurra os *experts* pra RAM (e os 64GB de RAM da máquina sustentam isso). Resultado: roda mais devagar, porém com qualidade melhor que o 7B. É a peça que você aciona quando vale esperar por uma resposta superior. Em 8GB de VRAM, modelos densos de 13B+ são inviáveis para uso interativo.
O gargalo real do 4060 é a largura de banda de memória. Por isso a regra firme: até 9B para uso interativo; acima disso, só quando velocidade não importa.
# Variáveis (escopo de usuário) para extrair o máximo da VRAM no RTX 4060.# Já estão persistidas neste setup — comandos para conferir/reaplicar.# Flash Attention: RTX 4060 (Ada Lovelace) suporta. Reduz VRAM do KV cache# e é PRÉ-REQUISITO para o KV cache quantizado funcionar.[Environment]::SetEnvironmentVariable('OLLAMA_FLASH_ATTENTION', '1', 'User')# KV cache em q8_0: corta VRAM de cache com perda de qualidade desprezível.# Funciona bem com Qwen/Gemma.[Environment]::SetEnvironmentVariable('OLLAMA_KV_CACHE_TYPE', 'q8_0', 'User')# Com 8GB cabe ~1 modelo 7B por vez na GPU; manter loaded baixo e paralelismo enxuto.[Environment]::SetEnvironmentVariable('OLLAMA_MAX_LOADED_MODELS', '2', 'User')[Environment]::SetEnvironmentVariable('OLLAMA_NUM_PARALLEL', '2', 'User')# Tempo que o modelo fica residente sem uso antes de descarregar.[Environment]::SetEnvironmentVariable('OLLAMA_KEEP_ALIVE', '10m', 'User')# Servidor SEMPRE em localhost — nunca expor na rede (Ollama tem CVEs quando exposto).[Environment]::SetEnvironmentVariable('OLLAMA_HOST', '127.0.0.1:11434', 'User')# Modelos vão para o disco de trabalho D: (C: está cheio, perto do limite; D: tem 2TB).[Environment]::SetEnvironmentVariable('OLLAMA_MODELS', 'D:\Ollama\models', 'User')Get-ChildItem Env: | Where-Object Name -like 'OLLAMA_*'Segurança e armadilhas que vão te custar caro — leia antes de mexer:
- NUNCA lance o app de bandeja `ollama app.exe`. Ele ignora a variável OLLAMA_MODELS e baixa modelos pro C:, que já está em perto do limite. Suba o servidor via ollama serve direto OU pelo keeper idempotente: pwsh -File D:\Ollama\ollama-ensure.ps1 (ele testa GET /api/version e, se não responder, sobe o ollama serve em background com o env correto e logs em D:\Ollama\logs).
- NUNCA exponha `OLLAMA_HOST=0.0.0.0`. O Ollama não tem autenticação por padrão — qualquer um com a URL usa sua GPU e, pior, há CVEs sérias quando exposto na rede. Mantenha em 127.0.0.1:11434. Para acesso remoto futuro, a regra é localhost-only com túnel reverso seguro (Cloudflare Tunnel) ou bot por polling — nunca abrir porta no roteador.
- Mantenha o Ollama atualizado (este setup roda v0.30, instalado em escopo de usuário via winget --scope user). Atualize manualmente, com critério.
- Adicione a pasta de modelos (D:\Ollama\models) às exclusões do Windows Defender para eliminar lentidão no carregamento.
O que o local FAZ — e o que NÃO faz
Essa fronteira é o coração da decisão. Errar aqui é usar martelo pra apertar parafuso.
O local FAZ bem:
- Código. O Qwen-Coder cobre geração, refatoração, testes, autocomplete FIM no VS Code (extensão Continue,
~/.continue/config.yamlapontando pro Ollama). É o caso de uso campeão. - Privacidade. Código proprietário, dados de cliente, documento sensível — nada sai do
127.0.0.1. - Dev offline. Avião, hotel, rede caindo: o time continua funcionando.
- Embeddings grátis e ilimitados.
bge-m3indexa tudo localmente, sem custo por chamada. - Experimentação ilimitada. Você itera, testa prompts, roda council, sem olhar o relógio nem a fatura.
O local NÃO faz (fica na nuvem):
- Copy editorial. Texto de venda, posicionamento, peça publicada — a qualidade de redação de um modelo 7-8B local não chega no padrão. Isso continua na nuvem.
- Deep research. Pesquisa profunda, multi-fonte, com verificação — exige modelos de fronteira e ferramentas de busca robustas. Nuvem.
E o enquadramento certo: o local não é economia de fatura. É privacidade e autonomia. Você não roda local pra economizar centavos de API; você roda local porque o dado não pode sair, porque quer iterar sem limite, e porque quer um time que funciona sem internet. Se a sua motivação for só cortar custo, a conta não fecha — o valor está em controle, não em preço.
O ganho real está na orquestração: modelo certo pra tarefa certa.
O orquestrador local (D:\Ollama\orchestrator\config.json) roteia por palavras-chave em 5 categorias — code, vision, multilingual, reason, general — e cada rota define um primary, um heavy, uma lista council e um pipeline. Os defaults: temperature 0.7, num_ctx 8192, categoria general. Sobre isso operam 3 modos:
- Solo — 1 modelo (primary ou heavy). 90% do dia. Rápido e direto.
- Council — vários modelos respondem em paralelo e um *judge* (qwen3-coder:30b) consolida (Mixture-of-Agents). Reduz alucinação, mas custa muito mais tokens — só compensa quando o erro é caro. Detalhe prático pra 8GB: rodar 2 instâncias do mesmo modelo forte muitas vezes supera misturar modelos menores diferentes.
- Pipeline — cadeia de especialistas, ex.: reason → coder_heavy → coder_fast (pensa, gera com qualidade, pole rápido) ou vision_heavy → reason (lê a imagem, depois raciocina).
Um orquestrador 8B classificando e despachando para o 7B especialista é o padrão viável no 4060 — supervisores densos muito maiores estourariam a RAM da máquina.
# Prova de conceito do roteamento: a MESMA pergunta, o especialista CERTO.# API nativa do Ollama em 127.0.0.1:11434 — tudo local, nada sai da máquina.# Tarefa de CÓDIGO -> coder_fast (qwen2.5-coder:7b, ~50 tok/s, 100% GPU)curl -s http://127.0.0.1:11434/api/chat -d '{ "model": "qwen2.5-coder:7b", "stream": false, "messages": [{"role":"user","content":"Escreva uma função Python que valida CPF."}]}'# Tarefa de RACIOCÍNIO -> reason (qwen3:8b)curl -s http://127.0.0.1:11434/api/chat -d '{ "model": "qwen3:8b", "stream": false, "messages": [{"role":"user","content":"Decomponha em etapas como migrar um cron de OAuth sem downtime."}]}'# Tarefa MULTILÍNGUE/GERAL -> general (gemma3:4b-it-qat, 140+ idiomas)curl -s http://127.0.0.1:11434/api/chat -d '{ "model": "gemma3:4b-it-qat", "stream": false, "messages": [{"role":"user","content":"Resuma este parágrafo em inglês e japonês."}]}'Pesquisa 2026 — por que rodar local compensa (e quando não). Um guia prático de Knoop & Holtmann (arXiv:2601.09527, jan/2026) mediu o custo de rodar LLMs em GPUs de consumo e chegou a um número direto: para a maioria das cargas de uma organização, o local sai 40 a 200x mais barato que APIs de nuvem de tier básico — com a ressalva de que contexto longo e latência crítica ainda pendem para a nuvem. A leitura para o seu setup: o ganho do local é real e mensurável, mas não é universal. Rode local o volume do dia a dia e reserve a nuvem para o que ela faz melhor.
Velocidade por modelo (tokens por segundo)
Típico numa GPU de consumo de 8GB (classe RTX 4060), 100% na GPU. Mais alto = mais fluido no uso interativo.
Ao final deste módulo você deve conseguir:
- [ ] Explicar, em uma frase, o papel de cada modelo: Qwen-Coder = código, Qwen3 = raciocínio, Gemma 3 = visão/multilíngue/geral — mais bge-m3 para embeddings e o qwen3-coder:30b como judge.
- [ ] Identificar as duas zonas do RTX 4060: 7B/8B voam a ~36-50 tok/s 100% na GPU; o 30B MoE roda híbrido (CPU+RAM), mais lento porém melhor; 13B denso é inviável.
- [ ] Verificar o estado do servidor com ollama ps, ollama list e curl http://127.0.0.1:11434/api/version, e reconhecer pela saída do ps quando um modelo caiu para CPU (não coube na VRAM).
- [ ] Traçar a fronteira local x nuvem: local faz código, privacidade, dev offline, embeddings e experimentação; copy editorial e deep research ficam na nuvem. E saber que o valor é privacidade/autonomia, não economia de fatura.
- [ ] Nomear os 3 modos de orquestração — solo, council, pipeline — e quando usar cada um.
- [ ] Aplicar as duas regras de segurança inegociáveis: nunca lançar `ollama app.exe` (subir via ollama serve ou o keeper ollama-ensure.ps1) e nunca expor `OLLAMA_HOST=0.0.0.0` (manter localhost-only).
No próximo módulo entramos no orquestrador e no config.json para colocar esse roteamento pra rodar de ponta a ponta.
Perguntas frequentes
Preciso de uma GPU para fazer este curso?
Roda mesmo numa placa de 8GB de VRAM?
É gratuito? Meus dados saem da máquina?
Isso substitui o Claude ou o ChatGPT?
Dá para acionar os modelos do celular?
Alexandre Caramaschi
CEO da Brasil GEO, ex-CMO da Semantix (Nasdaq), advisor estratégico de IA da Nuvini (Nasdaq: NVNI), cofundador da AI Brasil
Este curso faz parte do material educacional da Brasil GEO. Os exemplos foram testados no hardware real descrito (um notebook com GPU de 8GB, RTX 4060 8GB) e no orquestrador local em 127.0.0.1:11434, para que o aprendizado seja diretamente aplicável na sua máquina.