Encaminhe solicitações aos pods ideais com base em métricas de fila e cache de GPU em tempo real para reduzir o tempo até o primeiro token (TTFT).
Recursos
O Gateway with Inference Extension é um componente de gateway aprimorado baseado na Gateway API da comunidade Kubernetes e na especificação Inference Extension. Ele oferece roteamento nas camadas 4 e 7 com capacidades adicionais para inferência de IA generativa, simplifica o gerenciamento de services de inferência e otimiza o balanceamento de carga entre múltiplas cargas de trabalho.
Oferece suporte a roteamento nas camadas 4 e 7 com as seguintes capacidades de inferência de IA:
Balanceamento de carga ciente de inferência: Encaminha solicitações com base em métricas em tempo real do servidor de inferência (profundidade da fila e utilização do cache KV da GPU) em vez de distribuição uniforme, mantém a utilização consistente da GPU e reduz a latência TTFT.
Roteamento ciente de modelo: Direciona solicitações pelo nome do modelo conforme a especificação da API OpenAI. Para um modelo base com múltiplos adaptadores LoRA, o canary release direciona o tráfego para adaptadores específicos pelo nome do adaptador.
Criticidade do modelo: Atribui um nível de criticidade a cada modelo. Solicitações
Criticaltêm prioridade sobre cargas de trabalho de menor criticidade.
Conceitos principais
Dois recursos personalizados estendem a Gateway API do Kubernetes:
|
Recurso |
Finalidade |
|
InferencePool |
Agrupa pods que compartilham a mesma configuração de computação, tipo de acelerador, modelo fundamental e servidor de modelos. Pode abranger pods em vários nós ACK para garantir escalabilidade e alta disponibilidade. |
|
InferenceModel |
Define o nome do modelo atendido por um InferencePool e suas propriedades, incluindo o nível de criticidade. |
O diagrama a seguir mostra a relação entre InferencePool, InferenceModel e os recursos da Gateway API.
Como funciona
O gateway avalia as seguintes métricas em tempo real em cada pod para rotear as solicitações recebidas:
Comprimento da fila de solicitações (
vllm:num_requests_waiting): Quantidade de solicitações aguardando na fila. Pods com filas menores processam novas solicitações mais rapidamente.Utilização do cache KV da GPU (
vllm:gpu_cache_usage_perc): Percentual do cache KV da GPU em uso. Uma utilização menor indica maior capacidade disponível para novas solicitações.
Com base nessas métricas, o gateway encaminha cada solicitação ao pod mais apto a processá-la.
O diagrama a seguir ilustra o fluxo de solicitações.
Por que usar balanceamento de carga ciente de inferência
O balanceamento de carga HTTP padrão distribui solicitações uniformemente entre os pods. Essa abordagem funciona bem para services sem estado, mas não é adequada para inferência de modelos de linguagem grandes (LLM), onde o custo computacional de cada solicitação é imprevisível.
A inferência de LLM ocorre em duas fases:
Fase de preenchimento (Prefill): Codifica a entrada.
Fase de decodificação: Avança em etapas; cada etapa decodifica a entrada anterior e gera um token (correspondente aproximadamente a uma palavra).
Como o comprimento da saída é imprevisível, a distribuição uniforme gera carga desequilibrada na GPU — alguns pods tornam-se gargalos enquanto outros ficam ociosos.
O balanceamento de carga ciente de inferência encaminha cada solicitação ao pod com maior capacidade disponível, considerando a profundidade da fila e a utilização do cache KV da GPU em tempo real. Isso mantém a carga da GPU equilibrada, reduz o TTFT e melhora o throughput.