minions-ai-agents/docs/Desempenho de Agentes em Ha...

4.1 KiB

Com essa configuração de hardware, você possui uma excelente base para um ecossistema multi-agente local, embora precise lidar com as limitações de largura de banda de memória típicas de sistemas DDR4 ao rodar LLMs em CPU.

Aqui está o que você pode esperar em termos de capacidade e performance para sua infraestrutura:

1. Performance de Inferência (Velocidade de Geração)

O principal gargalo para LLMs em CPU é a largura de banda da memória RAM. O processador Intel Xeon E5-2699 v3 suporta quatro canais de memória por socket, com uma largura de banda máxima de aproximadamente 68\\text{ GB/s} por CPU.

  • Modelos de 7B/8B (ex: Llama 3.1 8B, Qwen 2.5 7B): Usando quantização Q4_K_M, você deve obter entre 7 a 10 tokens por segundo por instância. Essa velocidade é suficiente para uma interação humana fluida.
  • Modelos de 70B (ex: Llama 3.1 70B): O desempenho cai drasticamente para cerca de 0,7 a 1,5 tokens por segundo. Isso é utilizável para tarefas de "segundo plano" (pesquisas profundas, resumos de grandes documentos), mas frustrante para chat em tempo real.
  • Dica de Otimização (NUMA): Em sistemas de dois sockets, o link QPI entre as CPUs pode introduzir latência. Para melhor performance, configure o BIOS para desativar o SNC (Sub-NUMA Clustering) ou utilize o comando numactl --interleave=all para distribuir a carga de memória uniformemente.

2. Capacidade Simultânea (Quantidade de Agentes)

Com 128 GB de RAM, sua principal vantagem é a capacidade de manter múltiplos agentes ou modelos carregados simultaneamente sem swap de disco.

  • Agentes Especializados (8B): Cada agente com um modelo de 8B (Q4) e uma janela de contexto de 8k tokens ocupa cerca de 8\\text{ a }10\\text{ GB} de RAM. Você poderia rodar tranquilamente 10 a 12 agentes simultâneos mantendo uma margem de segurança para o sistema operacional e o banco de dados.
  • Agentes de Raciocínio Pesado (70B): Um modelo de 70B (Q4) consome cerca de 40\\text{ GB} de RAM. Você poderia rodar 2 agentes de grande porte simultaneamente, deixando o restante da memória para agentes menores de suporte.

3. Banco de Dados e Memória Semântica (Qdrant)

O banco de dados vetorial Qdrant é extremamente eficiente em termos de recursos. Para a "memória" dos seus agentes, o hardware atual é mais que suficiente:

  • Armazenamento de Vetores: Para armazenar 1 milhão de memórias (vetores de 1024 dimensões), o Qdrant precisará de aproximadamente 6 GB de RAM para performance máxima (tudo em memória).
  • Fórmula de Estimativa:
    \\text{RAM\\\_Qdrant} \= \\text{Nº de vetores} \\times \\text{dimensão} \\times 4 \\text{ bytes} \\times 1,5
  • Uso de SSD NVMe: Como você possui NVMe, pode configurar o Qdrant com on_disk: true. Isso permite que o banco gerencie coleções muito maiores do que a sua RAM disponível, carregando apenas os vetores mais acessados para o cache.

4. Busca e Embeddings

Para que os agentes compartilhem memória sem latência alta, você deve usar modelos de embedding extremamente leves executados na CPU via ONNX ou FastEmbed:

  • Modelo Sugerido: sentence-transformers/all-MiniLM-L6-v2 ou BGE-small-en-v1.5. Eles geram embeddings em menos de 25-50ms na sua CPU, permitindo que a busca por memórias passadas seja quase instantânea antes de cada resposta do agente.

  • Busca Web: Ao usar o SearXNG em Docker, o impacto no processamento é mínimo (menos de 2 GB de RAM e uso de CPU desprezível fora dos picos de busca).

Resumo da Entrega Tecnológica

Componente Expectativa no Xeon E5-2699 v3
Throughput Total ~20-30 tokens/s (distribuídos entre agentes)
Latência Médio (8B) ~100-150ms por token
Memória Livre p/ Contexto ~100 GB (após carregar o SO e ferramentas)
Escalabilidade de Memória Alta (Pode indexar >10 milhões de documentos)

Recomendação final: Para manter a eficiência, use modelos como o Phi-3 Mini (3.8B) para agentes de orquestração rápida e o Llama 3.1 8B para os especialistas que realizam a pesquisa e escrita.