IA privada para empresas
Quando o dado não pode sair e o que isso exige da arquitetura.
ARTIGO · INFRAESTRUTURA
Rodar um modelo de linguagem dentro da empresa é um problema de memória de vídeo, não de processador. Este texto mostra a conta que decide o dimensionamento, o que ela não cobre, e por que a resposta muda conforme quantas pessoas vão usar ao mesmo tempo.
A pergunta chega quase sempre na forma errada: “que servidor eu preciso comprar para rodar IA?”. A forma útil é outra: quantos gigabytes de memória de vídeo o modelo que eu quero rodar precisa ter disponíveis, ao mesmo tempo, para o número de pessoas que vão usar.
A diferença não é retórica. Um servidor com muitos núcleos e muita memória RAM, mas sem placa de vídeo com memória suficiente, não roda o modelo — ou roda a uma velocidade que ninguém aceita. Já um servidor modesto com a placa certa roda.
Esta é a parte de infraestrutura da decisão. A parte de perímetro — se o dado pode ou não sair da empresa — está em outro texto, e é ela que determina se este aqui é sequer necessário.
Um modelo de linguagem é, do ponto de vista de memória, uma tabela de números. A quantidade desses números é o que o nome do modelo informa: um modelo “7B” tem sete bilhões de parâmetros.
Quanto cada parâmetro ocupa depende da precisão em que ele é carregado. A documentação técnica da NVIDIA dá o exemplo de referência: um modelo de sete bilhões de parâmetros carregado em 16 bits ocupa aproximadamente 14 GB de memória — ou seja, dois bytes por parâmetro em FP16 ou BF16.
A partir daí a escala é direta. A documentação da Hugging Face registra que um modelo em int8 é aproximadamente quatro vezes menor que o mesmo modelo em float32, e que int4 corta pela metade o tamanho do int8. Como float32 são quatro bytes por parâmetro, a tabela abaixo é uma derivação dessas proporções — anotamos que é derivação, e não citação literal, porque a documentação enuncia a razão e não o número de bytes.
| Precisão | Bytes por parâmetro | Modelo de 8B | Modelo de 70B |
|---|---|---|---|
| FP32 | 4 | cerca de 32 GB | cerca de 280 GB |
| FP16 / BF16 | 2 | cerca de 16 GB | cerca de 140 GB |
| INT8 | 1 | cerca de 8 GB | cerca de 70 GB |
| INT4 | 0,5 | cerca de 4 GB | cerca de 35 GB |
Duas leituras imediatas dessa tabela. A primeira: um modelo de 70B em precisão plena não cabe em uma única placa de nenhuma geração atual — exige várias placas ou quantização agressiva. A segunda: um modelo de 8B em INT4 cabe folgado em hardware que muita empresa já tem.
É a conta que separa “projeto de infraestrutura” de “roda no que existe”.
Os pesos são o piso, não o total. Enquanto o modelo gera a resposta, ele mantém em memória um cache com o estado do que já foi lido e escrito — o KV cache. Essa memória é adicional aos pesos, e é ela que costuma explicar por que um servidor que rodava bem em teste passa a falhar em produção.
A NVIDIA publica a fórmula e um exemplo: para um modelo de sete bilhões de parâmetros em FP16, com uma requisição de quatro mil tokens de contexto, o cache fica em torno de 2 GB — e cresce linearmente com o tamanho do contexto e com o número de requisições simultâneas.
Traduzindo para decisão: dez pessoas usando ao mesmo tempo, com documentos longos, é um dimensionamento bem diferente de uma pessoa testando com perguntas curtas. O teste com uma pessoa não prevê o comportamento com dez.
A documentação do vLLM, um dos servidores de inferência mais usados, expõe exatamente esses dois controles: o comprimento máximo de contexto e o número máximo de sequências simultâneas são os parâmetros que se ajustam para caber na memória disponível. São eles que, na prática, decidem quantas pessoas o servidor atende.
| Placa | Memória | Potência declarada |
|---|---|---|
| NVIDIA L4 | 24 GB | até 72 W |
| NVIDIA L40S | 48 GB | até 350 W |
| NVIDIA A100 | 40 GB ou 80 GB | 250 a 400 W conforme a versão |
| NVIDIA H100 | 80 GB (SXM) · 94 GB (NVL) | até 700 W (SXM) |
| NVIDIA H200 | 141 GB | até 700 W (SXM) |
| GeForce RTX 5090 | 32 GB | 575 W |
Duas observações sobre essa tabela, ambas de ordem prática.
A primeira é a diferença de potência. A L4, com 24 GB, declara até 72 W — cabe em servidor comum, sem alteração de energia nem de refrigeração. A H100 declara até 700 W por placa. Não são o mesmo projeto de sala.
A segunda: placa de vídeo de consumo aparece na tabela porque funciona tecnicamente e é usada em laboratório. Antes de usá-la em produção, vale ler a licença de uso do fabricante e confirmar o que ela permite em ambiente de datacenter — é uma restrição contratual, não técnica, e passa despercebida com frequência.
Quantizar é reduzir a precisão dos números do modelo para que ele ocupe menos memória. É a alavanca mais eficaz do dimensionamento — e é uma troca, não um almoço grátis.
A documentação da Hugging Face enquadra a troca como “eficiência contra acurácia” e registra o essencial: a quantização para int4 normalmente causa queda de acurácia maior que a int8. Não diz quanto, porque depende do modelo e da tarefa — e é por isso que a etapa de avaliação não pode ser pulada.
Os métodos diferem no que protegem. O GPTQ ajusta cada linha da matriz de pesos para minimizar o erro da conversão, restaurando para 16 bits durante a inferência. O AWQ preserva seletivamente a fração de pesos mais importante para o desempenho do modelo, em vez de tratar todos igualmente. O formato GGUF, usado por llama.cpp e Ollama, oferece uma escala contínua de níveis — de precisão plena até 1,75 bit por peso — em que cada nível é um ponto diferente na mesma troca.
A regra operacional que usamos: quantização é decisão que se valida com a tarefa real da empresa, não com teste genérico. Um modelo quantizado que responde bem sobre conhecimento geral pode degradar exatamente na extração estruturada que o processo depende.
| Família | Tamanhos publicados no card oficial |
|---|---|
| Llama (Meta) | 3.1 em 8B, 70B e 405B; 3.3 em 70B; Llama 4 Scout com 109B totais e 17B ativados, Maverick com cerca de 400B totais e 17B ativados |
| Qwen (Alibaba) | 2.5 de 0,5B a 72B; Qwen3 denso de 0,6B a 32B, mais 30B-A3B e 235B-A22B em mistura de especialistas |
| Gemma (Google) | 2 em 2B, 9B e 27B; 3 em 270M, 1B, 4B, 12B e 27B; 4 com variantes de borda, um MoE de 26B totais e um denso de 31B |
| Mistral | Mistral 7B; Mixtral 8x7B com 47B totais; Mixtral 8x22B com 141B totais |
| DeepSeek | V3 e R1 com 671B totais e 37B ativados; destilados de 1,5B a 70B sobre bases Qwen e Llama |
Repare no padrão de mistura de especialistas, presente em Llama 4, Qwen3, Gemma 4 e DeepSeek: o modelo tem muitos parâmetros no total, mas ativa só uma fração por token. Isso melhora a velocidade — e não reduz a memória necessária, porque os pesos precisam estar carregados para que o roteamento possa escolher entre eles. É a confusão mais comum no dimensionamento de modelo MoE.
É possível, está documentado, e tem limite claro.
O llama.cpp foi construído exatamente para isso: implementação em C e C++ sem dependências, com suporte a instruções vetoriais de x86 e ARM, e com inferência híbrida entre CPU e GPU para acelerar parcialmente modelos maiores que a memória de vídeo disponível. O vLLM também mantém backend de CPU suportado em x86, ARM, Apple Silicon e IBM Z, com ressalvas registradas na própria documentação — em processadores AMD Zen, por exemplo, float16 não é suportado.
O Ollama publica orientação de memória por tamanho de modelo: 8 GB de RAM para modelos de 7B, 16 GB para 13B e 64 GB para 70B. E permite forçar execução somente em CPU.
O que a documentação não promete é velocidade. Em CPU, a geração é mais lenta por um fator que depende do modelo e do hardware. Para uso interativo — alguém esperando a resposta na tela — costuma ser insuficiente. Para processamento em lote, à noite, sem ninguém esperando, costuma bastar. É uma decisão de tipo de uso, não de orçamento.
É a parte que não aparece na conversa técnica e aparece na obra.
O guia oficial da NVIDIA para instalação do DGX H100 especifica até 10,2 kW por sistema, com faixa de temperatura recomendada de 18 a 27 °C segundo a classificação ASHRAE. O guia do DGX B200 especifica seis fontes de 3,3 kW, dissipação de 48.794 BTU por hora e resfriamento a ar com vazão de 1.550 CFM.
Esses números são de appliance de fabricante, não de servidor genérico — mas dão a ordem de grandeza do que uma máquina com várias placas de alto desempenho exige da sala. Sala de servidor de empresa média foi dimensionada para equipamento de rede e armazenamento, não para isso.
Por isso, no diagnóstico, tratamos energia, refrigeração e espaço em rack como parte do escopo de infraestrutura, não como detalhe de instalação. Descobrir na entrega que a sala não comporta o equipamento é uma das formas mais caras de errar o projeto.
Entre “usar API pública” e “comprar servidor” existe um terceiro arranjo: instância com placa de vídeo em nuvem, dedicada à empresa. Os três grandes provedores documentam famílias de máquina com GPU para inferência — a AWS nas famílias G e P, a Azure na série NC, o Google Cloud nas famílias A e G.
Esse arranjo mantém o controle sobre qual modelo roda e qual versão, sem exigir sala, energia nem compra de equipamento. Em compensação, o dado passa a residir na infraestrutura do provedor de nuvem — o que reabre a questão de perímetro e de região que motivou a discussão em primeiro lugar.
Não existe arranjo que resolva os três eixos ao mesmo tempo: controle total, esforço mínimo de operação e perímetro fechado. O diagnóstico serve para descobrir qual dos três a empresa realmente precisa priorizar.
Quando o dado não pode sair e o que isso exige da arquitetura.
Os três arranjos possíveis e o que cada um resolve.
Por que quase sempre a resposta é recuperação, e não treino.
Trinta minutos para entender que tarefa o modelo vai fazer e quantas pessoas vão usar. Sem isso, qualquer especificação de servidor é chute.
Respondemos em até 1 hora útil. Confirmação no mesmo dia útil.