O que é inferência distribuída?

Copiar URL

A inferência distribuída permite que modelos de IA processem cargas de trabalho de forma mais eficiente, dividindo a execução da inferência entre um conjunto de dispositivos interconectados. É como dizer que a “união faz a força” no contexto de software. 

A inferência distribuída oferece suporte a um sistema que divide as solicitações entre uma frota de hardware, incluindo servidores físicos e de nuvem. Após essa etapa, cada servidor de inferência processa a parte atribuída a ele em paralelo para gerar uma saída. O resultado é um sistema resiliente e observável voltado à entrega de serviços consistentes e escaláveis com tecnologia de IA.

Conheça o Red Hat AI

A analogia do jantar

Imagine que você vai oferecer um jantar para 10 pessoas. O evento terá um menu com quatro pratos: entrada, salada, prato principal e sobremesa. No entanto, você tem apenas duas horas para preparar a comida. Fazer isso tudo por conta própria é praticamente impossível: a qualidade da comida e a velocidade do preparo podem ser prejudicadas. 

Para solucionar esse problema, você pede ajuda a alguns amigos e atribui um prato para cada um, com base na habilidade da pessoa. Por exemplo, o amigo que não tem costume de cozinhar fica com a salada, e aquele que fez um curso de culinária pode preparar o prato principal mais complexo. Ao aproveitar as habilidades de cada pessoa e executar as tarefas simultaneamente, o jantar sai na hora certa e com um sabor delicioso.

Na analogia do jantar, colocar os amigos para trabalharem juntos representa a inferência distribuída: cada prato é uma solicitação e cada amigo, um tipo diferente de servidor. 

Velocidade, escala e economia com a inferência distribuída

À medida que os modelos de IA se tornam mais sofisticados, eles aumentam de tamanho. Por exemplo, um Large Language Model (LLM) pode conter centenas de bilhões de parâmetros. Os parâmetros determinam o entendimento de um LLM sobre a linguagem. Além disso, quanto maior a quantidade de parâmetros, mais complexas são as tarefas que um modelo pode executar (com maior precisão). 

Alguns modelos de IA (como o DeepSeek, que tem 671 bilhões de parâmetros) são grandes demais para caber em uma unidade gráfica de processamento (GPU). Para serem operados, eles exigem algum tipo de intervenção, como a inferência distribuída. 

À medida que o número de parâmetros em um modelo aumenta, cresce também a necessidade de recursos de hardware.

Armazenar modelos gigantes e realizar os cálculos de inferência exige muita memória e capacidade de processamento. Para enfrentar esse desafio, você tem várias opções:

  • Adicionar mais GPUs a um servidor para aumentar a capacidade das suas máquinas.  Afinal, quanto mais GPUs, maior a capacidade de processamento, certo? Porém, esses componentes são caros. Além disso, você ainda corre o risco de criar um ponto único de falha, ou seja, se uma instância (cópia da aplicação de inferência) falhar, todo o sistema será afetado.
  • Deixar os modelos mais leves com a quantização. Essa técnica de otimização simplifica os parâmetros de um modelo. Para isso, ela diminui a precisão numérica dos parâmetros para reduzir o tamanho do modelo como um todo. A quantização é a primeira estratégia que recomendamos para otimizar o processamento de grandes modelos, já que é menos complexa de implementar do que a inferência distribuída.
  • Aumentar a eficiência do hardware dividindo a carga de trabalho de um jeito mais colaborativo por meio da inferência distribuída. Essa abordagem oferece a velocidade, a confiabilidade e a escala necessárias para atender a demandas empresariais. Ela pode ser usada como uma estratégia complementar à quantização de modelos. 

Um servidor de inferência é o software fundamental que permite a um modelo de IA gerar novas conclusões com base no treinamento prévio. Os servidores de inferência alimentam as solicitações de entrada (como um comando ou consulta de pesquisa) usando um modelo de machine learning e retornam uma resposta.

Inferir é chegar a uma conclusão com base em evidências. Imagine que a luz da casa do seu amigo está acesa, mas você não o vê por lá. Você pode inferir que ele está em casa, mas não há como provar isso.

Um modelo de linguagem também não tem evidências absolutas sobre o significado de uma palavra ou frase, já que ele é apenas um software. Por isso, ele depende do treinamento. O modelo executa uma série de cálculos baseados em dados e chega a uma conclusão. 

Quatro considerações importantes sobre a implementação da tecnologia de IA

A inferência distribuída oferece aos modelos de IA um coordenador inteligente que funciona como o cérebro das cargas de trabalho de IA. Ela analisa e encaminha as solicitações recebidas para a parte do seu sistema de hardware mais adequada para executar a tarefa (lembra da analogia com o jantar?). 

