Sobre a inferência de modelos no GKE


Nesta página, descrevemos os principais conceitos, benefícios e etapas para executar cargas de trabalho de inferência de modelos de IA generativa no Google Kubernetes Engine (GKE) usando os recursos de IA generativa do GKE.

A veiculação de inferência é essencial para implantar seus modelos de IA generativa em aplicativos reais. O GKE oferece uma plataforma robusta e escalonável para gerenciar cargas de trabalho conteinerizadas, o que o torna uma opção interessante para exibir seus modelos em desenvolvimento ou produção. Com o GKE, é possível usar os recursos do Kubernetes para orquestração, escalonamento e alta disponibilidade para implantar e gerenciar seus serviços de inferência de maneira eficiente.

Reconhecendo as demandas específicas da inferência de IA/ML, Google Cloud apresentou recursos de IA generativa do GKE, um conjunto de recursos projetados especificamente para aprimorar e otimizar a veiculação de inferência no GKE. Para mais informações sobre recursos específicos, consulte Recursos de IA generativa do GKE.

Terminologia

Esta página usa a seguinte terminologia relacionada à inferência no GKE:

  • Inferência: o processo de executar um modelo de IA generativa, como um modelo de linguagem grande ou modelo de difusão, em um cluster do GKE para gerar texto, embeddings ou outras saídas a partir de dados de entrada. A inferência de modelo no GKE aproveita os aceleradores para processar computações complexas de maneira eficiente em tempo real ou em lote.
  • Modelo: um modelo de IA generativa que aprendeu padrões com os dados e é usado para inferência. Os modelos variam em tamanho e arquitetura, desde modelos menores e específicos do domínio até redes neurais massivas com bilhões de parâmetros otimizados para diversas tarefas de linguagem.
  • Servidor de modelo: um serviço contêinerizado responsável por receber solicitações de inferência e retornar previsões. Esse serviço pode ser um app Python ou uma solução mais robusta, como o vLLM, o JetStream, o TensorFlow Serving ou o Triton Inference Server. O servidor de modelo processa o carregamento de modelos na memória e executa cálculos em aceleradores para retornar previsões de maneira eficiente.
  • Acelerador: hardware especializado, como unidades de processamento gráfico (GPUs) da NVIDIA e unidades de processamento de tensor (TPUs) do Google, que podem ser anexados a nós do GKE para acelerar as computações, principalmente para tarefas de treinamento e inferência.

Benefícios do GKE para inferência

A veiculação de inferência no GKE oferece vários benefícios:

  • Eficiência de preço-desempenho:tenha valor e velocidade para suas necessidades de veiculação de inferência. O GKE permite escolher entre uma gama de aceleradores poderosos (GPUs e TPUs), para que você pague apenas pela performance que precisa.
  • Implantação mais rápida: acelere o tempo de lançamento no mercado com práticas recomendadas, qualificações e práticas recomendadas personalizadas fornecidos pelos recursos de IA generativa do GKE.
  • Desempenho escalonável: escalone o desempenho com monitoramento pré-criado usando o Gateway de inferência do GKE, o Escalonamento automático horizontal de pods (HPA) e métricas personalizadas. É possível executar uma variedade de modelos personalizados ou pré-treinados, de 8 bilhões a 671 bilhões de parâmetros.
  • Portabilidade total: aproveite a portabilidade total com padrões abertos. O Google contribui com as principais APIs do Kubernetes, incluindo Gateway e LeaderWorkerSet, e todas as APIs são portáteis com distribuições do Kubernetes.
  • Suporte ao ecossistema: crie no ecossistema robusto do GKE, que oferece suporte a ferramentas como o Kueue para enfileiramento e gerenciamento avançados de recursos e o Ray para computação distribuída, para facilitar o treinamento e a inferência de modelos dimensionáveis e eficientes.

Como funciona a inferência no GKE

Esta seção descreve, de forma geral, as etapas para usar o GKE para servir inferências:

  1. Contenerizar seu modelo: implante um modelo contêinerizando o servidor de modelo (como o vLLM) e carregando os pesos do modelo do Cloud Storage ou de um repositório como o Hugging Face. Quando você usa o Guia de início rápido da inferência do GKE, a imagem contêinerizada é gerenciada automaticamente no manifesto.

  2. Criar um cluster do GKE: crie um cluster do GKE para hospedar sua implantação. Escolha o Autopilot para uma experiência gerenciada ou o Padrão para personalização. Configure o tamanho do cluster, os tipos de nó e os aceleradores. Para uma configuração otimizada, use o Guia de início rápido da inferência.

  3. Implantar seu modelo como uma implantação do Kubernetes: crie uma implantação do Kubernetes para gerenciar seu serviço de inferência. Uma implantação é um objeto da API do Kubernetes que permite executar várias réplicas de pods distribuídos entre os nós de um cluster. Especifique a imagem do Docker, as réplicas e as configurações. O Kubernetes extrai a imagem e executa os contêineres nos nós do cluster do GKE. Configure os pods com o servidor e o modelo, incluindo adaptadores LoRA, se necessário.

  4. Exporar seu serviço de inferência: torne seu serviço de inferência acessível criando um Serviço do Kubernetes para fornecer um endpoint de rede para sua implantação. Use o Inference Gateway para balanceamento de carga e roteamento inteligentes, que são adaptados especificamente para cargas de trabalho de inferência de IA generativa.

  5. Processar solicitações de inferência: envie dados dos clientes do aplicativo para o endpoint do serviço no formato esperado (JSON, gRPC). Se você estiver usando um balanceador de carga, ele vai distribuir as solicitações para as réplicas do modelo. O servidor de modelo processa a solicitação, executa o modelo e retorna a previsão.

  6. Escalonar e monitorar a implantação de inferência: escalone a inferência com o HPA para ajustar automaticamente as réplicas com base na CPU ou na latência. Use o Início rápido da inferência para receber recomendações de escalonamento geradas automaticamente. Para acompanhar a performance, use o Cloud Monitoring e o Cloud Logging com observabilidade integrada, incluindo painéis para servidores de modelos conhecidos, como o vLLM.

