
vLLM 0.28.0 reúne 584 commits de 270 colaboradores
Visão geral
O vLLM 0.28.0 foi lançado com 584 commits de 270 colaboradores, dos quais 76 contribuem pela primeira vez. A versão traz melhorias de desempenho para modelos específicos, avanços em decodificação especulativa, suporte ampliado de hardware e ajustes de API, além de mudanças que quebram compatibilidade.
Otimizações para modelos específicos
O destaque é um esforço de otimização para o Kimi-K3: suporte a Decode Context Parallel (DCP), kernels fundidos FlashKDA para decode e prefill, suporte a ativação SiTU no MegaMoE, GEMM-RS para paralelismo de sequência, all-gathers combinados com aceleração de 1,5x a 3x no nível de kernel, um orçamento adaptativo de tokens especulativos que melhora o TTFT do DSpark em cerca de 60% e sharding opcional de shared-expert que economiza aproximadamente 17 GiB de memória por GPU. O Kimi-K3 agora também roda em ROCm com o V2 model runner.
Para o DeepSeek V4, o sparse MLA funciona de ponta a ponta para decode simples, MTP e decodificação especulativa DSpark, com suporte a AMD Quark NVFP4, prompts e mapeamentos de reasoning-effort, otimizações de kernels de metadados sparse top-k, regiões CUDA graph reduzidas no modo eager e habilitação em ROCm nos chips gfx11 e gfx950.
Decodificação especulativa e Model Runner V2
Na área de decodificação especulativa, a versão inclui o DFlash2 com convolução local e um seletor de candidatos, verificação agendada por confiança no DSpark e agendamento assíncrono habilitado automaticamente para draft models.
O Model Runner V2 amadureceu com suporte a desagregação E/P/D, offloading de pesos, cache KV para MTP de múltiplas camadas, CUDA graphs para encoder, pooling token-wise no decoder, modelos de pooling via Transformers, modelos sem atenção e suporte a thinking_token_budget.
Cache KV em camadas e frontend Rust
O offloading de cache KV em camadas ganhou suporte a descarga em disco, gerenciadores de camada secundária fora da árvore via module_path, resultados parciais de carregamento, métricas de tiering e um layout canônico de CPU para offload independente de paralelismo. Na integração com Mooncake, há suporte a tenant ID e wheels oficiais na imagem Docker.
O frontend em Rust recebeu um renderizador standalone, inferência multimodal de imagem via gRPC, roteamento explícito por rank em data parallel, controle de ciclo de vida para RL e schemas protobuf publicados no Buf.
Hardware e defaults
Para NVIDIA, há suporte a FlashInfer XQA em SM12x, kernel fundido CuTeDSL em SM100 e configs de tuning FP8 para o GB10. No AMD ROCm, a stack subiu para torch 2.12 e triton 3.7, com AITER e inferência FP8 habilitados no GFX120x. No Intel XPU, há um backend linear com blockwise GEMM e pesos MXFP8 para o DeepSeek V4. No CPU, um backend MLA permite rodar DeepSeek-V2/V3, e GPTQ e AWQ foram habilitados em s390x.
Os novos defaults incluem max_num_batched_tokens elevado de 8192 para 16384, prefix caching habilitado por padrão para modelos Mamba e captura de CUDA graph padrão em 1024 no Blackwell.
API, segurança e breaking changes
Na API, há prioridade de requisição via cabeçalho HTTP, count_reasoning_tokens no parser de streaming e melhorias na API Anthropic (erros 4xx em /v1/messages, preservação de disable_parallel_tool_use) e Cohere. Em saída estruturada, stop tokens são mascarados no xgrammar até a gramática terminar, e bytes NUL e IDs de token negativos são rejeitados.
Em segurança, foi corrigido um DoS via falsificação de sample-rate que burlava o limite de duração do decode de áudio; _load_ov2_processor passou a ser protegido por resolve_trust_remote_code, e a documentação agora avisa que --api-key não protege todos os endpoints.
As breaking changes incluem: suporte a bitsandbytes migrado para plugin fora da árvore, atualização do Transformers para 5.15.0, remoção do calculate_kv_scales e do override_attention_dtype, e remoção de código MoE legado. A imagem de runtime subiu para Ubuntu 24.04.