A Aceleração do MoE, Medida: 50 Prompts, Dois Modelos Qwen Locais, Um Mac Studio
Um modelo denso de 27B em 8 bits roda meu trabalho local de chat a 15 tokens por segundo. Seu irmão Mixture-of-Experts de 35B roda os mesmos prompts a 70. Passei 50 prompts pelos dois para descobrir o que essa velocidade extra realmente custa.
Meu modelo local de chat é um denso de 27B em 8 bits. Ele é preciso, é multilíngue e gera cerca de 15 tokens por segundo num Mac Studio de 48GB. Isso é mais rápido do que eu leio, então para rascunhar e reescrever ele nunca foi o gargalo. Mas 15 tokens por segundo é o tipo de número que você só para de notar porque se acostumou com ele.
Aí a mesma família de modelos lançou um irmão Mixture-of-Experts: 35B de parâmetros no total, mas só cerca de 3B ativos por token. No papel, isso deveria gerar muito mais rápido, porque cada token toca uma fração dos pesos. A pergunta que de fato importa não é se ele é mais rápido. É se ele é mais rápido de graça, ou se a velocidade cobra um preço silencioso na qualidade.
Então passei 50 prompts pelos dois e olhei cada resposta.
A configuração
Os dois modelos rodam sob a mesma stack local, na mesma máquina, alternados por um pequeno roteador para que só um ocupe a memória de cada vez. Mesmo build do llama.cpp, offload total para a GPU, cache KV em 8 bits, contexto de 64k, amostragem idêntica, modo de raciocínio desligado. As únicas variáveis são o modelo e sua quantização.
- Denso: Qwen3.6 27B, Q8_0, cerca de 27GB. A opção de alta fidelidade.
- MoE: Qwen3.6 35B-A3B, Q6_K, cerca de 27GB. Ativação esparsa, mesmo footprint de memória que o modelo denso. (Testei primeiro em Q5 e depois subi para Q6, por um motivo que a seção de qualidade deixa claro.)
Os 50 prompts cobrem dez categorias: explicação técnica, raciocínio, código, formatação estrita, sumarização, escrita criativa, prosa em alemão, prosa em português, pegadinhas factuais e reescrita. O catálogo completo, prompt a prompt, com as duas saídas lado a lado, acompanha este post.
Uma nota de honestidade antes dos números: isto é uma rodada, não uma média de várias, o julgamento é qualitativo, e alguns prompts de raciocínio bateram no limite de tokens e foram cortados no meio da solução. Encare como um teste de campo cuidadoso, não como um ranking.
Velocidade: 4,5 vezes, parelho em todas as categorias
| Categoria | Denso 27B (Q8) | MoE 35B (Q6) | Aceleração |
|---|---|---|---|
| Todos os 50 (média) | 15,6 tok/s | 70,4 tok/s | 4,5x |
| Técnico | 14,8 | 69,4 | 4,7x |
| Raciocínio | 14,9 | 68,7 | 4,6x |
| Código | 15,1 | 69,6 | 4,6x |
| Formatação | 16,2 | 74,8 | 4,6x |
| Alemão | 15,2 | 70,3 | 4,6x |
| Português | 15,2 | 70,0 | 4,6x |
O mais interessante nesta tabela é o quanto ela é monótona. A aceleração não depende da tarefa. É a arquitetura e a quantização, não o tipo de trabalho. Um modelo esparso que lê 3B de pesos por token em vez de 27B simplesmente movimenta menos dados, e no Apple Silicon, onde a geração de tokens é limitada pela largura de banda da memória e não pelo poder de cálculo, movimentar menos dados é o jogo inteiro.
Qualidade: quase empate, com um padrão
Se o MoE fosse 4,5 vezes mais rápido e claramente pior, este seria um post fácil e sem graça. Não é. Ao longo dos 50 prompts, os dois modelos trocaram vitórias, com a maioria das respostas num empate genuíno. Algumas observações que se sustentaram no conjunto todo:
Os dois são sólidos em fatos. Toda pegadinha clássica caiu certo para ambos: 9.9 é maior que 9.11, a capital da Austrália é Camberra, a Muralha da China não é visível da Lua a olho nu, e Estrasburgo era uma Cidade Imperial Livre em 1518, não francesa. Nenhuma alucinação dos dois lados.
O MoE é mais enxuto e direto. Diante da instrução de “ser conciso”, o modelo denso ofereceu três reescritas; o MoE deu uma única frase certeira. Diante de um problema de taxa com pegadinha, o MoE começou pela resposta enquanto o denso ainda enumerava máquinas quando ficou sem espaço. Seus slogans foram mais espirituosos e seu one-liner em bash, mais limpo. Latência mais baixa somada à tendência de responder primeiro é um ganho ergonômico de verdade.
O modelo denso em 8 bits parecia mais preciso, até eu olhar a quantização. Em Q5, o MoE cometeu dois erros de ortografia em português que o modelo de 8 bits não cometeu, e deixou escapar um travessão perdido numa reescrita de mensagem de erro. Esses deslizes se concentraram, de forma suspeita, num lugar só: ortografia de idiomas com menos recursos, exatamente o canto que uma quantização mais leve arredonda. Então rodei a suíte inteira de novo em Q6. O português voltou limpo, o travessão sumiu, e a velocidade de geração ficou igual, porque o gargalo é a largura de banda e o Q6 ainda movimenta muito menos dados por token do que o modelo denso. O que o Q6 não corrigiu: o MoE continuou lendo “garbage collection” como caminhões de lixo municipais num haicai, onde o modelo denso enxergou o conceito de programação. Esse é o jeito literal do modelo, não a quantização, e nenhuma quantidade de bits vai resolver. Então o trade-off de verdade, depois que você para de economizar na quantização, encolhe para um único nicho de jogo de palavras literal.
Mais bits não é mais inteligência
Há uma ironia elegante no resultado, que vale a pena considerar. O modelo que coloquei em produção é uma quantização de 6 bits. O que ele substituiu era de 8 bits, em tese o arquivo de maior fidelidade e menos comprimido. Pela visão ingênua de que mais bits significa mais qualidade, o denso de 27B em Q8 deveria ter vencido com folga. Não venceu. Um MoE de 6 bits empatou ou superou um modelo denso de 8 bits, e até a versão de 5 bits que testei primeiro manteve a paridade. O que se perde com uma quantização mais grosseira acabou sendo menor do que o que se ganha com uma rede maior e mais esparsa, com mais parâmetros totais à disposição. A largura de bits é um botão de ajuste, não o placar: arquitetura e contagem de parâmetros definem o teto, e a quantização só decide o quão perto dele você chega. A lição prática para escolher um modelo local é comparar as saídas reais, não o rótulo de precisão no arquivo.
O que isso significa
Para a maior parte do que um modelo local faz no dia a dia, em inglês e alemão, rascunhar, sumarizar, reescrever, explicar, programar, o MoE de 35B é um upgrade direto: praticamente a mesma qualidade a 4,5 vezes a velocidade e com o mesmo footprint de memória. Isso não é um ganho marginal de ajuste fino. É a diferença entre esperar e não esperar.
A ressalva era específica o suficiente para agir, então agi. Meu trabalho depende muito do português, então parei de economizar na quantização, rodei de novo em Q6, e os deslizes de ortografia sumiram sem custo nenhum de velocidade. O Q6 é o que atende meu trabalho de chat agora, sob o mesmo nome que o modelo denso usava, então tudo que está embaixo simplesmente ficou mais rápido sem saber que algo mudou.
O ponto mais amplo é o que o local-first não cansa de mostrar. Nada disso custou um centavo nem saiu da máquina. Sem cobrança por token, sem limite de requisições, sem um provedor decidindo o que o modelo vai ou não dizer. O experimento foram 50 prompts, dois arquivos de modelo e uma chamada de roteador para alternar entre eles. O hardware que você já tem vai te dizer qual modelo é certo para o seu trabalho, se você se der ao trabalho de medir em vez de chutar.