Curso / Lição 09
Lição 09 · Prática

Mãos à obra

Chega de orçamento de RAM no papel. Esta é a lição dos comandos reais: clonar e compilar o cérebro, baixar os pesos, subir os servidores e plugar o seu cliente. Cada passo marcado com ✓ rodou neste M5 Max nesta sessão — não é "deveria funcionar", é "rodou, aqui está a saída". No fim você tem dois endpoints OpenAI-compatíveis na sua máquina: o cérebro em :8000 e a visão em :8081.

Leia primeiro (fonte primária)
Ahmad Osman — "Step-By-Step LLM Engineering Projects (2026)"

A filosofia desta lição vem dali: o jeito de aprender IA local é construir — clonar, compilar, servir, chamar. São 23+ projetos práticos; aqui destilamos a trilha mínima que põe um cérebro e uma visão de pé. Por que importa pra missão: é o momento em que o cérebro local do Alembic deixa de ser teoria e começa a responder em 127.0.0.1.

Objetivos desta lição
  • Seguir o fluxo clonar → compilar → baixar → servir → verificar e saber onde cada passo pode falhar.
  • Escolher a quantização certa para a sua RAM com uma árvore de decisão, não por chute.
  • Subir os dois endpoints OpenAI-compatíveis (:8000 cérebro, :8081 visão) e plugar o cliente.
  • Explicar por que make (Metal) e não make cpu num Apple Silicon — e ler a saída que prova que rodou.
0 GB
download dos pesos DS4 q2 (resumível)
0 t/s
geração do Qwen3-VL medida (pico 18,4 GB)
0
endpoints · uma máquina · ambos OpenAI
0
binários Metal · make · exit 0 ✓

01 · O fluxo de ponta a ponta

São duas trilhas paralelas que terminam no mesmo lugar: o seu cliente. A trilha do cérebro (DS4 nativo, Metal) e a trilha da visão (MLX, em Python). Nenhuma depende da outra para subir — você pode ligar a visão enquanto os 81 GB do cérebro ainda baixam. O diagrama marca com ✓ o que já foi provado nesta sessão e com ⏳ o único passo demorado (o download).

DUAS TRILHAS, UM CLIENTE · ✓ provado nesta sessão · ⏳ único passo de rede
Trilha do cérebro — DS4 (Metal) Trilha da visão — MLX (Python) git clone antirez/ds4 make 5 binários Metal ✓ exit 0 download_model q2 · 81 GB ⏳ resumível ds4-server 127.0.0.1:8000 cérebro · OpenAI+Anthropic uv venv ~/.venv-mlxvlm uv pip install mlx-vlm mlx_vlm.server 127.0.0.1:8081 ✓ rodando Seu cliente Claude Code · Codex · opencode base-url :8000 → cérebro base-url :8081/v1 → visão ✓ provado nesta sessão ⏳ único passo demorado (rede) — trilhas independentes; sobem em qualquer ordem
✓ verificado nesta sessão
git clone + make do DS4 rodaram até o fim neste Mac: 5 binários Metal gerados, exit 0. E o mlx_vlm.server da visão ficou no ar em :8081, respondendo a chamadas reais (a saída aparece na seção 04). O que não foi feito ao vivo é só o download de 81 GB — por tempo, não por dúvida.

02 · Anatomia de uma instalação (passo a passo)

A visão de cima mostrou o que roda. Agora o como, no detalhe: a instalação do cérebro é um pequeno fluxograma com um ponto de decisão (o teto de RAM) e um único passo lento (o download). O segredo é entender que cada caixa só faz sentido depois da anterior — e que a árvore de quant (seção 04) é o que muda qual arquivo você baixa.

