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çãoPorque importa
Distribuições de chegada dos pedidos e dos comprimentos de saídaDeterminam a capacidade não utilizada e a pressão sobre a fila
Número máximo de sequências ativas e orçamento de tokensLimitam o trabalho em cada iteração
Alocação de KV e preempçãoPodem impedir novas admissões
TTFT e latência de geração por pedidoRevelam o custo para cada pedido
Taxa de sucesso e goodputMostram 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.