Avançado

Serving stacks: vLLM, SGLang, TensorRT-LLM

Um mapa de decisão para escolher o engine que serve o Qwen3.8-27B — cada stack ganha depois sua própria lição na Track 8.

Atualizada em

01 · Conceito

Conceito

Você escolheu o Qwen3.8-27B; agora algo precisa servi-lo. O model card nomeia vLLM, SGLang e Transformers como caminhos suportados, o SGLang mantém uma página oficial de cookbook para exatamente este modelo, e TensorRT-LLM é a opção NVIDIA-máxima. Esta lição é deliberadamente um mapa de decisão, não um manual: cada stack ganha sua própria lição na Track 8, onde moram as flags, configs e modos de falha. Aqui você aprende apenas por qual porta entrar.

O primeiro portão é aritmética, não software. Os pesos custam 54 GB em bf16, e a lição 9.3 é dona do que sobra numa placa de 80 GB: 23,3 GiB de pool de KV depois de descontada a reserva do próprio framework, ou seja, aproximadamente 381.700 tokens a 64 KiB por token da lição 7.2, ou onze sessões de 32K. Não recorra ao óbvio 805480 - 54 aqui — essa subtração é justamente o erro trabalhado com que a 9.3 abre. Ela infla o pool só um pouco, mas dividi-lo apenas pelo contexto, como se uma sequência não custasse nada além do seu cache, superestima em um quinto quantas conversas cabem. Se seu orçamento de hardware é uma placa de 24 ou 48 GB, esta lição inteira é prematura: você está no caminho dos artefatos quantizados que passa pela lição 7.12 e pelos runners locais da Track 8, e não escolhendo entre engines de data center.

Com a capacidade resolvida, case o engine ao formato da carga. vLLM é o padrão para uma API de alta concorrência sobre conversas de comprimento variável em GPUs que você controla: ele cresceu exatamente em torno da maquinaria de PagedAttention e continuous batching da lição 7.8, serve uma API no estilo OpenAI e cobre a superfície mais ampla de modelos abertos — lição 8.4. SGLang conquista seu lugar quando seu tráfego não são prompts isolados, mas programas estruturados: pipelines de agentes fazendo muitas chamadas relacionadas, prefixos compartilhados pesados e saída JSON restrita por schema; seu reuso de prefixo RadixAttention e o escalonamento em nível de programa miram essa estrutura, e seu cookbook oficial para o Qwen3.8-27B o torna cidadão de primeira classe aqui — lição 8.5. TensorRT-LLM serve a uma frota NVIDIA comprometida atrás do último ponto percentual de latência com builds de engine em FP8, desde que um time de ops possa assumir compilação, pinagem de versões e rebuilds quando os shapes mudarem — lição 8.6. Transformers puro continua certo para um único pesquisador em uma única GPU fazendo trabalho de corretude, não de throughput — lição 8.2. Nenhuma GPU? Um endpoint gerenciado como o Workers AI serve este modelo por token — USD 0,45 por milhão de tokens de entrada e USD 3,20 por milhão de saída, em agosto de 2026 — e a lição 8.11 faz essa conta de custo.

StackRecorra a ele quandoLição da Track 8
vLLMAPI de alta concorrência, chats de comprimento variável, GPUs sob seu controle8.4
SGLangProgramas de agente, prefixos compartilhados pesados, saída restrita por schema8.5
TensorRT-LLMFrota NVIDIA assumida, latência no último ponto percentual, um time de ops8.6
TransformersUma pessoa pesquisando, uma GPU, corretude acima de throughput8.2
llama.cpp / OllamaUm artefato quantizado numa workstation ou laptop8.7, 8.8
Endpoint gerenciadoNenhuma GPU; pagar por token8.11

O equívoco clássico é escolher pelo throughput de vitrine. Um benchmark de fornecedor num único batch size, num único comprimento de prompt e numa única quantization não diz quase nada sobre o seu goodput. A ordem corrigida: primeiro confirme que a versão do engine suporta o seu modelo exato — depois verifique corretude (paridade de tokenizer e chat template, tratamento do thinking mode, comportamento de parada, saída estruturada) e só então faça benchmark de versões pinadas no seu hardware, com as suas distribuições de prompt e de saída, configurações de decoding idênticas e concorrência semelhante à de produção. Meça time to first token, latência entre tokens e goodput contra o seu objetivo de latência — não um único número de pico.