FLUXO DE INSTALAÇÃO DO CÉREBRO · losango = decisão · ⏳ = passo de rede · ✓ = provado nesta sessão
1 · git clone antirez/ds4 ✓ 2 · make (Metal) 5 binários · exit 0 ✓ A quant cabe na sua RAM? 3 · download_model.sh q2 · 81 GB · ⏳ resumível 4 · ds4-server :8000 cérebro no ar 5 · verifique a saída gen 25–34 t/s · prefill 87–463 Escolha quant menor (ou outro modelo) → seção 04 sim ✓ não reavalia o teto e tenta de novo ↺
Exemplo resolvido · do zero ao endpoint, sem pular passo
1
Clone e entre. git clone https://github.com/antirez/ds4 && cd ds4 — traz o cérebro e os scripts. ✓ rodou nesta sessão.
2
Compile com Metal. make (NUNCA make cpu). Saída esperada: 5 binários Metal, exit 0. Se o make reclamar de Metal, falta o Xcode CLT (xcode-select --install) — não é o modelo.
3
Decida a quant (o losango). 128 GB de RAM? A q2 (≈81 GB) cabe → siga. Menos RAM? Pegue uma quant/modelo menor primeiro (seção 04). É a única decisão real do fluxo.
4
Baixe os pesos. ./download_model.sh q2-imatrix — ~81 GB, resumível. É o único passo lento; ligue a visão em paralelo enquanto baixa.
5
Sirva e verifique. ./ds4-server --ctx 100000 … sobe o :8000. Agora você: faça um curl e confira se a geração bate na faixa do README (gen 25–34 t/s). Bateu? Cérebro pronto.

E onde os comandos "moram" no terminal? Este mapa liga cada linha digitada ao que ela produz — o mesmo passo a passo, agora como uma sessão de terminal real:

UMA SESSÃO DE TERMINAL · o que você digita (→) e o que volta (↳) · cérebro DS4
~/ds4 — zsh $ git clone …/ds4 && cd ds4 ↳ Cloning… done. remote: 100% $ make ↳ clang -framework Metal … → 5 binários · exit 0 ✓ $ ./download_model.sh q2-imatrix ↳ ███████░░░ 81 GB · ⏳ resumível (Ctrl-C e retomar) $ ./ds4-server --ctx 100000 --kv-disk-dir ~/.ds4/kv ↳ listening on 127.0.0.1:8000 (OpenAI + Anthropic) $ pronto para o curl da seção 06

O único passo lento — o download de 81 GB — é o que mais assusta, mas ele é resumível: se a rede cair (ou você der Ctrl-C), recomeça de onde parou. Visualmente, é baixar em pedaços e poder pausar a qualquer momento:

DOWNLOAD RESUMÍVEL · 81 GB em pedaços · Ctrl-C pausa, re-rodar retoma
progresso dos pesos q2 (cada bloco ≈ 13,5 GB) ✓ ok ✓ ok ✓ ok ⏸ aqui caiu pendente pendente re-rode ./download_model.sh → retoma daqui, sem refazer o que já veio Conclusão: você pode interromper à vontade — e ligar a visão em paralelo enquanto isso. Nada se perde.

03 · Monte seu setup (interativo)

Antes de colar comandos a esmo, internalize a ordem. São cinco passos para o cérebro, e cada um só faz sentido depois do anterior. Clique em cada passo abaixo na sequência: ele marca ✓ e revela o comando exato que você roda. A barra de progresso à direita só completa quando os cinco estão feitos.

CHECKLIST DO CÉREBRO · clique cada passo na ordem para revelar o comando
progresso 0/5

Clique o passo 1 para começar. Os passos dependem um do outro — fora de ordem, o anterior pisca pra você.

A regra de ouro do build: nunca rode make cpu num Apple Silicon. Isso joga fora a GPU e a memória unificada — exatamente o que torna o Mac viável para um modelo de 284 B. O make padrão já mira o Metal. Nesta sessão foi o make puro que gerou os 5 binários com exit 0.

04 · Qual quant para minha RAM?

