Processamento contínuo e estático em lotes: como funciona o escalonamento de LLM
Tradução automática
Este artigo foi traduzido automaticamente a partir da versão original em inglês.
O processamento estático em lotes agrupa pedidos para uma execução de inferência. O processamento contínuo em lotes atualiza o conjunto de pedidos ativos entre iterações de geração: os pedidos concluídos saem e os pedidos em espera que cumprem os requisitos entram. Assim, o servidor pode reutilizar capacidade sem esperar que todos os pedidos originais terminem.
Para os engenheiros de serving, o benefício depende da variabilidade dos comprimentos das respostas, da política de escalonamento, da capacidade de memória e dos requisitos de latência.
Compare comprimentos de saída diferentes
Suponha que três pedidos precisam de 10, 40 e 100 tokens de saída. Num ciclo simples de geração com um lote fixo que não substitui os pedidos concluídos, a capacidade ocupada pelos dois primeiros fica disponível antes de o terceiro terminar. O servidor continua a esperar pela resposta mais longa do lote antes de iniciar outro lote completo.
Um escalonador por iteração pode remover cada pedido concluído e admitir outro. Orca apresentou uma arquitetura de serving de LLM que usa esta abordagem de escalonamento. A admissão continua a exigir blocos livres de KV cache e um orçamento de iteração compatível. O processamento contínuo em lotes não significa que todos os pedidos em fila comecem imediatamente.
Os novos prompts também precisam de prefill. O prefill dividido em segmentos pode partilhar os orçamentos de iteração com as descodificações em curso. As regras de admissão e prioridade do escalonador afetam, por isso, tanto o tempo até ao primeiro token como os intervalos entre os tokens seguintes.
Compare o escalonador e o runtime completo
A experiência da Anyscale de 2023 registou cerca de 4x para o FasterTransformer, 8x para as suas configurações de processamento contínuo em lotes e 23x para o vLLM face à sua implementação de referência simples. Usou OPT-13B, uma A100-40GB, 1,000 pedidos, entradas de 512 tokens e uma distribuição exponencial dos comprimentos de saída com uma média de 128 tokens. Estes resultados correspondem a implementações completas nessa configuração, e não ao efeito isolado de uma única alteração de escalonamento.
Para a sua comparação, registe:
| Verificação | Porque importa |
|---|---|
| Distribuições de chegada dos pedidos e dos comprimentos de saída | Determinam a capacidade não utilizada e a pressão sobre a fila |
| Número máximo de sequências ativas e orçamento de tokens | Limitam o trabalho em cada iteração |
| Alocação de KV e preempção | Podem impedir novas admissões |
| TTFT e latência de geração por pedido | Revelam o custo para cada pedido |
| Taxa de sucesso e goodput | Mostram se o trabalho adicional cumpre o objetivo do serviço |
Analise os pedidos curtos e longos separadamente. Um débito total mais elevado pode coexistir com uma latência pior para um grupo de pedidos. Escolha as definições de escalonamento com base nos requisitos de serviço medidos.
Guia de engenharia: processamento contínuo em lotes explica em conjunto os mecanismos de alocação e escalonamento.