Curso / Lição 07  ·  English →
Lição 07 · O engine

DS4 / DwarfStar

As lições anteriores deram o vocabulário: MoE, memória unificada, quantização, KV cache. O DS4 é onde tudo isso vira um binário que roda. Não é mais um carregador genérico de GGUF — é um engine nativo em C escrito por antirez com um único alvo em mente: rodar o DeepSeek-V4 num Mac. Esta lição abre a caixa: a arquitetura, o build que já provamos neste Mac, o streaming de SSD que dissolve o limite de RAM, e como ligar um cliente.

284B / 13B
DeepSeek-V4-Flash · total / ativos
81 GB
q2-imatrix em disco (Macs 96/128 GB)
1M
contexto suportado (tokens)
5 binários
gerados pelo make (Metal)

O DS4 — apelidado de "DwarfStar" — é um engine de inferência pequeno, nativo e autocontido, escrito em C. Ele não tenta rodar qualquer modelo: foi otimizado primeiro para o DeepSeek-V4-Flash (284B de parâmetros totais, 13B ativos por token, contexto de 1M). A variante Pro (1,6T totais / 49B ativos) existe para máquinas de memória gigante. Pense nele como um motor de corrida construído para uma pista — não um carro de passeio que vai a qualquer lugar.

É a primeira vez que uso um modelo local para coisa séria que eu normalmente pediria pro Claude ou pro GPT... o DS4 é muito mais B [fronteira] do que A [modelo local pequeno].— antirez, antirez.com/news/165

01 · A arquitetura do engine

O DS4 é uma pilha curta e direta: um GGUF com quantização assimétrica no disco, um núcleo C com kernels Metal que faz a matemática, um KV cache que vive entre RAM e disco, e um servidor que fala os protocolos das APIs comerciais. Os clientes (Claude Code, Codex, seu app) nem percebem que estão falando com algo local.

1 · GGUF em disco hf.co/antirez/deepseek-v4-gguf Especialistas roteados quant 2-bit (assimétrico) Resto dos pesos quant Q8 (8-bit) q2-imatrix ≈ 81 GB DeepSeek-V4-Flash 284B totais · 13B ativos ctx 1M tokens 2 · Núcleo DS4 (C) engine nativo · autocontido Kernels Metal alvo primário · GPU unificada CUDA / DGX-Spark · ROCm / Strix roteador MoE → 13B ativos por token ⚠ macOS: NUNCA make cpu (bug da VM dá kernel panic) → use Metal (default) 3 · KV cache RAM + disco (cidadão de 1ª classe) 4 · ds4-server 127.0.0.1:8000 · single-stream /v1/chat/completions · OpenAI /v1/messages · Anthropic /v1/responses · Responses /v1/completions · completions 5 · Clientes Claude Code (via /v1/messages) Codex / seu app (via /v1/chat)

O GGUF assimétrico (1) alimenta o núcleo C com kernels Metal (2); o KV cache (3) vive entre RAM e disco; o ds4-server (4) expõe quatro famílias de API e os clientes (5) falam o protocolo que já conhecem.

✓ provado neste Mac

Nesta sessão, no M5 Max do fundador: git clone && make compilou 5 binários Metalds4, ds4-server, ds4-bench, ds4-eval e ds4-agent — com exit 0, e os binários rodam. Não é "deve compilar": compilou e executou.

02 · A quantização assimétrica 2/8-bit

Aqui está a sacada que faz 284B caber em 81 GB sem virar lixo. O DS4 não quantiza tudo no mesmo nível. Os especialistas roteados — a maior parte dos parâmetros, mas só um punhado ativo por token — vão para 2-bit. Todo o resto (atenção, embeddings, roteador, camadas densas) fica em Q8. A precisão é gasta onde importa para a fidelidade, e a economia é feita onde há volume.

Os quants de 2-bit não são brincadeira; ele chama ferramentas de forma confiável.— antirez, DS4 MODEL_CARD
Por que isso funciona: num MoE, os especialistas roteados são onde mora o volume de parâmetros, mas como só ~13B ativam por token, o erro de quantização de cada um pesa pouco no resultado. As partes que tocam todo token (atenção, roteador) ficam em Q8 para não acumular erro. É a tese da Lição 03 — quantização — aplicada com bisturi, não com martelo.

03 · Streaming de SSD: a RAM vira um espectro

Este é o mecanismo mais original do DS4. Em vez de tratar a RAM como um corte rígido — "cabe ou não cabe" — o DS4 trata o SSD como uma extensão contínua. Os pesos não-roteados (atenção, roteador, densas) ficam residentes na memória. Os especialistas roteados são lidos do GGUF sob demanda: quando o roteador pede um especialista que não está no cache, ele é trazido do SSD (cache-miss). E o KV cache é, nas palavras de antirez, "um cidadão de disco de primeira classe".

RAM unificada (residente) acesso da GPU em alta banda Pesos NÃO-roteados — sempre residentes atenção · roteador · camadas densas · Q8 Cache de especialistas roteados os experts quentes ficam aqui E12 E47 E03 livre livre KV cache — começa na RAM, transborda p/ disco SSD (GGUF · 81 GB) cidadão de disco de 1ª classe Todos os especialistas roteados (2-bit) E00 E01 E88 E89 só os pedidos sobem à RAM streaming = níveis contínuos de velocidade cache-miss → stream do expert E88 cache-hit → zero disco (E03/E12/E47 já na RAM)

Pesos não-roteados ficam fixos na RAM; os especialistas quentes vivem num cache; um expert frio (E88) é trazido do SSD só quando o roteador o pede. Mais RAM = mais experts cabem residentes = menos misses = mais rápido — um espectro, não um corte.