Modelos grandes, muitos usuários e problemas de latência podem prejudicar o desempenho. A inferência distribuída usa várias estratégias, dependendo do obstáculo enfrentado:

  • Divisão do modelo. Se o modelo é muito grande para uma GPU, a inferência distribuída usa o paralelismo de modelo para dividi-lo entre várias GPUs.
  • Divisão dos dados. Para lidar com muitos usuários de uma só vez, a inferência distribuída usa o paralelismo de dados e o balanceamento de carga inteligente para dividir as informações de entrada entre os servidores. Assim, é possível gerenciar solicitações simultâneas com eficiência.
  • Divisão do processo de inferência. Para otimizar todo o fluxo de trabalho, a inferência distribuída usa a desagregação de processos. Isso separa as duas fases de computação que criam uma resposta de inferência (pré-preenchimento e decodificação) e as executa em ambientes diferentes.

Programação inteligente de inferência

A inferência distribuída exige um control plane ou scheduler que saibam como coordenar e transferir as informações para concluir as tarefas. A programação inteligente é um processo executado continuamente em sistemas de inferência distribuída para viabilizar essa coordenação. 

Imagine a programação inteligente como uma gerente de projetos. Em vez de enviar uma solicitação ao próximo servidor na fila, ela considera:

  • Quais servidores têm informações relevantes sobre a solicitação armazenada em cache.
  • Quais servidores têm capacidade para processar com a solicitação.
  • Quais servidores são mais adequados para concluir a tarefa solicitada.

A programação inteligente é implementada por algoritmos de software e funciona durante a inferência para otimizar o fluxo de dados.

Desagregação de pré-preenchimento e decodificação

Gerar uma resposta para uma consulta envolve duas fases: pré-preenchimento e decodificação. Ao separar uma consulta do usuário nessas fases, os sistemas distribuídos podem atribuir cada parte ao hardware mais adequado, aumentando a eficiência. 

  • Pré-preenchimento (ou pré-preenchimento do KV cache): é a etapa inicial do processamento do prompt do usuário, caracterizada por um alto esforço computacional. Nessa fase, é como se o modelo “lesse” a consulta e criasse um “entendimento” sobre ela. 

  • Decodificação: é a etapa posterior, caracterizada por um alto consumo de memória, na qual o modelo gera a resposta, token por token,. Nessa fase, o modelo acessa o KV cache para coletar as informações armazenadas que considera relevantes para a consulta. 

Separar as fases de pré-preenchimento e decodificação ajuda o sistema a programar os recursos utilizados com mais eficiência. Fazer todos esses componentes funcionarem em conjunto exige algo chamado KV cache.

O que é KV cache?

KV é a sigla em inglês para key value, ou "chave-valor". Chave-valor se refere à maneira como um LLM formula um significado para uma palavra ou frase. Imagine que você está processando a chave-valor de um item em um cardápio. Uma porção de batatas fritas (chave) custa R$ 25 (valor). Quando o garçom registra um pedido de batatas fritas, o valor computado para essa chave é R$ 25. Os LLMs processam KVs da mesma forma, já que mantêm o valor correspondente de cada chave (ou token) em cache.

Cache é um tipo de armazenamento de memória de curto prazo. Considere seu computador pessoal: quando ele fica lento, você pode limpar o cache para liberar espaço e acelerar o processamento.

Com o KV cache, o modelo lembra a palavra anterior que ele gerou, criando contexto para a próxima e acelerando o processamento. Sem o KV cache, o modelo precisaria reprocessar a consulta palavra por palavra. 

Aumentar a eficiência no KV cache é a principal tarefa realizada pelo vLLM

O vLLM é o “cérebro” do software que coordena as GPUs para distribuírem tarefas e trabalharem em paralelo. Ele funciona como um conjunto de instruções que permite ao KV cache criar atalhos durante o processamento contínuo das respostas em lotes.

Paralelismo de modelos com o vLLM

Se um modelo for grande demais para a sua GPU, você pode usar o paralelismo de tensores, o paralelismo de pipelines, a combinação de especialistas (MoE) ou as três opções juntas:

Paralelismo de tensores. Um conjunto de GPUs divide uma tarefa grande em partes menores e idênticas. Nesse caso, o vLLM atua como coordenador, orquestrando a comunicação constante necessária para manter todas as partes do sistema em sincronia. 

Paralelismo de pipelines. Assim como em uma linha de montagem, o paralelismo de pipelines divide uma tarefa em etapas que seguem uma ordem. O processamento passa de uma etapa para a outra até que a tarefa seja concluída. Com o paralelismo de pipelines, é possível encadear vários servidores para executar um modelo que, de outra forma, seria grande demais para ser carregado na memória. Nesse caso, o vLLM gerencia essa linha de montagem hipotética, analisando as etapas e assegurando que a tarefa passe de um servidor para o próximo à medida que cada estágio é concluído.

