Después de obtener tu primer resultado, es fácil querer probar modelos más grandes. Puedes pasar de 0.5B a 7B, pero el equipo original puede que ya no sea suficiente.
Al seleccionar recursos, primero distingue entre algunas cosas. CPU y GPU se encargan del cálculo, la memoria y la memoria de video almacenan los datos durante la ejecución, y el disco guarda los archivos del modelo. El hecho de que un modelo se descargue correctamente solo significa que el disco tiene suficiente espacio — para que pueda ejecutarse sin problemas, también depende de la memoria, la memoria de video y la capacidad de cálculo. El mismo modelo, dependiendo de la precisión con la que se cargue, la longitud de la entrada y cuántas solicitudes se procesen simultáneamente, afectará el uso de recursos. La inferencia y el entrenamiento también tienen requisitos diferentes.
Primero veamos en qué es bueno cada uno (CPU y GPU), luego estimemos cuánto espacio ocuparán los parámetros del modelo, para preparar la elección de una computadora portátil o una instancia en la nube.
CPU y GPU difieren significativamente en sus enfoques de cómputo.
CPU está diseñado para cómputo general, con cada núcleo teniendo capacidades de control y cómputo relativamente completas. Puede tomar decisiones, saltar y programar tareas según el proceso de ejecución del programa, manejando flexiblemente diferentes tipos de tareas de cómputo.
GPU utiliza una arquitectura de cómputo paralelo, conteniendo un gran número de unidades de cómputo que pueden ejecutar una gran cantidad de tareas de cómputo simultáneamente. Está adaptado para manejar tareas con grandes escalas de datos y alta repetitividad de cálculo.
La velocidad de procesamiento de CPU y GPU depende del tipo de tarea y la escala de cómputo.
Para escenarios que involucran una gran cantidad de juicio lógico, control de programas y programación de tareas, CPU tiene una eficiencia de ejecución más alta. Tareas como la operación del sistema de consultas de bases de datos son adecuadas para CPU.
Para tareas de cómputo paralelo a gran escala, GPU puede proporcionar un mayor rendimiento de cómputo. La multiplicación de matrices y las operaciones de convolución en el aprendizaje profundo pueden dividirse en múltiples subtareas paralelas, ejecutadas simultáneamente por las unidades de cómputo de GPU, mejorando la eficiencia de cómputo general.
Sin embargo, las ventajas de GPU solo se vuelven significativas cuando la escala de las tareas de cómputo es grande. Cuando el volumen de datos es pequeño, los recursos de cómputo de GPU no pueden aprovecharse completamente, y la transferencia de datos y la programación de tareas entre CPU y GPU también generan costos adicionales. En este caso, usar CPU puede ser más eficiente.
Iniciar sesión unirse a la discusión
Los costos de CPU y GPU no solo incluyen los precios de compra del hardware, sino también el consumo de energía durante la operación, así como los costos de uso y mantenimiento posteriores.
En cuanto a la adquisición de hardware, CPU es estándar — los servidores ordinarios y las computadoras personales todos necesitan configuración de CPU. Los GPU de alto rendimiento utilizados para entrenamiento e inferencia de IA suelen ser costosos. Además del GPU en sí, también debes considerar los costos de servidores, memoria de video, almacenamiento y otro hardware de soporte.
Durante la operación, GPU tiene alto consumo de energía al realizar cómputos a gran escala. Cuantos más GPU haya en un servidor, mayor será la presión sobre el suministro eléctrico y la refrigeración, y los costos de electricidad y refrigeración de los centros de datos aumentarán significativamente.
En cuanto a uso y mantenimiento, el ecosistema de CPU es relativamente maduro, y el mantenimiento rutinario de servidores es relativamente sencillo. GPU requiere considerar la compatibilidad de controladores, marcos de cómputo y entorno de hardware. Los conflictos entre diferentes versiones pueden impedir que los modelos funcionen normalmente. Los entornos multi-GPU también involucran la comunicación de datos entre dispositivos, lo que tiene ciertos requisitos para conexiones de hardware y configuración de software.
El entrenamiento y la inferencia tienen diferentes requisitos de recursos, y los modelos de diferentes escalas y tipos también tienen diferencias significativas en recursos de cómputo. La selección de hardware debe considerar de manera integral la escala del modelo, el volumen de datos, los requisitos de rendimiento y las necesidades de recursos en ambos escenarios de entrenamiento e inferencia.
En la fase de entrenamiento del modelo, cuando la escala de datos es pequeña, CPU puede satisfacer las necesidades de entrenamiento de la mayoría de los modelos de aprendizaje automático tradicionales, como regresión lineal, regresión logística y bosques aleatorios. Algunos redes neurales ligeras también pueden usar CPU para entrenamiento, pero a medida que aumentan el volumen de datos y la complejidad de la estructura del modelo, el tiempo de entrenamiento aumentará significativamente. Si necesitas ajustar frecuentemente modelos, usar GPU puede reducir el tiempo de entrenamiento.
El entrenamiento de redes neurales a gran escala y grandes modelos de lenguaje requiere un cómputo matricial extenso, con requisitos altos de poder de cómputo y capacidad de memoria de video. Los grandes modelos de lenguaje con miles de millones de parámetros, como Qwen, necesitan depender de dispositivos de aceleración de alto rendimiento como GPU para el entrenamiento.
Los requisitos del modelo durante la inferencia difieren de los del entrenamiento. Para escenarios con escalas de parámetros más pequeñas y volúmenes de acceso más bajos, CPU puede satisfacer las necesidades de inferencia, y el uso de recursos también puede reducirse mediante métodos como la cuantificación. Para modelos grandes, servicios de alta concurrencia y escenarios que requieren respuesta rápida, GPU puede proporcionar una eficiencia de inferencia más alta.
CPU y GPU cada uno tiene escenarios aplicables, y necesitas considerar de manera integral la escala del modelo, el volumen de datos, las solicitudes concurrentes, los requisitos de rendimiento y los costos de implementación.
La evaluación de los requisitos de recursos de un modelo depende principalmente de dos indicadores: la escala de parámetros y la precisión de datos.
La escala de parámetros del modelo generalmente se expresa en B, donde 1B representa 1 mil millones de parámetros. Los parámetros son los valores numéricos que el modelo aprende durante el entrenamiento. Durante la inferencia, estos parámetros deben cargarse en memoria (CPU) o memoria de video (GPU). Cuanto mayor sea la cantidad de parámetros, más recursos ocupados.
La precisión de datos se refiere al formato numérico que utilizan los parámetros del modelo para almacenamiento y cómputo. Los formatos comunes incluyen FP32, FP16, BF16 y formatos de cuantificación como INT8 e INT4. Para la misma cantidad de parámetros, una mayor precisión de datos significa más recursos ocupados.
El espacio de almacenamiento estimado para 1B parámetros en diferentes precisiones es el siguiente:
| Precisión | Espacio por 1B parámetros (aprox.) | Usos comunes |
| FP32 (Precisión simple) | 4GB | Entrenamiento, inferencia de alta precisión |
| FP16 (Media precisión) | 2GB | Entrenamiento, inferencia |
| BF16 | 2GB | Entrenamiento, inferencia |
| INT8 | 1GB | Inferencia cuantizada |
| INT4 | 0.5GB | Inferencia cuantizada de baja precisión |
Pesos del modelo = Cantidad de parámetros × Espacio de almacenamiento por 1B parámetros en esa precisión. Para un modelo 7B con inferencia en precisión FP16, la ocupación de pesos del modelo es aproximadamente: 7 × 2GB ≈ 14GB.
Durante la inferencia del modelo, además de cargar los pesos del modelo, se necesitan recursos adicionales para KV Cache, marco de ejecución y cómputo temporal.
KV Cache se utiliza para almacenar información relacionada con Tokens que ya han sido calculados durante el proceso de generación, evitando cálculos redundantes. Su uso depende de la estructura del modelo, la longitud del contexto y el número de solicitudes simultáneas. Cuanto más largo sea el contexto, más información se debe almacenar; cuantas más solicitudes se procesen simultáneamente, más aumentará el uso de KV Cache.
Fórmula de estimación del uso de recursos de inferencia:
Memoria requerida para inferencia CPU ≈ Pesos del modelo + Overhead del framework y temporal.
Memoria de video requerida para inferencia GPU ≈ Pesos del modelo + KV Cache + Overhead del framework y temporal.
De estos, los pesos son estáticos, el overhead del framework es básicamente constante, y la variable reside completamente en KV Cache. En escenarios de secuencias largas, se debe reservar espacio para KV Cache.
Los requisitos de recursos de la fase de entrenamiento del modelo son superiores a los de la fase de inferencia. Además de almacenar los pesos del modelo, también se deben almacenar gradientes, estados del optimizador y resultados intermedios durante el entrenamiento, requiriendo más recursos. Los requisitos de recursos de entrenamiento dependen del tipo de optimizador y la estrategia de entrenamiento.
(1) Entrenamiento completo del modelo
Para el entrenamiento completo del modelo, los pesos del modelo, gradientes, estados del optimizador y activaciones deben almacenarse simultáneamente. Tomando como ejemplo el entrenamiento completo con optimizador Adam y precisión FP16, cada 1B parámetro requiere aproximadamente:
| Componente | Por 1B parámetros |
| Pesos del modelo (FP16) | 2 GB |
| Gradientes (FP16) | 2 GB |
| Estados del optimizador | 8 GB |
| Copia FP32 de pesos | 4 GB |
| Subtotal (sin activaciones) | 16 GB |
Nota: El optimizador Adam necesita guardar dos copias de estados en precisión FP32 (momento y varianza), por lo que los estados del optimizador ocupan 8GB; la copia FP32 de pesos se utiliza para la actualización de parámetros del optimizador.
La fórmula de estimación preliminar para el entrenamiento completo es:
Memoria de video requerida para entrenamiento GPU ≈ Cantidad de parámetros × 16 Byte + Overhead de activación
Memoria requerida para entrenamiento CPU ≈ Cantidad de parámetros × 16 Byte + Overhead de activación
El entrenamiento GPU está limitado por la capacidad de memoria de video, mientras que el entrenamiento CPU está limitado por la velocidad de cómputo. Por ejemplo, un modelo 7B con entrenamiento completo en FP16 en GPU requiere al menos 7B × 16 Byte ≈ 112GB de memoria de video, y el requisito real será mayor después de agregar activaciones.
(2) Ajuste eficiente de parámetros (como LoRA)
Para el ajuste de modelos grandes, los métodos de ajuste eficiente de parámetros como LoRA (Low-Rank Adaptation) son más comunes en la práctica. LoRA no actualiza todos los parámetros del modelo original durante el entrenamiento; en su lugar, congela los pesos del modelo original y solo entrena los parámetros de adaptación de bajo rango recién agregados, reduciendo significativamente los requisitos de memoria de video.
Memoria de video para entrenamiento LoRA ≈ Pesos del modelo base + Parámetros LoRA + Gradientes y estados del optimizador de parámetros LoRA + Activaciones.
De estos, los pesos del modelo base solo necesitan cargarse y no participan en actualizaciones; los parámetros agregados por LoRA representan solo el 0.1%~1% del modelo original, y sus gradientes y overhead del optimizador son casi insignificantes. La memoria de video real depende principalmente de los pesos del modelo, la longitud del contexto, el tamaño del lote y los métodos de optimización del framework de entrenamiento. El ajuste LoRA puede reducir significativamente los requisitos de memoria de video en comparación con el entrenamiento completo.
Por ejemplo, al cargar un modelo 7B con FP16, los pesos del modelo ocupan 4GB. En una sola GPU con 24GB de memoria de video, el ajuste LoRA generalmente puede ejecutarse (con ajustes apropiados del tamaño del lote y la longitud del contexto). Usar QLoRA (cuantificar el modelo base a INT4) puede reducir aún más el uso de memoria de video, permitiendo el ajuste en hardware más limitado.