Skip to content
Reduzir Custos de Implantação de Modelos Mantendo Desempenho com Swap de Memória de GPU
Source: developer.nvidia.com

Reduzir Custos de Implantação de Modelos Mantendo Desempenho com Swap de Memória de GPU

Sources: https://developer.nvidia.com/blog/cut-model-deployment-costs-while-keeping-performance-with-gpu-memory-swap, https://developer.nvidia.com/blog/cut-model-deployment-costs-while-keeping-performance-with-gpu-memory-swap/, NVIDIA Dev Blog

Visão Geral

Implantar grandes modelos de linguagem (LLMs) em escala impõe duas pressões: oferecer respostas rápidas em picos de tráfego e gerenciar os custos de GPUs. Abordagens tradicionais forçam escolhas entre superprovisionamento ou risco de falhas no SLA durante aumentos de demanda. O swap de memória da GPU, também conhecido como hot-swapping de modelos, é apresentado como uma forma de ampliar a utilização da GPU para workloads de inferência, lidando com limitações de memória e aumentando a eficiência do autoscaling. O hot-swapping permite que vários modelos compartilhem a mesma GPU, mesmo que o footprint combinado ultrapasse a capacidade física da GPU. Na prática, isso viabiliza gerenciamento de recursos mais dinâmico, equilibrando desempenho e custo. Em testes, a abordagem foi avaliada em cenários que refletem padrões de implantação no mundo real. Escalar a partir do zero—onde o pod é inicializado, o modelo é carregado na GPU e a primeira requisição é processada—apresentou a maior latência de inicialização (TTFT). Para modelos menores, o TTFT superou 140 segundos e, para modelos um pouco maiores, ultrapassou 200 segundos devido ao overhead de inicialização. Quando modelos iniciam na memória da CPU e são swapados para a memória da GPU sob demanda, o TTFT permanece limitado pela largura de banda PCI e pelo tempo de swap entre CPU e GPU. Dois pares de modelos foram testados, mostrando resultados consistentes; o Falcon-11B apresentou TTFT ligeiramente maior que o Mistral-7B devido ao footprint de memória, embora a diferença tenha sido pequena (~0,5 segundo). Em comparação com modelos totalmente carregados na GPU (o melhor cenário teórico em latência), o swap de memória oferece um equilíbrio prático: modelos quentes totalmente carregados proporcionam respostas quase instantâneas, mas com alto custo de GPU ociosa. Com o swap de memória, o TTFT cai para alguns segundos, permitindo consolidar cargas de trabalho em menos GPUs, mantendo SLAs rigorosos. Em configurações apropriadas, o TTFT com swap pode chegar a menos de 10 segundos. O ecossistema NVIDIA Run:ai (por exemplo, Model Streamer) pode ainda reduzir o TTFT para cenários de escala a partir de zero em dezenas de segundos, ampliando a viabilidade dessa abordagem para aplicações em tempo real. Em resumo, o swap de memória da GPU busca maximizar a eficiência da GPU, minimizar custos ociosos e manter a reatividade esperada pelos usuários, sem exigir GPUs dedicadas para cada modelo o tempo todo. Para uma demonstração ao vivo e orientações mais detalhadas, entre em contato com a NVIDIA para explorar o swap de memória da GPU em sua infraestrutura de IA.

Referências: https://developer.nvidia.com/blog/cut-model-deployment-costs-while-keeping-performance-with-gpu-memory-swap/

Principais recursos

  • GPU compartilhada entre vários modelos: permite rodar diversos modelos na mesma GPU trocando a memória de cada um conforme chegam as requisições.
  • Gerenciamento dinâmico de memória: modelos começam na memória da CPU e são swapados para a memória da GPU sob demanda, permitindo autoscaling sem reserva permanente de GPU.
  • Perfil de latência com swap: o TTFT é limitado pela largura de banda PCI e pelo tempo de swap, em vez de depender apenas da memória GPU já ocupada.
  • Aceita cargas de trabalho imprevisíveis: reduz a necessidade de superprovisionamento, mantendo SLAs durante picos.
  • Comportamento consistente entre modelos: testes com diferentes pares de modelos mostraram dinâmica de TTFT previsível, com variações mínimas atribuídas ao footprint de memória.
  • Potencial para TTFT abaixo de 10 segundos: em configurações favoráveis, a latência com swap pode ser muito responsiva; modelos aquecidos permanentemente ainda oferecem menor latência, porém com custo maior.
  • Ferramentas de apoio: o ecossistema Run:ai da NVIDIA pode reduzir ainda mais o TTFT para cenários de escala a partir de zero.

