A pergunta não é apenas quantos parâmetros o modelo tem
Saber quantos parâmetros um modelo tem pode ajudar a formar uma ideia inicial, mas não responde, por si só, à pergunta prática: ele vai funcionar com a configuração de que preciso nesta GPU? Para responder, é necessário considerar o modelo específico, o formato dos pesos, o runtime, o contexto que se pretende processar, as solicitações simultâneas e a memória que o sistema já está usando.
Por isso, “caber” não é uma propriedade isolada do modelo. Ele pode caber no momento do carregamento e ficar sem memória quando o contexto crescer; pode funcionar para uma solicitação e não para várias; ou pode iniciar porque parte do trabalho é executada na RAM, embora nem todo o modelo esteja na GPU. O resultado também pode mudar se você trocar de runtime ou alterar as opções de execução.
O objetivo deste guia é construir uma estimativa inicial e, em seguida, submetê-la a um teste controlado. A estimativa ajuda a descartar configurações claramente inviáveis e a identificar o que precisa ser medido. Ela não substitui um teste com o hardware, o runtime e a carga reais. Também não permite deduzir velocidade, qualidade das respostas ou estabilidade em execuções prolongadas.
O que ocupa memória durante a execução
Uma estimativa útil separa pelo menos quatro componentes: os pesos do modelo, o cache KV, os buffers temporários de cálculo e o espaço necessário para o runtime, o sistema e outros processos. Essa divisão é conceitual: dependendo do runtime, das opções e do hardware, as alocações podem ser registradas de maneiras diferentes e nem sempre aparecem como categorias independentes em uma ferramenta de monitoramento.
Os pesos são os dados do modelo que o runtime carrega para realizar a inferência. O tamanho do arquivo pode dar uma pista sobre eles, mas não equivale automaticamente à memória total necessária. O formato e a quantização influenciam o tamanho dos pesos, e o carregamento também envolve memória de trabalho e estruturas do runtime. Não transforme o tamanho do arquivo em uma estimativa de VRAM disponível sem medir a configuração escolhida.
O cache KV armazena informações associadas a tokens já processados, para que a geração possa continuar. Seu consumo depende da carga ativa e de características do modelo, não apenas do nome ou do número de parâmetros. O contexto previsto e as solicitações em paralelo são variáveis que precisam ser definidas antes da estimativa; a arquitetura e o tipo de cache configurado também podem alterar o resultado.
Os buffers de cálculo são áreas temporárias de memória usadas durante as operações do runtime. Seu tamanho pode depender da implementação e das opções ativas. O runtime e o sistema também precisam de espaço próprio; além disso, uma GPU pode compartilhar memória com a tela ou com outros processos. Portanto, a memória nominal da placa não deve ser tratada como se estivesse inteiramente livre para o modelo.
Inventário inicial de memória
Anote o que você já sabe e o que ainda precisa verificar. As categorias orientam a estimativa, mas não significam que o runtime exponha cada uso separadamente.
| Componente | O que o altera | O que registrar |
|---|---|---|
| Pesos | Modelo, formato e quantização | Tamanho e formato exatos do artefato carregado pelo runtime |
| Cache KV | Contexto ativo, solicitações concorrentes, arquitetura e estratégia de cache | Configuração de contexto, concorrência e cache |
| Buffers de cálculo | Runtime, operação e opções de execução | Picos observados durante o carregamento e a inferência |
| Runtime e sistema | Processos adicionais, memória usada pela tela e configuração do equipamento | Memória livre antes e durante o teste |
Reúna os dados antes de fazer os cálculos
Comece identificando o artefato exato do modelo: não apenas o nome comercial, mas também o arquivo ou formato que você pretende carregar e a configuração associada. Uma ficha de configuração pode revelar dimensões que o nome não informa, como o número de camadas e determinadas dimensões e cabeças de atenção. Esses dados ajudam a descrever a arquitetura, mas não bastam, sozinhos, para calcular o consumo final: também importa como o runtime representa e aloca o cache e os buffers.
Em seguida, defina o runtime e suas opções. Registre a versão ou configuração que está testando, a quantidade de contexto solicitada, a concorrência prevista e qualquer escolha relativa ao tipo ou à localização do cache. Se o runtime permitir colocar algumas camadas na GPU, descarregar uma parte para a CPU ou distribuir o trabalho entre placas, anote também essas decisões. Uma estimativa sem essas condições mistura cenários diferentes.
Por fim, registre o ponto de partida do equipamento: memória total e disponível da GPU, processos que já a utilizam e se a placa está dedicada à inferência ou também desempenha outras funções. Ferramentas de gerenciamento de GPU podem mostrar memória total, reservada, usada e livre; essas são observações do estado do dispositivo, não uma explicação completa de qual componente do modelo ocupa cada bloco.
Ficha de configuração
Preencha esta ficha antes de estimar. Mantenha os mesmos valores durante o teste inicial para conseguir atribuir as mudanças a uma variável específica.
- 01Identifique o modelo e o formato exato dos pesos que o runtime vai carregar.
- 02Registre os parâmetros de arquitetura disponíveis na configuração do modelo; marque como desconhecidos os que não estiverem documentados.
- 03Especifique o runtime e as opções de execução, incluindo qualquer descarregamento para a RAM ou divisão entre GPUs.
- 04Defina o contexto máximo que você realmente espera usar e quantas solicitações podem estar ativas ao mesmo tempo.
- 05Meça a memória livre da GPU antes de iniciar e registre os processos que já a estão usando.
Como construir uma estimativa inicial
Como primeira aproximação, pense na VRAM necessária como a soma dos pesos residentes na GPU, do cache KV alocado na GPU, dos buffers e do custo do runtime, além de uma margem para variações de carga e outros usos da placa. Não se trata de uma fórmula exata nem de um valor que possa ser preenchido com dados genéricos: as categorias e seus tamanhos dependem da implementação e da configuração.
Separe os valores conhecidos das aproximações. O tamanho do arquivo é um dado observável, mas não prova quanto desse tamanho ficará residente na GPU nem qual será o pico de memória. O contexto e a concorrência desejados são decisões suas. A arquitetura e a estratégia de cache exigem informações sobre o modelo e o runtime. Os buffers e a margem normalmente precisam ser medidos no sistema em que o modelo será executado.
Se uma variável importante for desconhecida, não esconda essa incerteza atrás de um único número. É mais honesto preparar cenários: por exemplo, uma configuração com contexto moderado e outra mais exigente, cada uma com a concorrência necessária para o serviço. Esses rótulos não garantem consumos específicos; servem para assegurar que o teste cubra as condições de uso, em vez de validar apenas o caso mais simples.
A documentação de um runtime pode ajudar a entender as opções disponíveis e os limites declarados, mas uma capacidade anunciada ou um valor de configuração não prova que o equipamento suporta a carga durante a execução. Use a documentação para planejar o teste e as medições de uso para verificar a configuração.
O cache KV muda conforme o contexto e a carga
O cache KV merece atenção porque seu consumo está ligado ao trabalho ativo. Um contexto mais longo pode exigir que mais informações sejam mantidas para continuar a geração; várias solicitações simultâneas podem manter diversas sequências ativas. Não é possível inferir um valor preciso a partir do nome do modelo ou da quantidade de parâmetros.
A arquitetura importa. Para fazer uma estimativa mais fundamentada, são necessários atributos da configuração do modelo e detalhes sobre como o runtime lida com a atenção e o cache. Mesmo com essas informações, o valor observado pode depender do tipo de cache escolhido, da alocação de memória e das opções do runtime. Portanto, uma regra genérica sem esses dados pode servir como orientação qualitativa, mas não como garantia de que uma configuração cabe.
Os runtimes podem oferecer estratégias diferentes, como caches dinâmicos, estáticos, quantizados ou descarregados para a CPU. Alterar a estratégia pode mudar a distribuição de memória e as condições de execução. Não compare duas estimativas como se fossem equivalentes quando uma delas usa outra estratégia ou quando o runtime e suas opções são diferentes.
O que verificar quando o cache cresce
Use esta tabela para localizar a possível causa de uma mudança observada; ela não pressupõe uma taxa universal de crescimento.
| Mudança no teste | O que pode estar mudando | O que manter constante ou registrar |
|---|---|---|
| Aumentar o contexto | Mais tokens ativos e uma alocação diferente de cache | Contexto solicitado e memória durante o carregamento e a geração |
| Aumentar as solicitações paralelas | Mais sequências ativas e mais cache associado à carga | Número de solicitações simultâneas e duração do teste |
| Mudar a estratégia de cache | Representação, localização ou alocação de memória diferentes | Tipo de cache e opções exatas do runtime |
| Mudar de runtime | Implementação e gerenciamento de memória diferentes | Repetir o teste; não transferir diretamente o resultado anterior |
GPU inteira, descarregamento para a RAM ou várias placas
Uma execução pode usar a GPU inteira para o modelo, colocar apenas parte das camadas nela, descarregar parte do cache para a CPU ou distribuir o modelo entre GPUs. Algumas dessas opções permitem testar configurações que não caberiam com todos os componentes em uma única placa, mas não demonstram que o modelo está inteiramente residente na VRAM. Também não permitem deduzir, por si só, o desempenho que será obtido.
Verifique o modo de execução nas opções do runtime e nos registros. Em ferramentas que permitem especificar camadas na GPU ou dividir o trabalho entre placas, anote os valores aplicados. Se houver descarregamento para a CPU ou uma estratégia de cache na CPU, a memória da GPU deixa de representar, sozinha, todo o uso de memória da execução. Diferencie “o aplicativo iniciou” de “a configuração atende aos requisitos de residência e carga definidos”.
Em várias GPUs, conhecer a soma da memória nominal das placas também não basta para saber como o modelo será distribuído. A divisão depende das capacidades do runtime e da configuração escolhida. Avalie cada dispositivo e a alocação efetiva; não presuma que toda a memória somada estará disponível para qualquer distribuição.
O que significa o processo iniciar
Classifique o resultado de acordo com o modo de execução que você verificou, não apenas pela ausência de um erro ao iniciar.
| Resultado | O que é possível concluir | O que não é possível concluir |
|---|---|---|
| Pesos e cache na GPU conforme a configuração prevista | A execução observada usa a GPU de acordo com as opções verificadas | Que suportará qualquer contexto, concorrência ou duração |
| Parte das camadas ou do cache na CPU | O runtime conseguiu continuar com descarregamento ou divisão de memória | Que o modelo inteiro cabe na VRAM |
| Modelo carregado, mas sem testar a carga prevista | A etapa de carregamento foi concluída nessas condições | Que um contexto longo ou várias solicitações vão funcionar |
| Falha ao carregar ou durante o teste | A configuração atual não concluiu essa execução | Que o modelo não possa funcionar com outras opções ou hardware |
Verifique a estimativa com um teste controlado
O teste deve reproduzir o cenário que você pretende implantar. Fixe o modelo, o formato, o runtime, o contexto, a concorrência e as opções de cache e descarregamento. Registre o estado inicial da memória e qualquer processo externo que compartilhe a GPU. Se você mudar várias opções de uma vez, será difícil identificar qual delas explica o resultado.
Carregue o modelo e registre a memória usada e disponível. Em seguida, execute uma solicitação com a configuração prevista. Aumente o contexto ou a concorrência gradualmente, uma variável por vez, e anote quando aparece um erro, quando o descarregamento é ativado ou quando o consumo se aproxima do limite observado. Não interprete uma única leitura como um máximo estável: acompanhe a carga durante a execução, pois o uso pode diferir entre o carregamento inicial e a inferência.
Use os registros do runtime para verificar a distribuição entre GPU e CPU e as opções que foram efetivamente aplicadas. Compare as observações com uma ferramenta de GPU que exiba memória total, usada, reservada e livre. Essa leitura ajuda a caracterizar o estado do dispositivo; por si só, nem sempre separa pesos, cache e buffers. Repita a execução para detectar variações no mesmo equipamento e registre as condições exatas.
Defina antecipadamente o que significa passar no teste: concluir o contexto previsto, suportar a concorrência necessária e não depender de um descarregamento que não estava previsto. Se o sistema precisar reservar margem para outros processos, inclua isso como requisito. Um teste que termina sem erros, mas deixa de manter essa margem, pode ser insuficiente para o uso pretendido.
Etapas de verificação
Execute esta sequência sem alterar várias condições ao mesmo tempo. Guarde os registros para repetir o teste depois de mudar o hardware ou o runtime.
- 01Anote modelo, formato, runtime, opções de cache, contexto, concorrência e modo de distribuição.
- 02Meça a memória livre antes de carregar e registre outros processos que usam a GPU.
- 03Carregue o modelo e observe a memória e os registros do runtime; confirme se há camadas ou cache na CPU.
- 04Comece com uma carga pequena e depois aumente o contexto, mantendo a concorrência fixa.
- 05Reinicie ou deixe o estado comparável e aumente a concorrência com o contexto definido.
- 06Registre erros, picos observados, descarregamento para a RAM e o resultado de cada execução.
- 07Repita o teste e avalie se a margem disponível atende ao requisito operacional definido.
Erros frequentes e limites da estimativa
O erro mais comum é usar o tamanho do arquivo como se fosse o consumo total. Esse dado não inclui necessariamente o cache, os buffers, o runtime nem a memória que o sistema já está usando. Outro erro é comparar com a capacidade nominal da GPU sem medir a memória disponível quando o equipamento está em seu estado real de uso.
Também é fácil testar apenas a inicialização e presumir que isso valida um contexto extenso ou várias solicitações. O carregamento inicial e a carga sustentada são etapas diferentes do teste. Se você mudar o contexto, a concorrência, o tipo de cache, o runtime ou a divisão entre GPU e CPU, estará testando outra configuração.
Por fim, não extrapole sem cautela um valor de um runtime para outro. As ferramentas podem diferir na forma como gerenciam a memória e apresentam suas métricas. Os valores observados descrevem o equipamento e as opções testadas; não garantem o mesmo resultado em outro sistema nem uma execução estável por tempo indefinido. O teste também não determina a qualidade da saída nem se a velocidade será suficiente para um caso de uso.
Decisão prática
A estimativa serve para orientar o próximo passo. Se as evidências não respondem a uma condição crítica, a conclusão correta é “falta testar”, não “cabe”.
| Situação | Decisão razoável | Próximo passo |
|---|---|---|
| A estimativa excede claramente a memória disponível antes mesmo de incluir cache e buffers | Descartar essa configuração nessa GPU ou alterar os requisitos | Avaliar outro formato, distribuição ou hardware e medir novamente |
| O carregamento inicial termina, mas o contexto necessário não foi testado | Não considerar o caso de uso validado | Aumentar o contexto de forma controlada |
| O processo funciona por meio de descarregamento para a CPU que não estava previsto | Não afirmar que o modelo cabe inteiramente na VRAM | Verificar as opções do runtime e decidir se o descarregamento é aceitável |
| O contexto e a concorrência necessários passam em testes repetidos com margem | A configuração tem evidências práticas para esse equipamento e runtime | Documentar as condições e repetir o teste se algum componente mudar |
Critérios finais para escolher ou reutilizar hardware
Antes de comprar uma GPU, identifique uma carga representativa e verifique se a memória disponível pode acomodar os componentes que você quer manter nela, além da margem necessária para o sistema. Se a estimativa já exceder claramente a capacidade utilizável, não há motivo para fingir precisão: essa combinação exige mudar os requisitos, a distribuição ou o hardware. Se estiver perto do limite, o teste no equipamento exato é especialmente importante.
Ao reutilizar uma GPU, meça o estado real dela e verifique quem compartilha a memória. Não trate a capacidade total como se estivesse livre. Se aceitar execução parcial na RAM ou distribuição entre placas, registre essa decisão como parte da configuração, não como um detalhe invisível. Ao comparar alternativas, use a mesma carga e os mesmos critérios.
Para aprofundar a análise de modelos locais, consulte o guia de modelos locais, o comparador e a seção de descoberta. Mantenha a mesma disciplina ao avaliar uma opção: identifique a configuração exata e verifique as condições importantes para o seu caso. A conclusão útil não é um valor universal de VRAM, mas um resultado reproduzível para um modelo, runtime, hardware e carga definidos.
Questões em aberto
- A documentação citada não fornece uma fórmula universal para calcular o consumo total de VRAM de qualquer modelo, runtime e hardware.
- A separação observada entre pesos, cache KV, buffers e memória do runtime depende de como o runtime gerencia e apresenta suas alocações.
- Os valores de uso podem variar entre execuções e runtimes; os testes devem ser repetidos no equipamento e com as opções previstos.
- Os parâmetros disponíveis na configuração do modelo não bastam, por si só, para deduzir o consumo final sem conhecer a estratégia do runtime.
Continue a explorar
Fontes consultadas
Correções e transparência
Se encontrar informação incorreta ou desatualizada, envie-nos a página e a fonte que devemos rever.
Propor uma correção