«Correr uma IA» abrange duas necessidades que não pedem o mesmo tamanho de servidor. Uma aplicação que chama um modelo por API dimensiona-se como qualquer aplicação web; um modelo executado no próprio servidor dimensiona-se antes de mais pela sua memória. Este guia separa os dois casos, apresenta o tamanho em memória dos modelos mais comuns e a forma de o calcular.
A maior parte das aplicações que «usam IA» (assistentes, agentes, resumos, extração de dados, pesquisa em documentos) chama um modelo alojado pelo seu fornecedor, através de uma API. O cálculo é feito do lado dele; o seu servidor prepara o pedido, espera pela resposta e trata-a. Dimensiona-se então como qualquer aplicação web: pela sua linguagem, pela sua base de dados e pelo número de utilizadores simultâneos.
O outro caso é o modelo executado no próprio servidor, com o Ollama, o llama.cpp ou uma biblioteca Python. As razões são conhecidas: dados que ficam na sua infraestrutura, um custo fixo seja qual for o número de pedidos, um processamento em segundo plano sobre grandes volumes, um modelo especializado. Aí, o modelo inteiro tem de caber em memória, e é ele que define o tamanho.
| O que o servidor faz | O recurso que decide | Ponto de partida |
|---|---|---|
| Chama um modelo por API (assistente, agente, chatbot) | A memória da aplicação | 2 vCPU, 4 GB |
| Calcula também os embeddings e consulta uma base vetorial (pgvector) | A memória dos vetores e do seu índice | 2 a 4 vCPU, 6 a 8 GB |
| Executa um modelo pequeno de 1 a 4 mil milhões de parâmetros, em segundo plano | A memória, depois o processador | 4 vCPU, 8 GB |
| Executa um modelo de 7 a 8 mil milhões de parâmetros para alguns utilizadores | A memória e a sua largura de banda | 6 a 8 vCPU, 16 GB |
| Executa um modelo de 12 a 14 mil milhões de parâmetros, com um contexto longo | A memória | 8 vCPU, 24 GB |
Um pedido a um modelo por API dura de um a várias dezenas de segundos, sobretudo quando a resposta é transmitida à medida que é gerada (streaming). Durante esse tempo, o seu servidor quase não calcula nada: espera. O que conta é a sua capacidade de manter muitos pedidos em espera sem bloquear os outros:
proxy_read_timeout).A memória a prever é a da aplicação e da sua base de dados: 4 GB cobrem uma aplicação Python ou Node.js com PostgreSQL no lançamento. Uma configuração corrente, uma interface Next.js, uma API FastAPI e uma base PostgreSQL que chamam um modelo por API, cabe em 6 a 8 GB, incluindo a compilação da interface.
Uma aplicação que pesquisa nos seus documentos (RAG, retrieval-augmented generation) transforma cada excerto num vetor, e depois encontra os mais próximos de uma pergunta. Dois elementos a dimensionar:
O tipo halfvec do pgvector guarda cada dimensão em 2 bytes em vez de 4: metade da memória, com uma qualidade de pesquisa muito próxima.
Um modelo de linguagem é um ficheiro de pesos, carregado inteiro em memória para responder. O seu tamanho depende do número de parâmetros e da quantização, a precisão com que cada peso é guardado. O formato GGUF, o do llama.cpp e do Ollama, propõe quantizações de 2 a 16 bits; a variante Q4_K_M, perto dos 4 bits, é o compromisso habitual entre tamanho e qualidade.
| Tamanho do modelo | Exemplos | 4 bits (Q4_K_M) | 8 bits (Q8_0) | 16 bits |
|---|---|---|---|---|
| 1 a 3 mil milhões de parâmetros | Llama 3.2 3B, Qwen2.5 3B | 1 a 2 GB | 1,3 a 3,5 GB | 2,5 a 6,5 GB |
| 7 a 8 mil milhões | Mistral 7B, Llama 3.1 8B, Qwen2.5 7B | 4,4 a 5 GB | 7,7 a 8,5 GB | 14,5 a 16 GB |
| 12 a 14 mil milhões | Mistral Nemo 12B, Qwen2.5 14B | 7,5 a 9 GB | 13 a 16 GB | 25 a 30 GB |
| 32 mil milhões | Qwen2.5 32B | cerca de 20 GB | cerca de 35 GB | cerca de 65 GB |
| 70 mil milhões | Llama 3.3 70B | cerca de 43 GB | cerca de 75 GB | cerca de 140 GB |
A este peso somam-se dois elementos:
Exemplo. Llama 3.1 8B em 4 bits, duas conversas simultâneas de 8 000 tokens e uma pequena aplicação: 5 GB de modelo, 2 GB de contexto, 2 GB para a aplicação e o sistema, ou seja 9 GB, e cerca de 12 GB com 25 % de margem.
Para produzir cada token, o modelo relê todos os seus pesos em memória. Em processador, a velocidade de geração é portanto limitada pela largura de banda da memória mais do que pelo número de núcleos: um modelo de 5 GB, numa máquina que lê 25 GB por segundo, fica perto dos 5 tokens por segundo, antes mesmo de contar o cálculo.
Distinguem-se duas fases:
Na prática, com alguns vCPU, um modelo de 7 a 8 mil milhões de parâmetros quantizado em 4 bits produz alguns tokens por segundo. É confortável para um processamento em segundo plano (classificar mensagens, extrair campos de um documento, resumir durante a noite o que chegou durante o dia) e para um assistente interno. As utilizações interativas em grande escala, e os modelos de várias dezenas de milhares de milhões de parâmetros, executam-se em placa gráfica (GPU).
A medição decide: o llama-bench, incluído no llama.cpp, dá a velocidade das duas fases no seu servidor, para o seu modelo.
llama-bench -m modelo-Q4_K_M.gguf -p 512 -n 128
Um modelo ocupa em disco mais ou menos o que ocupa em memória: 5 GB para um modelo de 8 mil milhões de parâmetros em 4 bits. Conte com espaço para dois ou três modelos ou versões, os índices vetoriais, os documentos de origem e a base de dados. Um SSD NVMe carrega um modelo em poucos segundos no arranque do serviço, o que conta a cada reinício.
Ordem de grandeza: 50 GB para uma aplicação que chama um modelo por API, 80 a 120 GB assim que um modelo e os seus documentos vivem no servidor.
Com o Ollama, a instalação cabe em dois comandos:
curl -fsSL https://ollama.com/install.sh | sh
ollama run llama3.1:8b
Por predefinição, o Ollama escuta em 127.0.0.1:11434, ou seja, a partir do próprio servidor. Mantenha esta definição: a sua API não pede qualquer autenticação, e uma instância aberta à Internet serve qualquer pessoa, com os seus recursos. A sua aplicação, no mesmo servidor, fala com ele localmente; se outro servidor precisar de o consultar, passe por um proxy que autentica os pedidos ou por uma rede privada.
Ajuste depois o tamanho do contexto (num_ctx) ao que os seus pedidos precisam: é ele que faz crescer a memória ocupada, conversa a conversa.
O VPS Pro corre com processadores Intel Xeon, memória ECC e SSD NVMe em espelho, com acesso root para instalar o Ollama, o llama.cpp, o pgvector ou a sua própria stack. A Assistência integral está incluída: descreva-nos o seu projeto, API ou modelo no servidor, aconselhamos-lhe o tamanho, e depois diagnosticamos e indicamos-lhe o que fazer em cada pergunta, do sistema até ao código da sua aplicação.
Sim. O llama.cpp e o Ollama executam modelos quantizados em processador. Um modelo de 7 a 8 mil milhões de parâmetros em 4 bits pede cerca de 5 GB de memória e produz alguns tokens por segundo com alguns vCPU, o que serve para processamentos em segundo plano e para assistentes internos.
Cerca de 5 GB para o modelo quantizado em 4 bits (Q4_K_M), mais 1 GB por conversa de 8 000 tokens, mais a aplicação e o sistema. Um servidor de 8 GB corre o modelo sozinho; 16 GB deixam espaço para a aplicação, a base de dados e várias conversas.
A API dá acesso aos modelos mais potentes, sem servidor específico, com um custo por pedido. O modelo no servidor mantém os dados do seu lado e fixa o custo, com um modelo mais compacto. Muitas aplicações combinam os dois: embeddings e classificação no servidor, redação por API.
Cerca de 50 GB para uma aplicação que chama um modelo por API. Assim que um modelo vive no servidor, preveja 80 a 120 GB: um modelo de 8 mil milhões de parâmetros em 4 bits pesa 5 GB, e é frequente guardar várias versões, com os documentos e os respetivos índices vetoriais.
Simafri
Vamos falar do seu projeto
Diga-nos em poucas palavras o que precisa: respondemos-lhe rapidamente.
Obrigado! O seu pedido foi enviado. Responderemos em breve.
Prefere o email? Escreva-nos para support@simafri.com.