Avançado

Serving stacks: vLLM, SGLang e TensorRT-LLM

Serving stacks combinam kernels, cache, scheduling, paralelismo, APIs e observabilidade com trocas distintas entre portabilidade e otimização.

Atualizada em

1

Conceito

Um serving engine é mais que biblioteca de multiplicação de matrizes. Ele carrega checkpoints, escolhe kernels, distribui pesos, aloca KV state, agrupa requisições mutáveis, aplica decoding, expõe APIs, faz streaming, registra métricas e recupera falhas. vLLM, SGLang e TensorRT-LLM cobrem peças sobrepostas com centros de design diferentes.

vLLM cresceu ao redor de PagedAttention e scheduling por iteração. KV em blocos e continuous batching buscam utilização alta com comprimentos variáveis. Oferece APIs familiares e ecossistema amplo de modelos abertos. Features como tensor parallelism, prefix caching, adapters, quantização e speculation dependem da versão e arquitetura; confira a matriz de suporte da versão fixada.

SGLang combina linguagem frontend para programas estruturados com runtime. Aplicações executam prompts repetidos, geração ramificada, ferramentas ou workflows multi-call com prefixos comuns. Representar essa estrutura permite reuse e scheduling entre etapas. SGLang também serve APIs convencionais; sua ideia distinta é que programas de inferência têm estrutura além de strings isoladas.

TensorRT-LLM é stack centrado em NVIDIA com kernels otimizados, building de engines, quantização, in-flight batching e multi-GPU. Integração apertada libera features do hardware, mas exige GPUs, CUDA, drivers, definições de modelo, plugins e build compatíveis. Uma engine otimizada para certo shape talvez precise ser refeita quando as premissas mudam.

Esses resumos envelhecem depressa. Compare capacidades na documentação oficial e na versão implantada. “Suporta modelo X” pode excluir uma variante, adapter, cache dtype, decoder restrito ou formato. Fallback silencioso pode ser correto e lento; combinação sem suporte deve falhar claramente, não gerar saída sutilmente errada.

Seleção começa por corretude. Verifique tokenizer e chat template, logits ou saídas determinísticas, stops, tool schemas, constraints e posições longas. Depois teste o workload: distribuição de prompts e saídas, concorrência, streaming, cancelamento, repetição de prefixos e adapters.

Performance tem vários eixos. TTFT premia admissão e prefill. Inter-token latency importa na leitura. Request throughput define capacidade. Goodput conta somente requisições dentro do SLO. Folga de memória determina tolerância a rajadas. Um batch ou máximo do fabricante não responde tudo.

Operação decide muito. Examine métricas, traces, request IDs, health checks, rolling upgrades, model load, cleanup, backpressure, admission, multi-tenancy e isolamento. Tamanho do container e cold start pesam em autoscaling. Um pequeno ganho de kernel não compensa uma engine impossível de diagnosticar.

A arquitetura pode misturar stacks. Batch offline valoriza throughput; interação valoriza tail latency. Um router direciona modelos a engines, mas cada runtime amplia testes e observabilidade. Padronize o contrato da aplicação e mantenha testes específicos.

Planeje também upgrades. Checkpoints, drivers, kernels e formatos evoluem em ritmos diferentes. Faça canary com tráfego representativo, compare distribuição das saídas e preserve rollback do runtime e do artefato. Um upgrade que melhora média e piora cancelamento, uso de cache ou percentis de uma classe crítica não cumpre o contrato. Capacidade declarada só vale junto com evidência da versão exata.

A regra durável é empírica. Primeiro confirme features e corretude. Depois meça versões fixas no hardware-alvo com carga representativa e decoding igual. Por fim avalie ownership operacional. A melhor stack não é a do maior número de pico, mas a que cumpre previsivelmente qualidade e latência.

2

Como explicar para uma criança de cinco anos

Três transportadoras movem o mesmo container, mas otimizam redes distintas. Uma oferece terminal flexível e excelente arrumação de armazém. Outra coordena rotas de várias paradas e reutiliza itinerários comuns. A terceira integra caminhões, depósitos e carregadores de um ecossistema industrial. vLLM, SGLang e TensorRT-LLM também sobrepõem features, mas diferem no modelo de programação, hardware, kernels e superfície operacional.

3

Ensine de volta

Compare a ênfase arquitetural de vLLM, SGLang e TensorRT-LLM e dê um processo de seleção por workload, sem declarar vencedor universal.

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

Salvo somente neste dispositivo.

Ver uma resposta-modelo

vLLM é conhecido por PagedAttention, continuous batching e uma interface ampla. SGLang combina runtime com uma linguagem para programas estruturados, multi-call e prefix reuse. TensorRT-LLM oferece compilação, kernels, quantização e multi-GPU focados em NVIDIA. A seleção verifica modelo e features, hardware, distribuição de comprimentos, concorrência e SLOs; depois mede versões fixas com qualidade e decoding equivalentes sob carga realista e avalia operação e fallbacks.

4

Teste seu entendimento

1. O que conferir antes de comparar throughput entre stacks?
Resposta e explicação

Mesmo modelo, precisão, decoding, comprimentos, concorrência, hardware e corretude — Resultados dependem do workload; comparações sem controle medem premissas distintas.

2. Qual é um foco característico de SGLang?
Resposta e explicação

Execução eficiente de programas estruturados com múltiplas chamadas de modelo — SGLang une abstração de programação e runtime para geração estruturada e reuse.

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

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.