Combinação de especialistas (MoE). Nesse contexto, "especialistas" são partes do modelo treinadas para lidar com tipos de entradas específicos. Nessa arquitetura, um componente chamado rede de gating encaminha as tarefas para a parte mais eficiente do modelo, aumentando a velocidade e a precisão dos resultados. A rede de gating integrada do vLLM orquestra esse processo ao ler cada solicitação conforme ela chega e ativar a parte do modelo mais adequada para tratá-la. 

Paralelismo de dados com o vLLM

Se você precisa atender a muitos usuários ao mesmo tempo, use as técnicas de paralelismo de dados. No paralelismo de dados, você divide os dados de entrada (solicitações da carga de trabalho) em vez de dividir o modelo. 

Essa técnica de computação distribui a execução de um grande número de tarefas entre vários servidores. Uma cópia do modelo é colocada em cada GPU, e as tarefas são divididas entre os servidores para que as requisições sejam executadas em paralelo.

Imagine que uma aplicação de IA tem mil usuários que consultam seu LLM ao mesmo tempo. O paralelismo de dados coloca cópias do LLM em 10 servidores e depois envia a cada um deles 100 solicitações. Ao dividir a carga de trabalho em lotes menores, a aplicação pode processar mais solicitações com o mínimo de atraso. 

O vLLM pode atuar como um otimizador de desempenho, criando um ambiente para processamento ainda mais rápido e eficiente. 

Mais informações sobre o vLLM

O que é llm-d?

O llm-d é um framework open source para Large Language Models distribuídos. é um conjunto de códigos e ferramentas disponibilizados publicamente, que os desenvolvedores podem usar, modificar e distribuir livremente.

O llm-d padroniza o well-lit path (abordagem recomendada): um blueprint para desenvolver inferência distribuída em grande escala. Ele oferece um layout, técnicas de comunicação e um manual de treinamento, formando um guia detalhado para construção de arquiteturas distribuídas.

Ao substituir os processos manuais e fragmentados por caminhos padronizados e integrados, as empresas aceleram a implantação, a escala e a evolução do piloto para produção. 

A instalação é baseada em gráficos Helm, o que oferece um processo familiar e personalizável. Uma interface de linha de comando (CLI) de início rápido simplifica a implantação com dependências, pré-requisitos e funcionalidades de observabilidade.

O llm-d foi desenvolvido para se integrar e interoperar com o vLLM, podendo ser executado em qualquer cluster Kubernetes, inclusive nos ambientes do Red Hat® OpenShift®. 

Comece com o llm-d

A inferência distribuída acelera o processamento e aumenta a escala dos sistemas de IA. No entanto, a conclusão dessas tarefas envolve uma coordenação complexa. Alguns dos desafios são:

Latência e largura de banda 

A inferência distribuída divide o modelo e processa solicitações em vários servidores e dispositivos em diferentes locais. Isso significa que as informações e os dados percorrem um longo caminho antes de gerar uma resposta para o usuário. Se as conexões de rede entre os servidores estiverem lentas ou congestionadas, o processo acontecerá mais devagar, como um carro preso no trânsito. 

Ineficiência na alocação de recursos 

É importante equilibrar a distribuição da inferência entre os servidores para que alguns deles não fiquem sobrecarregados enquanto outros estão ociosos.

Recuperação de falhas 

É essencial ter um plano B. Em sistemas distribuídos, existe a possibilidade de que conexões caiam, servidores falhem e os data centers fiquem off-line. É preciso garantir que uma parte do sistema consiga continuar o trabalho caso outra falhe. 

Complexidade na depuração e solução de problemas 

Quando usados na inferência distribuída, os servidores interconectados trabalham com mais rapidez e eficiência do que se estivessem desconectados. No entanto, o ponto negativo é que essa interconexão faz com que encontrar a causa raiz de um problema seja mais complicado.

Despesa operacional com sincronização 

Imagine que você está em uma videochamada com 300 pessoas. Para oferecer vídeo e áudio em tempo real, os sistemas precisam trabalhar mais do que o normal. Às vezes, o vídeo de alguma pessoa congela, ou a voz fica fora de sincronia. A coordenação sincronizada é um trabalho pesado e exige uma infraestrutura eficiente.

Implantação e gerenciamento de modelos 

Tudo pronto para atualizar seu modelo? Na inferência distribuída, implementar mudanças requer planejamento estratégico e uma orquestração cuidadosa feita por experts, o que pode tornar o processo complexo e demorado.

Controle de custos 

