- Usando a opção
--cpu-moe do llama-cpp, é possível processar as camadas de especialistas MOE na CPU e fazer offload apenas das camadas de attention para a GPU, alcançando desempenho rápido de prefill com 5~8GB de VRAM
- Na GPU ficam residentes apenas os cache KV, pesos e ativações de Attention, tabela de roteamento, LayerNorm etc., mantendo baixo o uso de memória
- Mesmo com uma GPU no nível de uma RTX 3060Ti e 64GB~96GB de RAM do sistema, é possível rodar o modelo 120B com facilidade, com melhor desempenho em GPUs com suporte a BF16 (RTX 3000+)
- Com 5GB de VRAM, registrou 8,15ms por token (122,66 tokens/segundo), e com 8GB de VRAM melhorou para 7,44ms (134,44 tokens/segundo)
- A arquitetura 120B foi projetada para hardware de consumo, permitindo execução em alta velocidade mesmo em ambientes com poucos recursos de GPU
Estrutura de CPU-MOE e offloading para GPU
- A opção
--cpu-moe processa todas as camadas de especialistas (MOE) na CPU
- Exemplo:
--n-cpu-moe 36 → executa todos os 36 blocos MOE na CPU
- Se necessário, é possível mover apenas parte do MOE para a GPU para ajustar o desempenho
- Para economizar VRAM, apenas os itens abaixo ficam residentes na GPU
- cache KV (sequência)
- pesos e ativações de Attention
- tabela de roteamento
- LayerNorm e outros parâmetros não especialistas
- Como os pesos MOE não ficam residentes na GPU, não há o peso dos grandes parâmetros de MLP
Memória e requisitos de hardware
- GPU: 5~8GB de VRAM são suficientes (ex.: RTX 3060Ti)
- O ideal é que a GPU tenha suporte a BF16 (série RTX 3000 ou superior)
- RAM do sistema: mínimo de 64GB, idealmente 96GB
- Usando
mmap no Linux, as camadas de especialistas “quentes” podem permanecer na memória mesmo que o modelo inteiro não caiba nela
Números de desempenho
Ambiente com 5GB de VRAM
- Processamento de prompt: 8,15ms/token (122,66 tokens/segundo)
- Inferência: 55,44ms/token (18,04 tokens/segundo)
Ambiente com 8GB de VRAM (--n-cpu-moe 36, restante na GPU)
- Processamento de prompt: 7,44ms/token (134,44 tokens/segundo)
- Inferência: 39,03ms/token (25,62 tokens/segundo)
Ambiente com 22GB de VRAM (parte do MOE na GPU)
- Processamento de prompt: 6,13ms/token (163,01 tokens/segundo)
- Inferência: 32,45ms/token (30,82 tokens/segundo)
Conclusão
- O design do GPT-OSS-120B foi otimizado para executar modelos grandes em alta velocidade até em hardware de consumo
- Graças à estrutura CPU-MOE, que reduz o uso de VRAM sem perder velocidade, ele é especialmente adequado para ambientes com recursos de GPU limitados
Principais perguntas e respostas
P1. Qual é o uso real de VRAM nessa configuração?
- Autor original: cerca de 5GB de VRAM ao executar todo o MOE na CPU, com apenas as camadas de attention na GPU
- Explicação adicional: na GPU ficam apenas cache KV, pesos e ativações de Attention, tabela de roteamento e LayerNorm
P2. Qual é o mínimo de RAM necessário?
- Autor original: mínimo de 64GB, com recomendação ideal de 96GB
- Motivo: o
mmap do Linux mantém na memória as camadas de especialistas “quentes”, permitindo acesso rápido mesmo sem carregar o modelo inteiro
P3. Mover parte das camadas MOE para a GPU acelera muito?
- Autor original: pode ficar um pouco mais rápido, mas sem grande diferença
- Exemplo:
- Todo o MOE na CPU: prompt 134 tokens/segundo, inferência 25 tokens/segundo
- 8 camadas MOE na GPU: prompt 163 tokens/segundo, inferência 30 tokens/segundo
- O uso de VRAM sobe para 22GB
P4. Qual GPU é adequada?
- Autor original: uma RTX 3060Ti ou superior já é suficiente; recomenda-se suporte a BF16 (RTX 3000+)
- Motivo: todas as camadas fora do MOE operam em BF16
P5. Como fica a configuração do comando?
Ainda não há comentários.