O KV cache é um cidadão de disco de primeira classe. O streaming de SSD transforma a RAM disponível de um corte rígido num espectro contínuo de níveis de velocidade.— antirez, DS4 README

04 · Quanto baixar para cada classe de RAM

O download não é tamanho único. Cada quant casa com uma faixa de memória: quanto mais RAM, mais experts cabem residentes e maior a qualidade que você pode pagar. Todos vêm de hf.co/antirez/deepseek-v4-gguf.

Download (disco) × classe de RAM — ✓ cabe · ✗ não cabe 96 GB 128 GB 256 GB 512 GB q2-imatrix ≈ 81 GB q2-q4-imatrix ≈ 98 GB q4-imatrix ≈ 153 GB pro-q2 (V4-Pro) ≈ 430 GB ↓ seu M5 Max

Num M5 Max de 128 GB, o q2-imatrix (81 GB) cabe com folga e o q2-q4-imatrix (98 GB) cabe apertado; o q4 e o pro-q2 pedem máquinas maiores. O streaming de SSD suaviza as bordas, mas a tabela é o ponto de partida.

Alvo de downloadDisco ≈Classe de RAMVariante
q2-imatrix81 GBMacs de 96 / 128 GBV4-Flash
q2-q4-imatrix98 GB128 GB (mais qualidade)V4-Flash
q4-imatrix153 GB≥ 256 GBV4-Flash
pro-q2430 GB512 GBV4-Pro

Todos de hf.co/antirez/deepseek-v4-gguf. O q2-imatrix é o ponto de entrada para os Macs de coding/agente.

05 · Do clone ao cliente: o fluxo

Quatro passos te levam de zero a um endpoint local servindo. Os dois primeiros — clone e make — já estão provados neste Mac. Os outros dois dependem só de disco e de apontar o cliente.

1 · git clone repo do DS4 ✓ provado neste Mac 2 · make (Metal) 5 binários · exit 0 ✓ provado neste Mac 3 · download_model.sh q2-imatrix ≈ 81 GB · do HF 4 · ds4-server 127.0.0.1:8000 single-stream 5 · cliente Claude Code / Codex De zero a um endpoint local servindo — 5 passos Status: o DS4 está em BETA ("existe há poucos dias"); o ds4-agent está em ALPHA. ⚠ no macOS, NUNCA rode make cpu — bug da VM dá kernel panic. Use Metal (default).

O comando, na prática

# 1+2 — clone e build (provado neste Mac: 5 binários Metal, exit 0)
git clone <repo-do-ds4> && cd ds4 && make
# → ds4  ds4-server  ds4-bench  ds4-eval  ds4-agent

# 3 — baixar o quant que cabe nos 128 GB (≈ 81 GB)
./download_model.sh q2-imatrix

# 4 — servir (NUNCA make cpu no macOS: kernel panic; Metal é o default)
./ds4-server   # OpenAI + Anthropic + Responses + completions em 127.0.0.1:8000

# 5 — plugar um cliente (ex.: chamada Anthropic-compatível)
curl -s 127.0.0.1:8000/v1/messages -d '{"model":"deepseek-v4-flash","messages":[...]}'
um modelo de fronteira, local

A leitura de antirez é o ponto da lição inteira: usar um modelo local para o trabalho que você normalmente terceirizaria para o Claude ou o GPT. No eixo A→B (A = modelo local pequeno, B = fronteira), o DS4 "é muito mais B do que A". É por isso que vale aprender o engine, e não só rodar um chat de brinquedo.

06 · O que "single-stream" significa

O ds4-server aceita os quatro protocolos, mas tem uma propriedade que define como você o opera: ele é single-stream — uma única requisição em voo por vez. Não há paralelismo de requisições; o servidor processa um grafo de cada vez e serializa o resto. No diagrama, três clientes chegam, mas só um atravessa o worker; os outros esperam a vez.

Uma requisição por vez — o worker de grafo é serializado (single-stream) requisições HTTP req A · /v1/messages req B · /v1/chat (espera) req C · /v1/responses (espera) fila serializa B, C 1 em voo worker de grafo único DeepSeek-V4-Flash · kernels Metal roteador → 13B ativos · KV cache tokens (stream) → resposta da req A B e C só começam quando A termina — sem concorrência de requisições no servidor. Consequência prática: 1 cliente sério por vez; para visão concorrente, separe o endpoint (Lição 08).

Três requisições chegam; a fila serializa B e C; o worker de grafo único processa A e devolve tokens em stream. "Single-stream" = uma em voo — planeje seu uso (e a visão) em torno disso.

BETA — leia antes de depender disso: o DS4 "existe há poucos dias" e está em beta; o ds4-agent é alpha. Trate como ferramenta de fronteira em movimento: ótimo para trabalho sério agora, mas não como infra estável de produção ainda. E a regra que pode custar o sistema: no macOS, nunca make cpu — um bug da VM dá kernel panic. Sempre Metal (o default).
1. O que a quantização assimétrica 2/8-bit do DS4 faz, exatamente?
Correto: c. Os experts roteados concentram os parâmetros mas só ~13B ativam por token, então o erro do 2-bit pesa pouco; as partes que tocam todo token ficam em Q8. Por isso "os quants de 2-bit não são brincadeira" e ele chama ferramentas de forma confiável (MODEL_CARD).
2. O que o streaming de SSD do DS4 muda na relação entre RAM e modelo?
Correto: b. Não-roteados ficam residentes; experts frios são trazidos do SSD sob demanda; o KV cache é "cidadão de disco de primeira classe". Mais RAM = mais experts residentes = menos misses = mais rápido — um espectro, não um cutoff (README).