Operações costumam decidir empates: métricas e traces, health checks, upgrades graduais, limpeza no cancelamento, controle de admissão, multi-tenancy, tamanho de contêiner e tempo de cold start. Um ganho marginal de kernel raramente justifica um engine que seu time não consegue diagnosticar às 3 da manhã. Misturar stacks é legítimo — geração em lote orientada a throughput num, serving interativo noutro — mas cada runtime extra multiplica os testes de conformidade.

Guarde o mapa, não os manuais: portão de hardware primeiro, depois o formato da carga — concorrência para o vLLM, estrutura de programa para o SGLang, latência NVIDIA-máxima para o TensorRT-LLM, simplicidade para o Transformers, ausência de hardware para um endpoint gerenciado — depois corretude, depois seu próprio benchmark. A Track 8 agora desce o stack como deve ser, e começa onde todo engine secretamente começa: lição 8.1, PyTorch como runtime de referência.

02 · Analogia

Analogia

Três operadoras de frete podem mover o mesmo contêiner, mas otimizam redes diferentes. Uma oferece um terminal público flexível e excelente organização de armazém. Outra coordena rotas recorrentes com várias paradas e reaproveita prefixos comuns de itinerário. Uma terceira integra fortemente caminhões, depósitos e maquinaria de carga de um único ecossistema industrial. vLLM, SGLang e TensorRT-LLM igualmente se sobrepõem em recursos, mas diferem em modelo de programação, foco de hardware e superfície operacional — escolha pelo formato da sua carga, não pelo folheto mais barulhento.

03 · Explique de volta

Explique de volta

Dê o mapa de decisão para servir o Qwen3.8-27B: o portão de hardware que vem primeiro, quais formatos de carga apontam para vLLM, SGLang, TensorRT-LLM, Transformers puro, runners locais ou um endpoint gerenciado, e o que precisa ser verificado antes de qualquer benchmark.

Mínimo: 80 caracteres e 15 palavras. Seu texto fica somente neste navegador.

Aguardando sua explicação.

Comparar com uma resposta-modelo

Primeiro o portão de hardware: 54 GB de pesos em bf16 significam uma GPU de data center ou sharding; abaixo desse orçamento você está no caminho local quantizado, e não escolhendo entre serving engines. Com capacidade em mãos, tráfego de API de alta concorrência e comprimento variável aponta para o KV paginado e o continuous batching do vLLM; programas agênticos com múltiplas chamadas, prefixos compartilhados e saída JSON restrita apontam para SGLang; uma frota NVIDIA comprometida atrás do último ponto percentual de latência, com um time de ops capaz de assumir builds de engine, aponta para TensorRT-LLM; trabalho de corretude com um único usuário aponta para Transformers puro; nenhuma GPU aponta para um endpoint gerenciado com cobrança por token. Antes de comparar qualquer número, verifique se a versão do engine realmente suporta esta arquitetura híbrida, e então faça benchmark de modelo, precisão, decoding, comprimentos e concorrência idênticos na sua própria carga.

04 · Teste seu entendimento

Teste seu entendimento

01O que deve ser verificado antes de comparar números de throughput entre stacks?
Resposta e explicação

Mesmo modelo, precisão, decoding, comprimentos, concorrência, hardware e corretude — e que cada versão de engine suporte a arquitetura, para começar — Resultados de serving são específicos de carga e configuração; comparações não controladas medem sobretudo suposições diferentes, e um engine sem suporte às camadas híbridas se desqualifica antes de qualquer benchmark.

02Pela lição 7.8, qual mecanismo permite a um engine admitir requisições em espera enquanto outras estão no meio da geração?
Resposta e explicação

Continuous batching, que reescalona a composição do batch nas fronteiras de iteração — A lição 7.8 mostrou que o escalonamento em nível de iteração substitui sequências concluídas imediatamente, em vez de manter faixas ociosas atrás de uma resposta longa.

Conclua o teach-back e acerte o quiz para finalizar a aula.

◎ · Marcador de evidência

Fontes

  1. Woosuk Kwon et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention.
  2. Lianmin Zheng et al. (2023). SGLang: Efficient Execution of Structured Language Model Programs.
  3. NVIDIA (2023). TensorRT-LLM.
  4. Qwen Team (2026). Qwen3.8-27B Model Card.
  5. Cloudflare (2026). Cloudflare Workers AI documentation.
  6. SGLang project (2026). SGLang cookbook: Qwen3.8-27B.