Para conferir exemplos detalhados que usam modelos, servidores de modelos e aceleradores específicos, consulte Exemplos de inferência.

Recursos de IA generativa do GKE

É possível usar esses recursos juntos ou individualmente para resolver os principais desafios na veiculação de modelos de IA generativa e melhorar a utilização de recursos no ambiente do GKE, sem custo extra.

Nome Descrição Vantagens
Guia de início rápido da inferência do GKE (pré-lançamento)

Especifique as necessidades de negócios e receba práticas recomendadas personalizadas para a combinação de aceleradores, configurações de escalonamento e servidores de modelo que melhor atendam às suas necessidades. É possível acessar esse serviço com a CLI gcloud.

Para mais informações, consulte Executar inferência de práticas recomendadas com receitas de início rápido da inferência do GKE.

  • Economiza tempo automatizando as etapas iniciais de escolha e configuração da infraestrutura.
  • Permite manter o controle total sobre a configuração do Kubernetes para mais ajustes.
Gateway de inferência do GKE (pré-lançamento)

Receba o roteamento com base em métricas, como a utilização do cache KV, para melhorar a latência.

Para mais informações, consulte Sobre o gateway de inferência do GKE.

  • Compartilhe modelos ajustados que usam arquivos LoRA, com a seleção de endpoint com base na afinidade para eficiência de custo.
  • Tenha alta disponibilidade acessando dinamicamente a capacidade de GPU e TPU em todas as regiões.
  • Melhore a segurança dos seus modelos com as políticas complementares do Model Armor.

Planejamento para inferência

Esta seção aborda algumas das principais considerações que você precisa levar em consideração para suas cargas de trabalho de inferência no GKE.

Economia

O fornecimento de grandes modelos de IA generativa pode ser caro devido ao uso de aceleradores. Portanto, concentre-se na utilização eficiente de recursos. Selecionar o tipo de máquina e o acelerador corretos é crucial para garantir que a memória do acelerador corresponda ao tamanho do modelo e ao nível de quantização. Por exemplo, instâncias G2 com GPUs NVIDIA L4 podem ser econômicas para modelos menores, enquanto instâncias A3 são mais adequadas para modelos maiores.

Siga estas dicas e recomendações para maximizar a eficiência de custos:

Desempenho

Para otimizar o desempenho da inferência no GKE, concentre-se nas seguintes métricas de comparação:

Indicadores de comparativo de mercado Métrica (unidade) Descrição
Latência Tempo para o primeiro token (TTFT, na sigla em inglês) (ms) Tempo que leva para gerar o primeiro token de uma solicitação.
Tempo normalizado por token de saída (NTPOT, na sigla em inglês) (ms) Latência da solicitação normalizada pelo número de tokens de saída, medida como request_latency / total_output_tokens.
Tempo por token de saída (TPOT, na sigla em inglês) (ms) O tempo que leva para gerar um token de saída, medido como (request_latency - time_to_first_token) / (total_output_tokens - 1).
Latência entre tokens (ITL) (ms) Mede a latência entre duas gerações de tokens de saída. Ao contrário do TPOT, que mede a latência em toda a solicitação, o ITL mede o tempo para gerar cada token de saída individual. Essas medições individuais são agregadas para produzir valores de média, mediana e percentil, como p90.
Latência da solicitação (ms) Tempo total para concluir uma solicitação.
Capacidade Solicitações por segundo Número total de solicitações que você veicula por segundo. Essa métrica pode não ser uma maneira confiável de medir a taxa de transferência de LLM, porque ela pode variar muito para diferentes comprimentos de contexto.
Tokens de saída por segundo Uma métrica comum que é medida como total_output_tokens_generated_by_server / elapsed_time_in_seconds.
Tokens de entrada por segundo Medido como total_input_tokens_generated_by_server / elapsed_time_in_seconds.
Tokens por segundo Medido como total_tokens_generated_by_server / elapsed_time_in_seconds. Essa métrica conta os tokens de entrada e de saída, ajudando você a comparar cargas de trabalho com preenchimento alto em relação a tempos de decodificação altos.