Sistemas distribuídos possuem uma arquitetura de custos mais complexa do que a de um único computador. Esse custo pode variar com base nos padrões de uso, transferência de dados entre os locais e a necessidades de escala. É importante estabelecer uma abordagem voltada a métricas para obter o desempenho ideal, resiliência e um controle de custos eficaz.

Segurança 

Distribuir servidores entre vários locais exige medidas de segurança específicas para cada um deles. É necessário criptografar as comunicações, gerenciar os controles de acesso e proteger contra ataques. Tudo isso exige expertise. 

O que é segurança de IA?

A inferência distribuída, permite que você utilize LLMs entre uma variedade maior de aplicações. Isso porque ela reduz as limitações de tamanho e velocidade da execução dos modelos em um hardware. Assim, a inferência distribuída diminui a latência (atraso) e aumenta a largura de banda (capacidade) para oferecer suporte a diversos casos de uso na infraestrutura existente. 

Desempenho consistente e previsível

A inferência tradicional de IA funciona como uma “caixa-preta”, com tempos de resposta imprevisíveis e experiência do usuário insatisfatória. Com a inferência distribuída, a programação inteligente analisa as solicitações recebidas e as encaminha para o hardware adequado. Isso proporciona uma experiência do usuário mais estável e confiável.

Controle de custos

Embora envolva custos, a inferência distribuída pode trazer vantagens. A necessidade de adotar aceleradores de hardware caros como GPUs aumenta à medida que os modelos ficam maiores. Quando gerenciada corretamente, a inferência distribuída ajuda a reduzir custos ao utilizar o hardware da forma mais eficiente possível. 

Observabilidade aprimorada

Conforme os modelos de IA generativa avançam dos pilotos para o ambiente de produção, monitorar a integridade, o desempenho e os custos da tecnologia passa a ser um novo desafio. A inferência distribuída oferece um sistema altamente observável para você monitorar proativamente cargas de trabalho de IA, como processamento de tokens, latência e a taxa de transferência. Com essa visibilidade, você identifica obstáculos e soluciona problemas para manter o desempenho previsível e controlar os custos. 

Regulamentações de privacidade 

Leis de privacidade de dados como o General Data Protection Regulation (GDPR) e o California Consumer Privacy Act (CCPA) estabelecem regras rigorosas sobre a coleta e a transferência de dados pessoais. A inferência distribuída está em conformidade com essas regulamentações porque processa os dados localmente e envia somente as partes não confidenciais a um servidor central. Isso mantém os dados pessoais em jurisdições geográficas específicas e viabiliza a soberania dos dados. 

Local dos dados  

A inferência distribuída envia o processo de inferência (computação) a muitos servidores, mas os dados permanecem no local. Ao processar os dados no local em que são gerados, em vez de enviá-los para um servidor remoto, as aplicações operam com mais rapidez. 

O Red Hat AI é uma plataforma de soluções que usa a tecnologia open source para atender às necessidades da IA empresarial em grande escala. A inferência distribuída é essencial para nosso conjunto de ferramentas.

O Red Hat OpenShift AI, que faz parte do Red Hat AI, ajuda a gerenciar os custos de inferência com serving distribuído por meio de uma versão corporativa do vLLM. Para reduzir a complexidade operacional, ele oferece ferramentas avançadas que automatizam as implantações e o acesso self-service a modelos, funcionalidades e recursos.

Todas as soluções do Red Hat AI oferecem flexibilidade e consistência para você criar, implantar e executar modelos de IA em qualquer plataforma de hardware e ambientes de nuvem híbrida, em grande escala.

Descubra o Red Hat AI

Artigo

O que é inferência de IA?

A inferência de IA é quando um modelo de IA fornece uma resposta baseada em dados. É a etapa final de um processo complexo da tecnologia de machine learning.

Aproveite a IA com a Red Hat: expertise, treinamento e suporte em todos os estágios da jornada de IA

Conheça o portfólio exclusivo de IA da Red Hat. O Red Hat AI ajuda você a atingir seus objetivos empresariais e de TI com a inteligência artificial (IA).

Leia mais

O que é Model Context Protocol (MCP)?

Descubra como o Model Context Protocol (MCP) conecta aplicações de IA a fontes de dados externas para ajudar a criar fluxos de trabalho mais inteligentes.

Tudo sobre a AIOps

AIOps, sigla em inglês que significa IA para operações de TI, é uma abordagem que usa machine learning e outras técnicas avançadas de IA para automatizar operações de TI.

O que é segurança de IA?

A segurança de IA protege aplicações de inteligência artificial contra ataques maliciosos que visam enfraquecer cargas de trabalho, manipular dados ou roubar informações confidenciais.

Inteligência artificial: conteúdo adicional