Glossário

Esta seção explica termos técnicos utilizados ao longo da documentação.

This section explains technical terms used throughout the documentation.

Alocador de Memória (Memory Allocator)

PyTorch-style (HF Transformers, vLLM)

O padrão de alocação de memória usado por frameworks baseados em PyTorch. A memória é alocada de forma contígua para os pesos do modelo e ativações, com overhead adicional para operações CUDA. Este alocador tende a ser conservador no gerenciamento de memória, reservando mais VRAM do que estritamente necessário para evitar fragmentação e garantir operação suave.

Características dos frameworks:

  • Hugging Face Transformers: Usa o alocador CUDA padrão do PyTorch com overhead adicional para carregamento do modelo e passos de otimização

  • vLLM: Implementa PagedAttention com gerenciamento de memória mais eficiente, mas ainda segue padrões de alocação PyTorch-style para pesos do modelo

Nota: TensorRT-LLM, llama.cpp, EXL2

Estes frameworks usam estratégias de alocação de memória diferentes que podem resultar em menor uso de VRAM:

  • TensorRT-LLM: Usa alocadores de memória customizados otimizados para engines TensorRT, com pooling de memória mais agressivo e menos overhead

  • llama.cpp (GGUF): Usa alocação aware de quantização com arquivos memory-mapped, frequentemente requerendo 20-30% menos VRAM que equivalentes PyTorch

  • EXL2 (ExLlamaV2): Implementa alocação de memória extremamente otimizada com overhead mínimo, suportando quantização de taxa variável por camada

Ao calcular requisitos de VRAM, esta ferramenta assume alocação PyTorch-style para consistência. Se usando esses frameworks alternativos, o uso real de VRAM pode ser 10-30% menor que o estimado.

Adaptadores LoRA

Low-Rank Adaptation é uma técnica de fine-tuning eficiente em parâmetros que adiciona matrizes de decomposição de posto treináveis aos pesos existentes do modelo em vez de fazer fine-tuning de todos os parâmetros.

Impacto na memória:

  • Por adaptador: +0.5 a 2 GB de VRAM dependendo do rank e tamanho do modelo

  • Rank 8-16: Configuração típica, ~0.5-1 GB de overhead

  • Rank 32-64: Adaptadores de maior capacidade, ~1-2 GB de overhead

  • Múltiplos adaptadores: A memória escala linearmente com adaptadores ativos

Impacto no cálculo de VRAM:

# Com LoRA, adicione memória do adaptador ao total
total_vram = modelo_base + kv_cache + overhead_lora_adapter

A ferramenta assume nenhum adaptador LoRA ativo por padrão. Se usando LoRA, adicione 0.5-2 GB por adaptador aos requisitos de VRAM estimados.

Decodificação Especulativa (Speculative Decoding)

Também conhecida como draft decoding ou assistant decoding, esta técnica usa um modelo draft menor para prever tokens que são então verificados pelo modelo alvo.

Impacto na memória:

  • Overhead do modelo draft: +30-50% de VRAM adicional para o modelo draft

  • Exemplo: Usar um modelo draft de 7B com um alvo de 70B requer memória para ambos os modelos

  • Tamanho típico de draft: 10-20% dos parâmetros do modelo alvo

Trade-offs:

  • Vantagens: Geração de tokens 2-3x mais rápida

  • Desvantagens: Uso de memória significativamente maior, requer dois modelos na memória

A ferramenta assume nenhuma decodificação especulativa. Se habilitada, calcule a memória para ambos os modelos e adicione 10-15% para overhead de verificação.

KV Cache Paginado Agressivo (Aggressive Paged KV)

Paged KV Cache é uma técnica de gerenciamento de memória inspirada em paging de sistema operacional, onde o cache KV é dividido em blocos de tamanho fixo (páginas) que podem ser alocados e desalocados dinamicamente.

Variantes de implementação:

  • Paged KV padrão: Implementação padrão do vLLM, uso de memória eficiente

  • Paged KV agressivo: Estratégias mais agressivas de pré-alocação e cache

Impacto na memória:

  • Padrão: Redução de 10-20% na memória de KV cache vs alocação contígua

  • Agressivo: Economias adicionais de 5-10% mas maior overhead de CPU para gerenciamento de páginas