O losango do fluxograma — "a quant cabe na RAM?" — merece uma resposta sem chute. Esta árvore de decisão te leva da sua RAM ao formato certo em três perguntas. A regra de fundo é a da Lição 02: params × bits ÷ 8, sempre deixando 10–20% de folga para KV + sistema.

ÁRVORE: DA SUA RAM AO FORMATO · losangos = perguntas · folhas = quant recomendada
Quanta RAM você tem? (unificada, total) O modelo-alvo é gigante (≥180 B)? Cabe em Q2? (p·2÷8 ≤ 80% RAM) sim → Sobra RAM depois de Q4? não → Q2 (cabe! ✓) sim modelo menor ou + RAM não Q6 / FP8 sim Q4 (sweet spot) não
Lendo a árvore para o nosso caso: o DeepSeek-V4-Flash é gigante (284 B) → "cabe em Q2?" → 284 × 2 ÷ 8 ≈ 71 GB (arquivo real 81 GB) ≤ 80% de 128 GB → Q2. É exatamente a folha que o DS4 entrega. Um 70 B no mesmo Mac cairia no ramo direito e ficaria em Q6/FP8, com qualidade quase intacta.

Agora inverta a pergunta: dada a sua RAM, qual o maior modelo que você consegue rodar em cada quant? Arraste — o número e as barras recalculam pela fórmula (com 80% de teto seguro):

maior nº de parâmetros que cabe (80% da RAM ÷ bytes-por-peso)

Por que 80% e não 100%
Os pesos não são tudo: KV cache, ativações e o macOS disputam a mesma memória unificada (Lição 02, seção 04). Por isso o cálculo usa 80% da sua RAM como teto — rodar a 99% é pedir OOM. A folha "Q2" da árvore só vale se o arquivo couber com essa folga.

05 · Escolha seu objetivo

Nem todo mundo precisa das duas trilhas no dia um. O que você liga primeiro depende do que você quer fazer hoje. Clique no seu objetivo — o setup recomendado, os comandos e o orçamento de RAM mudam junto:

Objetivo: agente de coding o dia todo. Suba só o cérebro (DS4) e deixe-o residente. É o caminho da seção 02. Orçamento: os 81 GB de pesos + KV em disco cabem com folga nos 128 GB. Ligue a visão só quando aparecer uma imagem (modo on-demand da Lição 08).
# cérebro residente, contexto longo, KV em disco p/ folgar a RAM
./ds4-server --ctx 100000 --kv-disk-dir ~/.ds4/kv --kv-disk-space-mb 8192
# perf classe M5 Max (README do DS4): gen 25–34 t/s · prefill 87–463 t/s
Objetivo: descrever imagens / ler screenshots. Suba só a visão (Qwen3-VL via MLX). É leve — pico medido de 18,4 GB, longe do teto. Não precisa do download de 81 GB para começar; a trilha da visão é independente.
# visão sozinha em :8081 — independe do cérebro
python -m mlx_vlm.server \
  --model mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit \
  --port 8081
# ✓ medido nesta sessão: prompt 88 t/s · gen 62 t/s · pico 18,4 GB
Objetivo: indexar seu acervo, $0 e offline. Aqui você nem precisa de servidor de modelo: os comandos --offline do Alembic são determinísticos e hermético-$0. Distile um corpus e gere o índice de visão sobre as imagens de cada pacote, tudo local.
# funil noturno offline = hermético, $0
alembic distill <corpus> --offline

# índice de visão sobre as imagens de cada pacote (append-only, dedupe)
alembic vision-index <family-root>
# offline determinístico por padrão; --online usa o MLX-VLM local desta lição

Uma diferença prática entre as trilhas: o cérebro é um binário nativo (compilado, sem dependências Python), enquanto a visão roda em Python — e por isso usa um uv venv, um ambiente isolado. Isso evita que o mlx-vlm conflite com o Python do sistema ou de outros projetos:

