- Aprovechando la opción
--cpu-moe de llama-cpp, las capas de expertos MOE se procesan en la CPU y solo las capas de atención se descargan a la GPU, logrando un rendimiento rápido de prefill con 5~8 GB de VRAM
- En la GPU solo residen los parámetros no expertos, como caché KV, pesos y activaciones de Attention, tablas de enrutamiento, LayerNorm, etc., por lo que el uso de memoria es bajo
- Incluso con una GPU del nivel de una RTX 3060Ti y 64 GB~96 GB de RAM del sistema, es posible ejecutar con soltura el modelo 120B, y el mejor rendimiento se obtiene con GPUs con soporte BF16 (RTX 3000+)
- Con 5 GB de VRAM registró un rendimiento de 8.15 ms por token (122.66 tokens/s), y con 8 GB de VRAM mejoró hasta 7.44 ms por token (134.44 tokens/s)
- La arquitectura 120B está diseñada para hardware de consumo, por lo que puede ejecutarse a alta velocidad incluso en entornos con recursos de GPU limitados
Estructura de CPU-MOE y offloading a GPU
- Con la opción
--cpu-moe, las capas de expertos (MOE) se procesan por completo en la CPU
- Ejemplo:
--n-cpu-moe 36 → los 36 bloques MOE se ejecutan completamente en CPU
- Si hace falta, se puede mover parte del MOE a la GPU para ajustar el rendimiento
- En la GPU solo se mantienen los siguientes elementos para ahorrar VRAM
- Caché KV (secuencia)
- Pesos y activaciones de Attention
- Tablas de enrutamiento
- LayerNorm y otros parámetros no expertos
- Como los pesos MOE no residen en la GPU, no existe la carga de los grandes parámetros MLP
Requisitos de memoria y hardware
- GPU: 5~8 GB de VRAM son suficientes (por ejemplo, RTX 3060Ti)
- La GPU ofrece el mejor resultado si soporta BF16 (serie RTX 3000 o superior)
- RAM del sistema: mínimo 64 GB, idealmente 96 GB
- Aprovechando
mmap de Linux, aunque el modelo completo no quepa en memoria, las capas de expertos “calientes” se mantienen cargadas
Métricas de rendimiento
Entorno con 5 GB de VRAM
- Procesamiento del prompt: 8.15 ms/token (122.66 tokens/s)
- Inferencia: 55.44 ms/token (18.04 tokens/s)
Entorno con 8 GB de VRAM (--n-cpu-moe 36, el resto en GPU)
- Procesamiento del prompt: 7.44 ms/token (134.44 tokens/s)
- Inferencia: 39.03 ms/token (25.62 tokens/s)
Entorno con 22 GB de VRAM (parte del MOE en GPU)
- Procesamiento del prompt: 6.13 ms/token (163.01 tokens/s)
- Inferencia: 32.45 ms/token (30.82 tokens/s)
Conclusión
- El diseño de GPT-OSS-120B está optimizado para ejecutar modelos de gran escala a alta velocidad incluso en hardware de consumo
- Gracias a la estructura CPU-MOE, que reduce el uso de VRAM sin sacrificar velocidad, resulta especialmente adecuado para entornos con recursos de GPU limitados
Preguntas clave y respuestas
P1. ¿Cuánta VRAM se usa realmente con esta configuración?
- Autor original: alrededor de 5 GB de VRAM cuando todo el MOE se ejecuta en CPU, subiendo solo las capas de atención a la GPU
- Explicación adicional: en la GPU solo residen la caché KV, los pesos y activaciones de Attention, las tablas de enrutamiento y LayerNorm
P2. ¿Cuál es la RAM mínima necesaria?
- Autor original: mínimo 64 GB, idealmente se recomiendan 96 GB
- Motivo:
mmap de Linux mantiene en memoria las capas de expertos “calientes”, permitiendo acceso rápido sin cargar el modelo completo
P3. ¿Mover algunas capas MOE a la GPU acelera mucho el rendimiento?
- Autor original: puede acelerar un poco, pero no hay una diferencia grande
- Ejemplo:
- Todo el MOE en CPU: prompt 134 tokens/s, inferencia 25 tokens/s
- 8 MOE en GPU: prompt 163 tokens/s, inferencia 30 tokens/s
- El uso de VRAM aumenta a 22 GB
P4. ¿Qué GPU es adecuada?
- Autor original: con una RTX 3060Ti o superior es suficiente; se recomienda soporte BF16 (RTX 3000+)
- Motivo: todas las capas fuera del MOE funcionan en BF16
P5. ¿Cómo se configura el comando?
Aún no hay comentarios.