El pruning de modelos es una técnica en el aprendizaje profundo que consiste en eliminar parámetros de una red neuronal artificial existente. El objetivo principal es reducir el tamaño de la red, medido en número de parámetros, y los recursos computacionales necesarios para ejecutarla, manteniendo la precisión en la medida de lo posible. Este proceso se compara a menudo con el poda sináptica biológica, que ocurre en los cerebros de los mamíferos durante el desarrollo, donde se eliminan conexiones neuronales no utilizadas para aumentar la eficiencia.
El pruning es una herramienta importante para desplegar modelos grandes, como los utilizados en modelos de lenguaje grandes, en dispositivos con memoria o cómputo limitado, como teléfonos inteligentes o dispositivos de borde. Estos métodos encuentran atención en muchas áreas del desarrollo de inteligencia artificial entre los principales proveedores de computación en la nube y hardware de consumo.
Tipos de pruning: estructurado y no estructurado
Los tipos más comunes de pruning son el estructurado y el no estructurado. El pruning no estructurado, también conocido como pruning de bordes o de pesos, se centra en establecer pesos individuales a cero. La decisión de eliminar un peso se basa en una métrica de su importancia; más comúnmente la magnitud del peso o una combinación de información de peso y gradiente. Un algoritmo básico a menudo comienza evaluando la importancia de cada parámetro, clasificándolos y eliminando los menos importantes. Esto se puede hacer localmente en una sola capa o globalmente en toda la red. Por el contrario, el pruning estructurado elimina componentes más grandes, conocidos como nodos (neuronas), en una red neuronal. Un proceso similar determina neuronas significativas o irrelevantes y las descarta por completo.
Cuándo aplicar el pruning
El pruning se puede aplicar en diferentes etapas de la vida de un modelo: antes del entrenamiento, durante el entrenamiento o después del entrenamiento. Si se realiza después del entrenamiento, el modelo generalmente se ajusta finamente con épocas adicionales para recuperar parte del rendimiento perdido. El pruning antes del entrenamiento, a veces llamado inicialización dispersa, tiene como objetivo encontrar una estructura de subred que pueda entrenarse desde cero, lo que a veces puede reducir inesperadamente el tiempo de entrenamiento. El pruning durante el entrenamiento emplea mecanismos dinámicos que adaptan la topología de la red a medida que el modelo aprende. Cada enfoque conlleva un equilibrio entre la precisión final, el costo computacional del reentrenamiento y la velocidad inmediatamente después del pruning.
Métricas de importancia
Cómo identificar parámetros o neuronas a descartar es una cuestión clave. Las formas comunes incluyen medir la magnitud del peso, que asume que los valores de peso pequeños contribuyen menos a la operación de salida del modelo, o mediante una combinación del valor del peso y el gradiente de una pasada de entrenamiento, para aproximar la función de pérdida. Los gradientes combinados con los pesos dan lugar a una clase bien conocida de métodos de segundo orden que pueden usar aproximaciones del Hessiano. Otros métodos miden la activación recibida por una neurona específica a través de un conjunto de datos, o el impacto de establecer la salida de una neurona a cero.
Relación con la cuantización y destilación de modelos
El pruning se utiliza a menudo junto con otros métodos de compresión. Mientras que el pruning reduce el número de parámetros no nulos, la cuantización reduce el número de bits por parámetro - por ejemplo, almacenar un peso como un entero de 8 bits en lugar de un flotante de 32 bits. Técnicas complementarias están dirigidas a mejorar la eficiencia de inferencia. Una forma relacionada de comprimir un modelo es la destilación de conocimiento, donde un modelo más pequeño y compacto se entrena para imitar las salidas del modelo original, logrando alta calidad sin necesariamente eliminar parámetros. El pruning generalmente apunta a una arquitectura dada mientras mantiene la misma estructura de arquitectura, mientras que la destilación efectivamente crea una nueva estructura de modelo (a menudo más pequeña).
Enfoque moderno: investigación y práctica del pruning post-entrenamiento
La investigación actual sobre pruning es muy activa, no solo mejorando el rendimiento computacional, sino también explicando capacidades y modelos de lenguaje podados. El pruning no estructurado a menudo es difícil de acelerar con kernels estándar de álgebra lineal optimizados para GPU y CPU porque los resultados de multiplicación de tensores dispersos son menos eficientes que las multiplicaciones densas. Por el contrario, el pruning estructurado puede en teoría conducir a mayores aceleraciones porque elimina elementos completos de filas de matrices que se pueden eliminar de las operaciones de multiplicación de matrices, mientras que la disposición de pesos vuelve a ser densa. La práctica actual incluye hardware especializado como algunos aceleradores. Trabajos recientes, especialmente sobre los métodos de la comunidad de investigación de aprendizaje profundo en el Stanford AI Lab, MIT y otros grupos académicos, a menudo publican resultados sobre hasta qué punto se puede fusionar la memoria subyacente y la compensación de calidad perdida, y si ciertos LLM pueden volverse dispersos con degradaciones mínimas sustanciales de calidad.
Soporte de hardware y software
El pruning no es solo una técnica experimental - su uso masivo en hardware de consumo. Dado que los modelos grandes a menudo consumen memoria y energía significativas para ejecutarse, los principales fabricantes de chips y empresas han integrado activamente esquemas dispersos no estructurales y específicos de hardware para aprovechar la dispersión. Por ejemplo, NVIDIA (no en la lista) y AMD diseñan GPUs y específicamente sus recortes que introducen formas de omitir los valores cero en bloques de cómputo cuadrados, acelerando así las multiplicaciones de matrices dispersas. Los servicios en la nube proporcionan aceleradores de IA dedicados, como AWS Trainium, un ASIC personalizado de AWS que ayuda a habilitar el entrenamiento y el despliegue a escala. Cada plataforma puede soportar diferentes tipos de patrones de dispersión, a veces requiriendo "dispersión por bloques" donde los ceros deben insertarse en bloques estructurados para obtener un beneficio real de hardware. Empresas de dispositivos pequeños como Samsung Electronics, Apple y Qualcomm trabajan con formas a nivel de sistema para tener motores de inferencia en el dispositivo más eficientes. Además, las pilas de software de los principales proveedores, incluidos Microsoft Azure y Google Cloud, integran el pruning para acelerar el servicio de interfaces LLM, ahorrando costos operativos.
Contexto histórico y de investigación global
El pruning de redes neuronales es una idea que ha existido durante décadas, incluso desde los años 80 cuando investigadores como Ernest LeCun ocasionalmente también trabajaron en la estimulación de Daño Cerebral Óptimo. La práctica se basa en un paralelo con el desarrollo neuronal biológico - la poda sináptica en los cerebros de niños y adultos humanos. Hoy en día, los profesionales modernos del aprendizaje profundo aceptan que los modelos típicos están altamente sobreparametrizados. Por ejemplo, un transformador moderno estándar podría reducir fácilmente tantos de los parámetros activos (pesos) en una solución final que permanecen redundantes durante el entrenamiento, basándose en heurísticas de energía, sin cambiar casi ningún comportamiento de salida superior a nivel de muestra. Tales ideas relacionan eliminaciones eléctricas con el tema general de especialistas en conservación de entrenamiento de grupos académicos como los laboratorios de investigación de IA de Berkeley y la Universidad de Toronto continúan estudiando los límites fundamentales del pruning, combinando. El pruning también puede aprovechar simultáneamente la dispersión práctica con reentrenamiento programado de manera óptima y aprendizaje continuo.
Marco y ecosistema relacionados
Muchos marcos de aprendizaje automático proporcionan soporte para pruning. PyTorch cuenta con funcionalidad dispersa amortizada a través de `torch.nn.utils.prune`. TensorFlow (marco de Google) incluye múltiples bibliotecas de pruning. Algunas API de flujo de trabajo exponen directamente varias herramientas de alto nivel centradas en IA. Kubernetes se ve a menudo junto con paquetes de optimización de modelos para hacer el despliegue eficiente cuando el pruning más la cuantización se aplican con antelación. Generalmente, los profesionales deciden una relación selectiva (nivel de dispersión), definen si inducir parches después, eligen la función de pérdida y el horario basado en velocidades de inferencia posteriores específicas para validar en entornos agresivos con memoria limitada y cómputo restringido.
Potencial teórico futuro
La interacción entre pruning, cuantización y técnicas de cómputo disperso es una frontera muy activa. Hay una ventana esperanzadora para chips novedosos construidos desde el inicio para manejar la dispersión, estableciendo además el entrenamiento del modelo con la restricción y luego desplegándolo. Los patrones de acceso a memoria dispersa pueden imponerse en buffers de memoria y cachés, reduciendo significativamente la energía por consulta de inferencia.
Véase también
- Destilación de conocimiento
- Darwinismo neuronal