DUAS NATUREZAS · cérebro nativo (sem deps) vs visão em venv isolado (uv)
cérebro — binário nativo ./ds4-server (compilado por make) zero dependências de runtime · só roda Metal vem do sistema visão — venv isolado (uv) ~/.venv-mlxvlm (sandbox) mlx-vlm deps fixas ↮ separado do Python do sistema (sem conflito)
Como escolher em uma frase
Coding → só o cérebro. Imagens → só a visão (independente, leve). Indexar acervo → comandos --offline, sem servir modelo nenhum. As trilhas se somam quando você precisar das duas.

06 · Build → serve → query (e a saída real)

Agora a sequência completa, com os comandos exatos e — o que importa — a saída real capturada nesta sessão. Primeiro o diagrama animado do ciclo, depois os blocos de comando das duas trilhas.

UMA CHAMADA, PASSO A PASSO · tudo em 127.0.0.1 — nenhum byte sai da máquina
Cliente Claude Code / Codex Endpoint :8000 cérebro · :8081 visão 1 POST /v1/chat/completions (messages, model, api-key) 1. carrega o KV / contexto 2. prefill (87–463 t/s) 3. gera tokens (25–34 t/s) só os experts ativos do MoE entram 2 tokens em streaming (SSE) — palavra a palavra 3 [DONE] · conexão encerra loopback — zero nuvem

Trilha do cérebro — clonar, compilar, baixar, servir

O DS4 (de antirez) compila nativo com Metal. Quatro comandos do zero ao endpoint:

# 1) clonar o repositório do cérebro (ou use seu ~/ds4 já clonado)
git clone https://github.com/antirez/ds4 && cd ds4

# 2) compilar com Metal — NUNCA `make cpu` num Apple Silicon
make
# ✓ provado nesta sessão: 5 binários Metal gerados, exit 0

# 3) baixar os pesos q2 (~81 GB; o download é resumível)
./download_model.sh q2-imatrix

# 4) servir — KV cache em disco para folgar a RAM
./ds4-server --ctx 100000 --kv-disk-dir ~/.ds4/kv --kv-disk-space-mb 8192
# perf medida (README do DS4, classe M5 Max): gen 25–34 t/s · prefill 87–463 t/s

Trilha da visão — venv, instalar, servir, chamar

A visão usa o uv para um venv isolado e instala o mlx-vlm direto do Git. O servidor sobe um endpoint OpenAI em :8081:

# 1) venv isolado e ativado (uv é rápido e reprodutível)
uv venv ~/.venv-mlxvlm && source ~/.venv-mlxvlm/bin/activate

# 2) instalar o mlx-vlm a partir do main
uv pip install "git+https://github.com/Blaizzy/mlx-vlm"

# 3) subir o servidor de visão (OpenAI-compatível) em :8081
python -m mlx_vlm.server \
  --model mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit \
  --port 8081
# ✓ rodando nesta sessão
Preveja antes de revelar
A Lição 08 mediu a visão (Qwen3-VL 30B-A3B, 4-bit) neste M5 Max. Antes de ver os números abaixo: a que velocidade de geração você acha que o servidor respondeu numa chamada de chat? E quanto de RAM ele usou no pico?
Geração 62 t/s (prompt 88 t/s) e pico de apenas 18,4 GB — bem abaixo do orçamento de visão. Numa chamada one-shot (generate, sem servidor) a geração chegou a 122 t/s. A visão é tão leve porque o A3B só ativa ~3 B de experts por token (MoE), mesmo sendo um 30 B.

Por que a visão é tão rápida e leve para um modelo de 30 B? O segredo está no "A3B" do nome: é um MoE (mixture-of-experts) que guarda 30 B de pesos mas só ativa ~3 B por token. Memória paga o total; velocidade paga só os ativos — daí 62 t/s a 18,4 GB:

