Como posso otimizar para um aplicativo de inferência?

A otimização de inferência é a prática de melhorar o desempenho e a eficiência da execução de modelos de IA em produção. À medida que os modelos de linguagem grandes (LLMs) crescem para dezenas ou centenas de bilhões de parâmetros e as arquiteturas de inferência se tornam mais complexas, a dificuldade de projetar e manter aplicativos só aumenta. A otimização é o ato de gerenciar, monitorar e atualizar essas cargas de trabalho com uso intensivo de computação, permitindo tempos de resposta abaixo de um segundo e maior capacidade de processamento a um custo menor.

Ela envolve um conjunto de técnicas, que vão da compactação de modelos ao gerenciamento avançado de memória, e muda o foco de simplesmente "executar um modelo" para "escalonar um serviço de inteligência". Isso permite que os desenvolvedores criem aplicativos mais responsivos, mantendo uma pegada de infraestrutura sustentável.

Na prática, a otimização de inferência geralmente é aplicada de duas maneiras principais:

Otimização no nível da infraestrutura : ela se concentra em como o modelo é executado no hardware. Isso inclui o uso de tempos de execução otimizados (como NVIDIA NIM ou vLLM), o gerenciamento da memória da GPU com técnicas como PagedAttention e o uso de loteamento em trânsito para processar várias solicitações simultaneamente. Esse é o caminho mais prático para desenvolvedores que usam modelos de código aberto ou proprietários.

Otimização no nível do modelo: envolve a modificação do modelo em si para reduzir o tamanho ou a complexidade dele. Técnicas como quantização (redução da precisão de 16 bits para 4 bits), destilação (treinamento de um modelo "estudante" menor para imitar um "professor" maior) e esparsidade (poda de parâmetros não importantes) podem reduzir drasticamente a memória e a computação necessárias para cada token.

Entender como funciona o processo de inferência

O fluxo de trabalho no nível do código

Para otimizar de forma eficaz, você precisa entender as duas fases distintas da inferência de LLM:

Fase

Descrição

Característica principal

Pré-preencher

O modelo processa todo o comando de entrada para calcular os estados intermediários.

Altamente paralelizado; vinculado à computação (satura a GPU).

Decodificar

O modelo gera tokens de saída um por um, de forma autorregressiva.

Sequencial, limitado pela memória (limitado pela velocidade de transferência de dados).

Fase

Descrição

Característica principal

Pré-preencher

O modelo processa todo o comando de entrada para calcular os estados intermediários.

Altamente paralelizado; vinculado à computação (satura a GPU).

Decodificar

O modelo gera tokens de saída um por um, de forma autorregressiva.

Sequencial, limitado pela memória (limitado pela velocidade de transferência de dados).

  1. Descrever a meta: você começa com uma implantação de modelo não otimizada
  2. Aplicar quantização: reduza os pesos do modelo (por exemplo, para 4 bits) para ajustar lotes maiores na memória
  3. Otimizar a atenção: use o FlashAttention ou a atenção de consulta agrupada (GQA) para minimizar os custos de movimentação de memória
  4. Gerenciar memória: implemente o PagedAttention para armazenar caches KV em blocos não contíguos, eliminando a fragmentação
  5. Executar e monitorar: faça a implantação com o agrupamento em voo para iniciar imediatamente novas solicitações à medida que outras terminam

Otimização de inferência versus implantação padrão

Veja como a inferência otimizada se compara à disponibilização de modelos "ingênuo" tradicional:

Recurso

Implantação padrão

Inferência otimizada

Capacidade

Limitado por tamanhos de lote estáticos e tempo ocioso.

Alto, utiliza o agrupamento em trânsito e a iteração contínua.

Latência

Crescimento linear com o tamanho da sequência, TTFT (tempo até o primeiro token) alto.

Otimizado, usa aceleração de preenchimento automático e decodificação especulativa.

Gerenciamento de memória

Alocação estática (provisionamento excessivo para comprimento máximo).

Dinâmica (paging). Desperdício mínimo com PagedAttention.

Eficiência de hardware

Muitas vezes, subutiliza os recursos de computação de GPU/TPU.