A ferramenta usa estimativas conservadoras de KV cache. Implementações de paged KV agressivo podem usar 10-30% menos memória que o calculado para o componente de KV cache.

KV Cache (Cache Key-Value)

O KV cache armazena chaves e valores de atenção para todos os tokens gerados anteriormente em uma sequência, evitando recomputação durante a geração autoregressiva.

Cálculo de memória:

kv_cache_memory = 2 × num_layers × hidden_dim × context_length × bytes_per_element

Componentes:

  • Keys (Chaves): Cache para chaves de atenção (projeções de tokens de consulta)

  • Values (Valores): Cache para valores de atenção (conteúdo para atender)

  • Context length: Escalonamento linear - 2x contexto = 2x memória de KV cache

Impacto da precisão:

  • KV FP32: 4 bytes por elemento (raramente usado)

  • KV FP16/BF16: 2 bytes por elemento (padrão)

  • KV INT8: 1 byte por elemento (experimental, suporte limitado)

  • KV FP8: 1 byte por elemento (GPUs mais recentes apenas, H100+)

Escalonamento de Contexto (Context Scaling)

A memória de KV cache escala linearmente com o tamanho do contexto, tornando cenários de contexto longo extremamente intensivos em memória.

Exemplos de escalonamento (modelo 7B, FP16):

Contexto

KV Cache

VRAM Total

4K tokens

~2.1 GB

~18 GB

8K tokens

~4.2 GB

~20 GB

16K tokens

~8.4 GB

~24 GB

32K tokens

~16.8 GB

~33 GB

128K tokens

~67.2 GB

~83 GB

Implicações práticas:

  • 4K → 8K: +2.1 GB (gerenciável)

  • 8K → 32K: +12.6 GB (pode exceder limites de GPUs consumer)

  • Modelos de contexto longo: Tipicamente requer multi-GPU ou quantização

A ferramenta exibe KV cache projetado para contextos estendidos (16K, 32K, 128K) para ajudar no planejamento de cenários que requerem janelas de contexto maiores.

Termos Adicionais

Batch Size

Número de sequências processadas simultaneamente. A memória escala linearmente com o batch size. Esta ferramenta assume batch_size=1. Serving em produção com batch_size>8 requer 2-10x mais VRAM.

Tensor Parallelismo

Divisão de pesos do modelo através de múltiplas GPUs. Cada GPU armazena uma porção de cada camada. Permite rodar modelos muito grandes para uma única GPU, mas requer interconexões NVLink de alta velocidade.

Pipeline Parallelismo

Divisão de camadas do modelo através de múltiplas GPUs. Cada GPU armazena camadas completas consecutivas. Menor overhead de comunicação que tensor parallelismo mas introduz pipeline bubbles.

Flash Attention

Um algoritmo de atenção que reduz o uso de memória materializando a matriz de atenção em blocos em vez de tudo de uma vez. Proporciona redução de 2-4x na memória de ativações durante treinamento, mas impacto limitado no VRAM de inferência (que é dominado por pesos e KV cache).

Quantização (AWQ, GPTQ, NF4)

Métodos alternativos de quantização com diferentes trade-offs:

  • AWQ (Activation-aware Weight Quantization): Otimiza para distribuição de ativações, melhor desempenho em INT4

  • GPTQ: Quantização pós-treinamento, boa compressão mas pode requerer calibração

  • NF4 (4-bit NormalFloat): Quantização desenhada para pesos normalmente distribuídos, usado em QLoRA

ACT (Activation Checkpointing)

Trocando computação por memória recomputando ativações durante o backward pass. Reduz memória durante treinamento mas impacto mínimo no VRAM de inferência.

Mixture of Experts (MoE)

Modelos onde apenas um subconjunto de parâmetros (experts) são ativados por token. Modelos MoE como Mixtral 8x7B têm 47B parâmetros totais mas usam apenas ~13B por forward pass, reduzindo requisitos de memória ativa.

RoPE Scaling (Rotary Position Embedding)

Técnicas para estender o tamanho do contexto além dos limites de treinamento: * Interpolação linear: Extrapola posições suavemente * YaRN (Yet another RoPE extensioN): Interpolação NTK-aware * NTK Dinâmico: Ajusta interpolação baseado na posição

Estes afetam a qualidade do modelo mas não o cálculo de VRAM diretamente.