Throughput-Optimal Scheduling Algorithms for LLM Inference and AI Agents
Este artigo estabelece os fundamentos matemáticos de filas para inferência de LLM, provando que algoritmos de agendamento que conservam trabalho alcançam a máxima vazão tanto para cargas de trabalho individuais quanto para agentes de IA, ao mesmo tempo em que avalia sistemas do mundo real para confirmar a optimalidade do Orca e do Sarathi-Serve e alerta contra a instabilidade do FasterTransformer e do vLLM padrão.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você gerencia uma fábrica de alta velocidade que constrói robôs personalizados. Nesta fábrica, cada pedido (uma "solicitação") passa por duas etapas distintas:
- A Fase de Configuração (Prefill): Você lê os projetos e reúne todas as peças necessárias. Este é um trabalho pesado que exige muita capacidade de processamento (computação), mas ocorre tudo de uma só vez.
- A Fase de Montagem (Decode): Você começa a construir o robô, adicionando uma peça de cada vez, uma por uma. Este é um trabalho mais lento e intensivo em memória, que ocorre passo a passo.
Sua fábrica possui um braço robótico gigante e super-rápido (a GPU) que pode trabalhar em múltiplos pedidos simultaneamente. No entanto, o braço tem um limite: ele só pode segurar um determinado peso total de peças em sua garra de cada vez (o Orçamento de Tokens).
O artigo que você forneceu é um estudo matemático sobre como organizar os pedidos para que sua fábrica nunca pare de funcionar e produza o máximo possível de robôs sem ficar congestionada.
Aqui está a análise de suas descobertas usando analogias simples:
1. A Regra de Ouro: "Não Deixe o Braço Ocioso"
A descoberta mais importante neste artigo é um conceito chamado "Conservador de Trabalho" (Work-Conserving).
Imagine que seu braço robótico está pronto para pegar peças.
- O Jeito Ruim: Você só permite que o braço pegue peças de "Configuração" se houver apenas pedidos de Configuração esperando. Se houver pedidos de "Montagem" esperando, você os ignora, mesmo que o braço tenha espaço vazio. Ou, você só permite que ele pegue peças de "Montagem" se houver apenas pedidos de Montagem.
- Resultado: O braço fica pela metade vazio, esperando um tipo específico de pedido, enquanto uma enorme pilha do outro tipo de pedido se acumula. A fábrica desacelera ou trava.
- O Jeito Bom (Conservador de Trabalho): Se o braço tem espaço, você o preenche com o que quer que esteja disponível. Você mistura peças de Configuração e peças de Montagem no mesmo lote. Você nunca deixa o braço ocioso se houver trabalho a ser feito.
A Alegação do Artigo: Algoritmos que seguem esta regra de "encher o balde" (como Orca e Sarathi-Serve) são matematicamente comprovados como os mais eficientes. Eles conseguem lidar com a quantidade máxima possível de trabalho sem que o sistema colapse.
2. Os Gerentes "Antigos" vs. "Novos" da Fábrica
Os autores testaram quatro "gerentes" populares (algoritmos de agendamento) para ver quem seguia a Regra de Ouro:
- FasterTransformer & Vanilla vLLM (Os Gerentes Rígidos): Estes gerentes são muito exigentes.
- FasterTransformer só pega peças de Montagem. Se não houver pedidos de Montagem, ele ignora os pedidos de Configuração esperando na fila, mesmo que o braço esteja vazio.
- Vanilla vLLM só pega peças de Configuração. Se não houver pedidos de Configuração, ele ignora os pedidos de Montagem.
- Veredito: Estes não são ótimos. Sob carga pesada, eles fazem a fábrica ficar congestionada e instável.
- Orca & Sarathi-Serve (Os Gerentes Flexíveis): Estes gerentes misturam os dois tipos de trabalho. Eles preenchem o braço com o que couber.
- Veredito: Estes são ótimos. Eles mantêm a fábrica funcionando suavemente na velocidade máxima.
3. A Fábrica de "Agente de IA" (Fluxos de Trabalho Complexos)
Às vezes, um pedido não é apenas um único robô; é uma equipe inteira de robôs trabalhando juntos.
- O DAG (Grafo Acíclico Direcionado): Imagine um fluxo de trabalho onde o Pedido A vai para a Estação 1, depois Estação 2, depois Estação 3, e nunca volta.
- Descoberta: Desde que o fluxo de trabalho seja uma linha reta (sem loops), a regra "Não Deixe o Braço Ocioso" ainda funciona perfeitamente em todas as estações.
- O Fork-Join (Furca-União): Imagine que o Pedido A se divide em três subtarefas que vão para três estações diferentes, e todas precisam terminar antes que a etapa final possa acontecer.
- Descoberta: A regra "Não Deixe o Braço Ocioso" também funciona aqui.
- O Ciclo (A Armadilha): Imagine que o Pedido A vai para a Estação 1, depois Estação 2, mas o Pedido B vai da Estação 2 de volta para a Estação 1. Eles estão perseguindo um ao outro em um círculo.
- Descoberta: Aqui, a regra "Não Deixe o Braço Ocioso" pode falhar. Mesmo que os gerentes estejam fazendo o seu melhor, o tráfego circular pode causar um congestionamento que nunca se resolve. O artigo mostra que, se sua fábrica tiver esses loops circulares, você precisa de um gerente muito mais inteligente e cuidadoso, não apenas um que "encha o balde".
4. A Surpresa do "Tamanho do Balde"
Há um segundo limite na fábrica: o Tamanho do Lote (Batch Size). Este é o número máximo de pedidos que o braço pode segurar, independentemente do peso deles.
- A Surpresa: Os autores descobriram que, às vezes, encher o braço até seu limite absoluto de peso (o Orçamento de Tokens) é, na verdade, uma má ideia.
- A Analogia: Imagine que você tem um balde que suporta 100 libras. Você tem 100 pedrinhas minúsculas (Configuração) e 100 tijolos pesados (Montagem).
- Se você tentar encher o balde até 100 libras com tijolos, você pode caber apenas 5 tijolos. O tempo que leva para levantar essa carga pesada é longo.
- Mas, se você parar em 50 libras (uma carga menor), você pode ser capaz de levantá-la muito mais rápido, permitindo que você faça mais viagens por hora.
- A Descoberta: Em situações específicas, a estratégia mais eficiente é parar de encher o balde antes que ele esteja cheio para manter a velocidade de processamento alta. Isso significa que, mesmo os "Bons Gerentes" (Conservadores de Trabalho) podem falhar se as regras da fábrica (limites de tamanho de lote) forem muito rígidas e a mistura de pedidos for exatamente a certa para causar um congestionamento.
Resumo
O artigo nos diz:
- Misture seu trabalho: Não separe tarefas de Configuração e Montagem. Misture-as no mesmo lote para manter a GPU ocupada.
- Orca e Sarathi-Serve são os vencedores: Eles seguem a regra "misturar e encher", tornando-os as escolhas mais estáveis e eficientes para a maioria das situações.
- Cuidado com loops: Se seus agentes de IA enviarem tarefas de volta e para frente entre servidores em um círculo, regras simples de "encher o balde" podem não funcionar; você precisa de controle de tráfego especial.
- Cheio nem sempre é o melhor: Às vezes, deixar um pouco de espaço vazio no seu lote é mais inteligente do que encher até a borda, dependendo do tamanho das tarefas individuais.
O objetivo de toda essa matemática é ajudar engenheiros a construir sistemas de IA que não travem quando milhões de pessoas fazem perguntas ao mesmo tempo.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.