Maximizada, usa kernels otimizados (TFE-IE, XLA).

Custo por solicitação

Maior, exige mais hardware para a mesma carga.

Menor: agrupa mais solicitações na mesma infraestrutura.

Recurso

Implantação padrão

Inferência otimizada

Capacidade

Limitado por tamanhos de lote estáticos e tempo ocioso.

Alto, utiliza o agrupamento em trânsito e a iteração contínua.

Latência

Crescimento linear com o tamanho da sequência, TTFT (tempo até o primeiro token) alto.

Otimizado, usa aceleração de preenchimento automático e decodificação especulativa.

Gerenciamento de memória

Alocação estática (provisionamento excessivo para comprimento máximo).

Dinâmica (paging). Desperdício mínimo com PagedAttention.

Eficiência de hardware

Muitas vezes, subutiliza os recursos de computação de GPU/TPU.

Maximizada, usa kernels otimizados (TFE-IE, XLA).

Custo por solicitação

Maior, exige mais hardware para a mesma carga.

Menor: agrupa mais solicitações na mesma infraestrutura.

Introdução: como escolher seu ambiente de orquestração

O Google Cloud oferece uma variedade de ferramentas projetadas para diferentes níveis de habilidade e necessidades arquitetônicas.

Ferramenta

Ponto de partida

Nível de habilidade

Abordagem

Característica principal

Cloud Run (com GPUs)

Um serviço de IA leve e orientado a eventos

Iniciante

Sem servidor

Inferência com redução da escala a zero para cargas de trabalho intermitentes e de baixa latência

Um modelo de OSS (como o Llama 3)

Iniciante a intermediário

Gerenciado / com pouco código

Implantação com um clique com os ambientes de execução otimizados vLLM ou NVIDIA NIM


Cargas de trabalho de produção de alto desempenho

Intermediário a avançado

Inferência acelerada

Microsserviços pré-criados com otimizações de última geração do TensorRT-LLM

Uma infraestrutura personalizada com vários modelos

Avançado

Nativo da nuvem / personalizado

Controle total sobre a fragmentação de GPU, a orquestração e os servidores de inferência personalizados

Desenvolvimento em grande escala com priorização da TPU

Avançado

Otimizado para TPU / XLA

Adaptado para XLA com lotes contínuos e PagedAttention no Cloud TPU

Ferramenta

Ponto de partida

Nível de habilidade

Abordagem

Característica principal

Cloud Run (com GPUs)

Um serviço de IA leve e orientado a eventos

Iniciante

Sem servidor

Inferência com redução da escala a zero para cargas de trabalho intermitentes e de baixa latência

Um modelo de OSS (como o Llama 3)

Iniciante a intermediário

Gerenciado / com pouco código

Implantação com um clique com os ambientes de execução otimizados vLLM ou NVIDIA NIM


Cargas de trabalho de produção de alto desempenho

Intermediário a avançado

Inferência acelerada

Microsserviços pré-criados com otimizações de última geração do TensorRT-LLM

Uma infraestrutura personalizada com vários modelos

Avançado

Nativo da nuvem / personalizado

Controle total sobre a fragmentação de GPU, a orquestração e os servidores de inferência personalizados

Desenvolvimento em grande escala com priorização da TPU

Avançado

Otimizado para TPU / XLA

Adaptado para XLA com lotes contínuos e PagedAttention no Cloud TPU

Como otimizar a inferência com o Vertex AI Model Garden

O Model Garden é o caminho mais rápido para implantar versões otimizadas de modelos abertos líderes como Llama, Gemma e Mistral.

Etapa 1: selecione e configure seu modelo

Acesse o Model Garden e encontre um modelo OSS compatível. Clique em implantar. Na configuração, selecione um ambiente de execução otimizado, como vLLM ou NVIDIA NIM.

Etapa 2: aplicar a quantização

Escolha uma versão quantizada do modelo (por exemplo, 4 ou 8 bits) para reduzir o consumo de memória. Isso permite disponibilizar tamanhos de lote maiores na mesma GPU, aumentando diretamente a capacidade de processamento.

Etapa 3: ativar o gerenciamento avançado de memória

