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 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.
| Stack | Recorra a ele quando | Lição da Track 8 |
|---|---|---|
| vLLM | API de alta concorrência, chats de comprimento variável, GPUs sob seu controle | 8.4 |
| SGLang | Programas de agente, prefixos compartilhados pesados, saída restrita por schema | 8.5 |
| TensorRT-LLM | Frota NVIDIA assumida, latência no último ponto percentual, um time de ops | 8.6 |
| Transformers | Uma pessoa pesquisando, uma GPU, corretude acima de throughput | 8.2 |
| llama.cpp / Ollama | Um artefato quantizado numa workstation ou laptop | 8.7, 8.8 |
| Endpoint gerenciado | Nenhuma GPU; pagar por token | 8.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.
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
Conclua o teach-back e acerte o quiz para finalizar a aula.
◎ · Marcador de evidência
Fontes
- Woosuk Kwon et al. (2023). Efficient Memory Management for Large Language Model Serving with PagedAttention.
- Lianmin Zheng et al. (2023). SGLang: Efficient Execution of Structured Language Model Programs.
- NVIDIA (2023). TensorRT-LLM.
- Qwen Team (2026). Qwen3.8-27B Model Card.
- Cloudflare (2026). Cloudflare Workers AI documentation.
- SGLang project (2026). SGLang cookbook: Qwen3.8-27B.