QWEN3-VL 30B-A3B · guarda 30 B, ativa ~3 B por token (MoE)
os "experts" do modelo de visão (cada bloco = um expert) ativo ativo memória paga o TOTAL guardado: 30 B guardados → pico 18,4 GB (4-bit) velocidade paga só os ATIVOS: ~3 B ativos → 62 t/s É a mesma ideia do cérebro (DS4): MoE é o que torna gigante-mas-rápido possível no Mac.

E a prova: a chamada real e a resposta medida, capturadas agora nesta máquina.

# chamada real ao endpoint OpenAI-compatível da visão
curl -s 127.0.0.1:8081/v1/chat/completions -d '{
  "model":"mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit",
  "messages":[{"role":"user","content":"Descreva o conceito de memória unificada."}]
}'
# resposta real (medida nesta sessão):
"A memória unificada é uma arquitetura em que CPU e GPU compartilham o mesmo
 pool físico de memória, eliminando cópias entre dispositivos e permitindo que
 modelos grandes sejam acessados diretamente pela GPU com baixa latência."
# timings reais:
prompt 88 t/s · gen 62 t/s · peak 18,4 GB
✓ verificado nesta sessão
Esses números não são do README de ninguém: foram medidos nesta máquina, agora. O servidor processou o prompt a 88 t/s, gerou a 62 t/s e nunca passou de 18,4 GB de pico — bem dentro do orçamento de visão da Lição 08. Numa chamada one-shot (generate) a geração chegou a 122 t/s.

07 · CPU vs Metal — por que o make certo importa

Você viu duas vezes o aviso "nunca make cpu". Aqui está o porquê, lado a lado. No Apple Silicon a memória é unificada: CPU e GPU compartilham o mesmo pool. Compilar para CPU ignora a GPU (Metal) e trata a máquina como um PC comum — exatamente o que torna inviável rodar um modelo de 284 B. O make padrão do DS4 já mira o Metal.

CPU vs GPU/METAL · o mesmo modelo, o mesmo pool de memória unificada
memória unificada (128 GB) pesos q2 81 GB KV + ativações make cpu ✗ CPU · poucos núcleos GPU ociosa (desperdiçada) ↓ banda baixa poucos t/s inviável p/ 284 B make (Metal) ✓ GPU · centenas de ALUs lê pesos direto do pool ↑ banda alta (Metal) gen 25–34 t/s prefill 87–463 t/s

É a mesma lição que a Lição 03 (banda = velocidade) e a Lição 05 (engines): o que decide a velocidade local é o caminho até a memória. Em números, o contraste entre os alvos de build e entre as duas trilhas desta lição:

Build / trilhaOnde rodaVelocidade (medida/README)Veredito
make cpusó CPU · GPU ociosapoucos t/s inviável p/ 284 B✗ evite
make (Metal) · cérebroGPU + memória unificadagen 25–34 · prefill 87–463 t/s✓ padrão
MLX · visãoGPU (Metal) via Pythongen 62 t/s · one-shot 122 t/s ✓ medido✓ leve (18,4 GB)

E como o comando de servir muda conforme a engine? As duas trilhas desta lição usam engines diferentes — clique para ver o comando de cada uma lado a lado:

Engine do cérebro: binário nativo compilado com make. Sobe o endpoint OpenAI e Anthropic em :8000; o KV vai para disco para folgar a RAM.
./ds4-server --ctx 100000 --kv-disk-dir ~/.ds4/kv --kv-disk-space-mb 8192
# 127.0.0.1:8000 · gen 25–34 t/s · prefill 87–463 t/s (README, classe M5 Max)
Engine da visão: módulo Python do mlx-vlm dentro do venv uv. Sobe um endpoint OpenAI em :8081, independente do cérebro.
python -m mlx_vlm.server \
  --model mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit \
  --port 8081
# ✓ medido nesta sessão: prompt 88 t/s · gen 62 t/s · pico 18,4 GB
Mesma checagem, qualquer engine: como ambas falam OpenAI, o mesmo curl serve para provar que o endpoint está no ar — só muda a porta.
curl -s 127.0.0.1:8000/v1/models        # cérebro
curl -s 127.0.0.1:8081/v1/models        # visão
# 200 + JSON com o id do modelo = no ar. Recusou? servidor não subiu (não é a api-key).