Verifique se o contêiner de exibição está configurado para usar o PagedAttention. Essa técnica permite que o modelo armazene sua "memória" (cache de chave-valor) em blocos não contíguos, evitando o desperdício de memória e permitindo janelas de contexto mais longas.

Etapa 5: implantar e monitorar

Depois de implantada, a Vertex AI lida automaticamente com o agrupamento em trânsito, processando novas solicitações assim que uma solicitação atual conclui um token. Usar a Vertex AI Model Monitoring para monitorar a latência e garantir que a "vibe" da saída continue com alta qualidade.

Como otimizar a inferência com o GKE

Para equipes que precisam de controle granular sobre a orquestração e os kernels de inferência personalizados, o GKE é a opção padrão do setor.

Etapa 1: inicializar o cluster com GPUs NVIDIA ou Cloud TPUs

Provisionar um cluster do GKE com nós de GPU especializados (como L4 ou H100). Instale o operador de GPU NVIDIA para lidar com o gerenciamento de drivers e o ajuste de desempenho automaticamente.

Etapa 2: implantar um servidor de inferência otimizado

Usar um mecanismo de inferência conteinerizado, como o vLLM ou o Triton Inference Server. Esses servidores oferecem suporte a lote contínuo e paralelismo de tensor, permitindo que você fragmente modelos grandes em várias GPUs. O vLLM também permite alternar entre TPUs e GPUs com o mínimo de codificação adicional.

Etapa 3: implementar a decodificação especulativa

Para necessidades de latência de missão crítica, configure a decodificação especulativa. Isso envolve o uso de um modelo de "rascunho" menor e mais rápido para prever tokens, que são verificados em paralelo pelo seu modelo "alvo" maior, geralmente proporcionando um aumento de velocidade de 2 a 3 vezes.

Etapa 4: simplificar a implantação com o guia de início rápido de inferência do GKE

O Guia de início rápido de inferência do GKE funciona como um banco de dados pré-configurado de configurações de pilha de inferência testadas. Ao especificar o modelo, os requisitos de latência e as prioridades de custo, a ferramenta fornece um conjunto de recomendações com base nas práticas recomendadas e nos benchmarks mais recentes. Isso permite monitorar métricas de performance específicas de inferência e ajustar dinamicamente sua implantação para garantir que ela sempre seja executada em tecnologia otimizada.

Etapa 5: escalonar com o GKE Inference Gateway

O GKE Inference Gateway já está disponível para todos os usuários, com dois recursos avançados para gerenciar aplicativos complexos de IA generativa.

  • Roteamento com reconhecimento de prefixo: para aplicativos como conversa multiturno ou análise de documentos, esse recurso direciona solicitações para os mesmos aceleradores que já têm o contexto em cache, melhorando os tempos de resposta.
  • Serviço desagregado: essa técnica separa a fase inicial de "preenchimento" (processamento de comandos) da fase de "decodificação" (geração de tokens). Como essas fases têm necessidades de recursos diferentes, você pode executá-las em pools de máquinas separados e otimizados para maximizar a eficiência.

Etapa 6: acelerar o acesso aos dados com o cache em qualquer lugar

O cache em qualquer lugar é um novo cache de leitura totalmente consistente que funciona com os buckets do Google Cloud Storage (GCS) para armazenar dados em cache na mesma zona dos seus aceleradores. Isso reduz a latência de leitura em até 96% e minimiza os custos de rede associados a cargas de trabalho com muitas leituras.

Etapa 7: conectar cargas de trabalho globais com o Cloud WAN

A Cloud WAN, uma rede global totalmente gerenciada criada na infraestrutura em escala planetária do Google, conecta toda a infraestrutura. O Cloud WAN conecta recursos de computação de IA em diferentes regiões, nuvens e ambientes no local, oferecendo uma melhoria de 40% na experiência do aplicativo de inferência e um TCO 40% menor em comparação com as soluções WAN tradicionais.

Resolva seus desafios comerciais com o Google Cloud

Clientes novos recebem US$ 300 em créditos para usar no Google Cloud.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos, tudo isso sem custo financeiro.

Google Cloud