Casos de uso comuns

  • Inferência em tempo real de LLMs sob demanda variável: swap de memória permite uso elástico de GPUs sem pagar por ociosidade.
  • Implantações de múltimos modelos com GPUs limitadas: consolidar cargas em menos GPUs mantendo SLAs.
  • Autoscaling com foco em custo: evitar superprovisionamento, swapando modelos conforme o tráfego muda.
  • Pipelines de produção com footprints variados de modelos: acomodar modelos menores e maiores na mesma hardware, usando swap para equilibrar latência e capacidade.

Configuração e instalação

Detalhes de configuração e instalação não são fornecidos no material-fonte. Para etapas de implementação, consulte a documentação oficial do NVIDIA Run:ai GPU memory swap e o artigo ligado.

# Configurações de instalação não fornecidas na fonte
# Para etapas de implementação, consulte a documentação do NVIDIA Run:ai:
# https://developer.nvidia.com/blog/cut-model-deployment-costs-while-keeping-performance-with-gpu-memory-swap/

Quick start

Esta seção resume o padrão de implantação com base no material fornecido; código executável explícito não é citado na fonte. O padrão básico é inicializar modelos na memória da CPU, swapá-los para a memória da GPU sob demanda e atender requisições gerenciando footprints de memória e as restrições da banda PCI.

# Conceitual, não necessariamente executável
# Esboço de comportamento que ilustra o fluxo de swap
class ModelSwapavel:
def __init__(self, id):
self.id = id
self.on_gpu = False
def garantir_on_gpu(self):
if not self.on_gpu:
swap_to_gpu(self.id) # função fictícia
self.on_gpu = True
def inferir(self, entrada):
if not self.on_gpu:
self.garantir_on_gpu()
return executar_inferencia(self.id, entrada) # função fictícia
# Loop principal ilustrando o atendimento a requisições com swap
Modelos = {"Mistral-7B": ModelSwapavel("Mistral-7B"),
"Falcon-11B": ModelSwapavel("Falcon-11B")}
while True:
req = esperar_proxima_requisicao()
m = Modelos[req.modelo]
print("Processando requisição com modelo", req.modelo)
saida = m.inferir(req.carga)
enviar_resposta(saida)

Prós e contras

  • Prós
  • Eficiência de custos: reduz custos de GPU ociosas ao consolidar cargas em menos GPUs.
  • Autoscaling mais ágil: permite escalonamento dinâmico sem reservar GPU para cada modelo o tempo todo.
  • Suporte a SLAs: TTFT pode ficar em níveis aceitáveis com configurações adequadas, mantendo a reatividade necessária.
  • Comportamento previsível entre modelos: testes mostraram resultados consistentes de TTFT entre pares de modelos, com variações pequenas de acordo com o footprint de memória.
  • Contras
  • TTFT limitado pela largura de banda PCI: o tempo de swap entre CPU e GPU é um fator limitante.
  • Overhead de inicialização ao escalar a partir do zero: iniciar um modelo na CPU e swapá-lo para a GPU implica latência significativa.
  • Variação com footprint do modelo: modelos maiores podem apresentar TTFT ligeiramente maior.
  • Requer ferramentas de suporte: benefícios adicionais dependem da integração com ferramentas como o NVIDIA Run:ai.

Alternativas (comparações breves)

| Abordagem | Latência | Utilização da GPU | Notas |:---|:---|:---|:---| | Modelos quentes (Always-on) | Latência próxima do máximo | Alta ociosidade | Latência muito baixa, mas alto custo de GPU ociosa |Swap de memória da GPU (hot-swapping) | TTFT de alguns segundos; até sub-10s em configurações favoráveis | Maior flexibilidade de uso | Reduz custos ociosos; TTFT limitado pela largura de banda PCI | No conjunto de testes, o ecossistema NVIDIA Run:ai pode reduzir ainda mais o TTFT para cenários de escala a partir de zero, indicando que a integração com ferramentas de gerenciamento de workloads pode melhorar significativamente o equilíbrio entre latência e custo.

Pricing ou Licença

Detalhes de preço ou licença não são explicitamente fornecidos na fonte.

Referências

More resources