08 · Referência de comandos

A parte mais simples e mais satisfatória: plugar o cliente. Como ambos os servidores falam OpenAI, qualquer cliente que aceite uma base-URL aponta para o 127.0.0.1. A api-key pode ser qualquer string — não há autenticação num servidor local.

# cérebro (DeepSeek) — para coding/agente
base-url  = http://127.0.0.1:8000
model     = deepseek-v4-flash          # o id que o ds4-server expõe
api-key   = qualquer-coisa            # local não valida a chave

# visão (Qwen3-VL) — para imagens/screenshots
base-url  = http://127.0.0.1:8081/v1
model     = mlx-community/Qwen3-VL-30B-A3B-Instruct-4bit
api-key   = qualquer-coisa

# exemplo: variáveis que o Claude Code / Codex / opencode entendem
export OPENAI_BASE_URL=http://127.0.0.1:8000
export OPENAI_API_KEY=local

Repare no endereço: 127.0.0.1 é o loopback — a sua própria máquina falando consigo mesma. Nenhum byte do prompt ou da resposta sai do Mac. É a diferença concreta entre IA local e uma API na nuvem:

TOPOLOGIA LOOPBACK · cliente + 2 servidores, tudo dentro do Mac · a nuvem nunca é tocada
Seu Mac · 127.0.0.1 (loopback) cliente Claude Code / Codex cérebro :8000 DS4 visão :8081 MLX-VLM borda da rede ╎ nuvem (APIs externas) ✗ nenhum byte cruza api-key irrelevante · sem custo por token · funciona offline (depois do download)

E uma nota sobre aquele flag --kv-disk-dir no comando do cérebro: ele move o KV cache (a memória de trabalho da conversa, da Lição 06) para o disco em vez da RAM. Com os pesos já ocupando 81 GB, é o que dá folga para contextos longos sem estourar:

KV NA RAM vs KV EM DISCO · o que o flag --kv-disk-dir muda · pesos q2 = 81 GB
sem o flag — KV disputa a RAM: pesos 81 GB KV cresce → ✗ estoura com --kv-disk-dir — KV vai pro SSD: pesos 81 GB RAM livre ✓ SSD ~/.ds4/kv (8 GB) Troca: o KV em disco é mais lento que em RAM, mas é o que viabiliza contexto longo com pesos enormes.

E o cartão de referência — cada comando desta lição num lugar só, com o estado verificado nesta sessão:

FaçaComandoEstado
Clonar o cérebrogit clone https://github.com/antirez/ds4✓ provado
Compilar (Metal)make  nunca make cpu✓ 5 binários · exit 0
Baixar pesos q2./download_model.sh q2-imatrix⏳ 81 GB · resumível
Servir o cérebro./ds4-server --ctx 100000 --kv-disk-dir ~/.ds4/kvpronto após ⏳
Servir a visãopython -m mlx_vlm.server --model …Qwen3-VL… --port 8081✓ no ar · 62 t/s
Indexar offline ($0)alembic distill <corpus> --offline · alembic vision-index <fam>determinístico
Regra prática: aponte o cérebro para o agente de coding do dia a dia e mantenha a visão como um segundo endpoint que você só aciona quando há uma imagem. É exatamente o modo on-demand da Lição 08, agora em comandos. Para indexar seu acervo sem gastar nada, os comandos --offline nem ligam um servidor de modelo.

E quando algo dá errado? Os três tropeços mais comuns desta lição têm cada um uma causa única e uma correção direta. Este mapa de diagnóstico vai do sintoma que você vê à causa real e à correção — antes de você abrir uma busca:

