O que acontece quando os serviços de IA locais competem pela memória do acelerador?

Eva Wong é a Redatora Técnica e e entusiasta residente na ZimaSpace. Uma geek de longa data com paixão por homelabs e software de código aberto, ela é especialista em traduzir conceitos técnicos complexos em guias acessíveis e práticos . Eva acredita que o auto-hospedagem deve ser divertida, não intimidante. Através dos seus tutoriais, ela capacita a comunidade adesmistificar configurações de hardware , desde a construção do seu primeiro NAS até dominar os contêineres Docker., from building their first NAS to mastering Docker containers.

Quando os serviços de IA locais competem pela memória do acelerador, cada runtime reduz a capacidade disponível para outros modelos, pedidos, caches e tensores temporários.

Um servidor doméstico pode executar chat, embeddings, geração de imagens, reconhecimento de voz, conversão de texto em voz, deteção visual e análise de câmaras através de contentores ou processos separados. Os respetivos painéis podem parecer inativos, enquanto os pesos dos modelos e os pools do alocador permanecem residentes na mesma GPU, NPU ou acelerador de memória partilhada. Um novo pedido precisa então de espaço para o estado do prompt, ativações e buffers de saída que a ocupação estática do modelo não revelava. As secções abaixo explicam como os serviços separados transformam a capacidade nominal do acelerador em falhas de admissão e latência instável.

Cada serviço traz mais do que pesos de modelos

Um modelo carregado ocupa memória para os parâmetros, mas a inferência ativa também precisa de bibliotecas de runtime, contextos de execução, áreas de trabalho temporárias, buffers de entrada, ativações e estado específico de cada pedido.

A investigação sobre disponibilização de modelos de linguagem de grande dimensão identifica a memória de cache KV como um limite importante à concorrência, porque cresce com o número de sequências ativas e o comprimento do contexto. Um modelo que funciona quando está inativo pode falhar quando várias solicitações longas ficam ativas.

Os serviços de visão, difusão, voz e embeddings utilizam padrões diferentes de memória temporária. As respetivas alocações máximas podem sobrepor-se, mesmo quando a utilização média permanece baixa.

Os processos separados duplicam o contexto e a sobrecarga do runtime

Executar cada função de IA no seu próprio contentor melhora a separação operacional, mas os processos separados podem criar contextos de acelerador, bibliotecas, pools de alocadores e cópias de componentes partilhados distintos.

Os sistemas com vários modelos estudam a disponibilização de vários modelos porque a colocação ingénua de um serviço por modelo desperdiça memória e capacidade de computação. A colocação coordenada pode partilhar a capacidade de forma mais eficaz do que runtimes independentes que assumem, cada um, o controlo do dispositivo.

Dois serviços que utilizam o mesmo tokenizador, codificador visual ou modelo de linguagem não partilham automaticamente uma única cópia física. A partilha requer suporte do runtime e limites de processo compatíveis.

A penalização da duplicação é mais visível em aceleradores pequenos, onde algumas centenas de megabytes de contexto e sobrecarga das bibliotecas podem determinar se outro modelo consegue iniciar.

Os pools reservados podem ocultar memória dos outros runtimes

As frameworks retêm frequentemente blocos libertados para que os pedidos seguintes evitem alocações dispendiosas no dispositivo e sincronizações. O serviço comunica menos memória alocada ativamente, mas outro processo continua sem poder utilizar o espaço físico reservado.

Sistemas como a multiplexagem estatística tratam a colocação e os padrões de picos como um problema global, em vez de permitirem que cada servidor de modelos reserve recursos para o seu próprio pior caso. Os serviços locais independentes não têm essa visão global, a menos que um orquestrador a imponha.

É por isso que um acelerador pode apresentar baixa utilização de computação e, ainda assim, recusar um novo modelo. A capacidade está ocupada por pesos, blocos reservados ou regiões livres fragmentadas, e não por kernels ativos.

-15% OFF

A contenção altera a latência antes de produzir um erro de falta de memória

Um runtime pode reagir à pouca memória reduzindo o tamanho do lote, admitindo menos sequências concorrentes, recalculando o estado expulso, transferindo camadas para a RAM do CPU ou descarregando outro modelo.

O Aegaeon utiliza escalonamento ao nível dos tokens para coordenar vários modelos perante uma procura variável. Um servidor doméstico sem uma coordenação comparável costuma manifestar a escassez através de primeiros tokens mais lentos, pausas, trocas de modelos ou filas imprevisíveis.

O artigo da ZimaSpace sobre concorrência familiar mostra a versão do mesmo limite ao nível dos pedidos: as conversas ativas competem pela memória e pela atenção do escalonador, mesmo quando os testes com um utilizador parecem rápidos.

Uma exceção de falta de memória é apenas o modo de falha final. A instabilidade da latência e a redução do débito surgem frequentemente mais cedo.

A expulsão de modelos troca resposta imediata por capacidade

Descarregar um modelo inativo liberta uma grande região contígua para outro serviço. O pedido seguinte ao serviço expulso tem de recarregar os pesos e reconstruir o estado do runtime, transformando a pressão sobre a memória num atraso de arranque a frio.

O WarmServe explora a colocação consciente de expulsões porque as trocas frequentes prejudicam o tempo até ao primeiro token. Manter todos os modelos aquecidos só é mais rápido quando o acelerador tem memória suficiente para os respetivos estados residentes e ativos combinados.

Para um servidor doméstico, a política útil depende da carga de trabalho. O controlo por voz pode justificar residência permanente, enquanto a geração ocasional de imagens pode aceitar um recarregamento.

Um único gestor de recursos pode impor limites reais de capacidade

Coordene os serviços através de um único servidor de inferência sempre que possível, ou atribua limites explícitos de memória por serviço, visibilidade dos dispositivos, regras de residência dos modelos, limites de concorrência e prioridades.

Trabalhos recentes sobre ballooning de memória mostram por que razão a alocação estática desperdiça capacidade quando a popularidade dos modelos e a carga de pedidos mudam. A partilha dinâmica pode melhorar a utilização, mas requer um sistema que observe todas as cargas de trabalho concorrentes.

Meça os pesos, a memória reservada, as alocações ativas, a cache KV, a concorrência dos pedidos, o comprimento do contexto, o tamanho do lote e a frequência de troca de modelos por serviço. Um total global do dispositivo sem atribuição por serviço não consegue explicar a colisão.

Proteja primeiro os serviços sensíveis à latência, agende embeddings e indexação para janelas de manutenção e deixe margem não alocada para picos temporários. O objetivo não é preencher todos os bytes quando o sistema está inativo; é manter estável a combinação de serviços pretendida perante uma procura simultânea.

FAQ

Porque é que a memória do acelerador está cheia quando a utilização da GPU é baixa?

A utilização de computação mede a execução ativa, enquanto os pesos dos modelos, os contextos, as caches e os blocos reservados pelo alocador podem ocupar memória entre pedidos.

Os contentores conseguem impor automaticamente limites de memória da GPU?

Não de forma fiável em todos os runtimes. A atribuição de dispositivos e o isolamento de processos não garantem que várias frameworks coordenem as suas reservas internas.

Um único servidor de inferência partilhado é sempre melhor?

Não. Pode reduzir a duplicação e melhorar o escalonamento, mas o isolamento dos serviços, a compatibilidade entre frameworks, a segurança, a recuperação de falhas e o suporte dos modelos podem justificar runtimes separados.

Centro de Tecnologia e IA

Mais para Ler

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.