Para tentar comparar o desempenho das suas cargas de trabalho, siga as instruções em AI-Hypercomputer/inference-benchmark.

Confira estas outras dicas e recomendações para melhorar a performance:

  • Para receber os aceleradores recomendados com base nas suas necessidades de performance, use o Início rápido da inferência.
  • Para melhorar a performance, use técnicas de otimização do servidor de modelos, como agrupamento e PagedAttention, que estão no nosso guia de práticas recomendadas. Além disso, priorize o gerenciamento de memória eficiente e a computação de atenção para latências consistentemente baixas entre tokens.
  • Use métricas padronizadas em servidores de modelos (como o TGI do Hugging Face, vLLM ou NVIDIA Triton) para melhorar o escalonamento automático e o balanceamento de carga, o que pode ajudar a alcançar um maior throughput na latência escolhida. O GKE oferece monitoramento automático de aplicativos para vários servidores de modelos.
  • Use recursos de infraestrutura de rede do GKE, como o Inference Gateway, para minimizar a latência.

Aquisição

Garantir a disponibilidade de recursos (CPUs, GPUs e TPUs) é crucial para manter o desempenho, a disponibilidade e o custo-benefício das cargas de trabalho de inferência. As cargas de trabalho de inferência geralmente apresentam padrões de tráfego imprevisíveis e de pico, que podem desafiar a capacidade do hardware. O GKE resolve esses desafios com recursos como os seguintes:

  • Opções de consumo de recursos: escolha entre opções como reservas para capacidade garantida, escalonamento econômico, Programador dinâmico de cargas de trabalho e VMs spot para otimização de custos e acesso sob demanda para disponibilidade imediata.
  • Redimensionamento de recursos: por exemplo, Google Cloud oferece VMs A3 High menores com GPUs NVIDIA H100 (1g, 2g ou 4g) para dimensionamento de inferência de IA generativa econômica com suporte a VMs Spot.
  • Classes de computação para aceleradores: use classes de computação personalizadas para ter um controle mais granular, evitar o provisionamento excessivo e maximizar a disponibilidade de recursos com opções de fallback automático.

Upgrades de nós

O GKE automatiza grande parte do processo de upgrade, mas você precisa considerar estratégias de upgrade, especialmente para compatibilidade e testes. Para upgrades manuais, escolha entre upgrades súbitos ou azul-verde com base na tolerância da carga de trabalho de inferência para interrupção. Os upgrades de pico são rápidos, mas podem afetar os serviços por um breve período. Os upgrades azuis-verdes oferecem inatividade quase zero, o que é crucial para a inferência em tempo real. Para saber mais, consulte Estratégias de upgrade de nós.

GPUs e TPUs não oferecem suporte à migração em tempo real. Portanto, a manutenção exige a reinicialização de pods. Use as notificações do GKE para se preparar para interrupções. Recomendamos o uso de orçamentos de interrupção de pods (PDBs, na sigla em inglês) para garantir que um número mínimo de pods permaneça disponível. Verifique se os pods podem processar o encerramento corretamente. As frações de TPU podem ser interrompidas por eventos de host único. Portanto, planeje a redundância. Para mais práticas recomendadas, consulte Gerenciar a interrupção de nós do GKE para GPUs e TPUs.

Testar exemplos de inferência

Encontre exemplos de implantação do GKE para modelos de IA generativa, aceleradores e servidores de modelos. Se você está começando agora, recomendamos ler o tutorial Disponibilizar modelos abertos do Gemma usando GPUs no GKE com vLLM.

Ou pesquise um tutorial por palavra-chave:

Accelerator Servidor de modelo Tutorial
GPUs vLLM Disponibilizar LLMs como DeepSeek-R1 671B ou Llama 3.1 405B no GKE
GPUs vLLM Disponibilizar modelos abertos do Gemma usando GPUs no GKE com vLLM
GPUs vLLM Disponibilizar um LLM com o gateway de inferência do GKE
GPUs NVIDIA Triton Exibir um modelo com uma única GPU no GKE
GPUs Ray Serve Exibir um LLM em GPUs L4 com o Ray
GPUs TGI Disponibilizar um LLM com várias GPUs no GKE
GPUs NVIDIA Triton Disponibilizar modelos abertos do Gemma usando GPUs no GKE com Triton e TensorRT-LLM
GPUs TGI do Hugging Face Disponibilizar modelos abertos do Gemma usando GPUs no GKE com o TGI Hugging Face
GPUs TensorFlow Serving Exibir um modelo com uma única GPU no GKE
TPUs vLLM Disponibilizar um LLM usando TPU Trillium no GKE com o vLLM
TPUs vLLM Disponibilizar um LLM usando TPUs no GKE com o KubeRay
TPUs JetStream Disponibilizar um LLM usando TPUs no GKE com o JetStream e o PyTorch
TPUs JetStream Disponibilizar o Gemma usando TPUs no GKE com o JetStream
TPUs MaxDiffusion Disponibilizar o Stable Diffusion XL (SDXL) usando TPUs no GKE com o MaxDiffusion
TPUs TPU ideal Disponibilizar modelos de código aberto usando TPUs no GKE com o TPU Optimum

A seguir