DIAGNÓSTICO RÁPIDO · sintoma → causa → correção · os 3 tropeços desta lição
SINTOMA CAUSA CORREÇÃO make reclama deMetal / framework falta Xcode CLT xcode-select --install conexão recusadano cliente servidor não subiuou porta errada (NÃO a key) cheque o curl /v1/modelse a porta (:8000 / :8081) processo morto(killed / OOM) RAM estourou(pesos + KV > 80%) --kv-disk-dir + --ctx menorou quant menor (seção 04) Regra: recusa de conexão nunca é a api-key (local não valida) · OOM se resolve com KV em disco e contexto menor, antes de baixar outro modelo.

Fixe os comandos (flashcards)

Clique pra virar. Tente lembrar a resposta antes de virar — recuperação ativa fixa mais que reler a referência acima.

Build
Qual comando compila o DS4 — e qual evitar?
clique pra virar ↻
Resposta
make (mira o Metal). NUNCA make cpu — descarta a GPU e a memória unificada. ✓ nesta sessão: 5 binários, exit 0.
Portas
Quais portas o cérebro e a visão expõem?
clique pra virar ↻
Resposta
Cérebro (DS4) em :8000; visão (MLX-VLM) em :8081/v1. Ambos OpenAI-compatíveis, em 127.0.0.1.
api-key
Que api-key um servidor local exige?
clique pra virar ↻
Resposta
Qualquer string — local não valida a chave. Recusa de conexão é servidor não-iniciado, porta/base-url errada ou download em curso, nunca a chave.
Quant
Como a árvore escolhe a quant a partir da RAM?
clique pra virar ↻
Resposta
Gigante (≥180 B) e cabe em Q2 (params×2÷8 ≤ 80% RAM)? → Q2. Senão: sobra após Q4 → Q6/FP8; não → Q4 (sweet spot).

Revisão cumulativa — recupere de memória

Antes de clicar: responda de cabeça. Recuperar da memória (não reler) é o que fixa de verdade. As opções têm o mesmo tamanho de propósito — sem pista pela forma.

1. Por que make cpu é o erro a evitar ao compilar o DS4 num M5 Max?
Correto: b. No Apple Silicon o ganho vem do Metal sobre a memória unificada; make cpu joga isso fora. a erra: make cpu compila normalmente, só fica lento. c erra: os pesos são os mesmos, o alvo de build não muda o GGUF. d erra: portas são do servidor, não do compilador. Nesta sessão, make (padrão) gerou 5 binários Metal com exit 0.
2. Você plugou o cérebro no Claude Code, mas o servidor recusa a conexão. O que NÃO é a causa?
Correto: c (é a NÃO-causa). Localmente não há autenticação: a api-key pode ser qualquer string, então ela nunca causa a recusa. a, b e d são causas reais e comuns: base-url errada, servidor não iniciado / download ainda em curso, ou porta trocada com a da visão.
3. Seu Mac tem 128 GB e o modelo-alvo é o DeepSeek-V4-Flash (284 B). Pela árvore de decisão, qual folha?
Correto: d. Ramo "gigante? sim → cabe em Q2? sim" → folha Q2. a erra: 284 B em FP16 = 568 GB, fora da tela. b erra: Q4 daria 159 GB, não cabe — Q4 só vence para modelos que já cabem. c erra: cabe, sim, justamente em Q2 (é o que o DS4 entrega).
4. A trilha da visão (MLX-VLM em :8081) depende do download de 81 GB do cérebro?
Correto: a. As duas trilhas são independentes; você liga a visão enquanto os 81 GB ainda baixam. b/c erram: a visão usa o Qwen3-VL (modelo próprio, baixado pelo MLX), não o GGUF do DS4. d erra: não há dependência de ordem — nenhuma trilha espera a outra.
💬 Travou em algo? Eu sou seu professor neste curso — pergunte. "O make reclamou de Metal, e agora?", "Como confirmo que o :8081 está mesmo no ar?", "Posso baixar os 81 GB em partes?", "Como aponto o Codex para o cérebro?". É só dizer.