Técnicas de dispersión para una aceleración 100X en la inferencia de modelos de lenguaje grandes. Descubra cómo los compiladores dispersos revolucionan la inferencia de LLM, desbloqueando una eficiencia y velocidad sin precedentes. En la discusión anterior sobre “Cómo los LLM aceleran la inferencia mediante la dispersión”, exploramos la segunda parte, “Acelerando la inferencia con dispersión de activación”. Haga clic aquí para revisar la primera parte, “Cómo realizan poda los LLM”. En esta entrega, profundizaremos en la tercera parte, “El impacto de los compiladores dispersos en la inferencia de LLM”.
La necesidad de compiladores
Desarrollos recientes indican que los cálculos de aprendizaje profundo son cada vez más dispersos, es decir, las operaciones se realizan sobre tensores con múltiples ceros. Además de los pesos dispersos del modelo (generalmente estáticos y conocidos de antemano), se han descubierto más patrones dispersos que dependen de la entrada y solo se conocen en tiempo de ejecución, a saber, la dispersión dinámica. Por ejemplo, los modelos de lenguaje grandes (LLM) como GPT y OPT presentan varios tipos de dispersión dinámica. En primer lugar, los modelos Transformer (y otros tipos de modelos) muestran una dispersión dinámica inherente en sus entradas, activaciones y gradientes. En los gráficos de activación, solo unos pocos elementos son distintos de cero (por ejemplo, 3.0% para T5-Base, 6.3% para ViT-B/16). En segundo lugar, aprovechar la dispersión dinámica para escalar aún más los modelos DNN. La mayoría de los modelos existentes con más de un billón de parámetros adoptan una arquitectura de mezcla de expertos (MoE), que activa expertos dinámicamente basándose en entradas dispersas. Además, el entrenamiento con dispersión dinámica poda dinámicamente las conexiones menos importantes del modelo durante el entrenamiento, atrayendo cada vez más atención por su eficiencia computacional superior. La dispersión dinámica, donde los patrones dispersos se desconocen antes de la ejecución, plantea desafíos significativos para el aprendizaje profundo. Las soluciones avanzadas de aprendizaje profundo conscientes de la dispersión se limitan a patrones dispersos estáticos predefinidos debido a la alta sobrecarga asociada con el preprocesamiento. La ejecución eficiente de cálculos dinámicamente dispersos a menudo enfrenta inconsistencia entre las configuraciones de bloques de tensores amigables con GPU para una ejecución eficiente y la minimización de la cobertura desperdiciada (valores distintos de cero en tensores) en formas de bloques conscientes de dispersión. La dispersión en LLM requiere el uso de operadores dispersos, y las bibliotecas tradicionales como cuSPARSE o Sputnik, debido a sus diseños genéricos en lugar de óptimos, implican ya sea soportar solo kernels dispersos compilados estáticamente o requerir la conversión dinámica de matrices dispersas a formato denso, lo que resulta en una sobrecarga de rendimiento significativa en escenarios de dispersión dinámica.
Comparación de compiladores principales
Los principales compiladores de cómputo disperso actuales incluyen cuSPARSE, Sputnik, OpenAI Block Sparse, SparTA y PIT, según se referencia en [11]. A continuación se muestra una tabla comparativa de datos de aceleración: Escenario: Multiplicación de matrices de tamaño 4096 × 4096 × 4096 Métrica: Latencia (ms)
Vale la pena mencionar que PIT supera la optimización dispersa de última generación, logrando aceleraciones de hasta 88.7x, 5.8x, 17.5x y 5.7x en comparación con cuSPARSE, Sputnik, OpenAI Block Sparse y SparTA, respectivamente.
El impacto de los compiladores en la inferencia de LLM
OPT
El experimento [11] evalúa PIT utilizando el conjunto de datos Alpaca en dos versiones del modelo OPT: OPT13B y 30B, en ocho GPU V100–32GB. PIT aplica dos optimizaciones de dispersión dinámica en OPT: (1) eliminar la sobrecarga de relleno para oraciones de diferentes longitudes en el mismo lote; (2) aprovechar la dispersión de grano fino (hasta 99%) creada por las activaciones ReLU en las capas FFN. El tamaño del lote se establece en 32, y PyTorch-S utiliza Triton como backend.
Latencia extremo a extremo por lote y huellas de memoria de OPT El rendimiento de PIT supera a PyTorch, PyTorchS y DeepSpeed en 2.1x ∼ 2.3x, 2.5x ∼ 3.0x y 2.0x ∼ 2.2x, respectivamente. Evitar el relleno en secuencias dinámicas contribuye a que PIT logre una aceleración de 1.6x ∼ 1.7x en relación con la línea base. Al aprovechar adicionalmente la dispersión dinámica en las activaciones ReLU de las capas FFN, PIT mejora aún más el rendimiento en 1.3x ∼ 1.4x. En comparación con PyTorch-S que utiliza kernels de bloques dispersos de Triton con un tamaño de bloque de 32x32, PIT emplea microbloques más pequeños (es decir, 1x32) y cálculos eficientes con SRead y SWrite, evitando el desperdicio computacional. Además, PyTorch-S también se ve afectado por la sobrecarga de conversión de formato disperso, por lo que presenta la latencia más alta. En términos de consumo de memoria, DeepSpeed tiene el menor uso de memoria, ya que fusiona toda la capa del codificador en un solo operador, ahorrando memoria de activación.
MOE
En experimentos [11] sobre SwinMoE, un modelo de visión grande con estructura de codificador y MoE, se evaluó el rendimiento de PIT en A100 usando precisión float16. Para los transformers visuales, las imágenes de entrada dentro del mismo lote se reescalaron a la misma resolución para garantizar una longitud de secuencia consistente. En nuestros experimentos, comparamos la latencia de inferencia extremo a extremo y el uso de memoria de Swin-MoE con diferentes tamaños de lote y cantidades de expertos. MegaBlocks supera a otras líneas base al ejecutar todos los expertos simultáneamente, utilizando eficazmente kernels dispersos para evitar el desperdicio computacional. PIT mejora aún más el rendimiento al admitir la reordenación de datos en el movimiento de datos a través de jerarquías de memoria en comparación con MegaBlocks.
Latencia extremo a extremo y huellas de memoria de SwinMoE en A100 En comparación con PyTorch, PyTorchS, Tutel, DeepSpeed y MegaBlocks, PIT logró aceleraciones de 1.5x ∼ 6.3x, 1.5x ∼ 2.9x, 1.1x ∼ 1.8x, 1.2x ∼ 1.6x y 1.1x ∼ 1.4x, respectivamente. La mejora de rendimiento de PIT en Swin-MoE es menor que en Switch Transformer, ya que Swin-MoE tiene significativamente menos expertos que Switch Transformer. Por lo tanto, cuando el número de expertos aumenta de 8 a 32, la capa MoE contribuye solo del 23.6% al 61.2% de la latencia extremo a extremo. Al comparar la latencia de la capa MoE por sí sola, PIT es aproximadamente 1.2x ∼ 1.7x más rápido que MegaBlocks. Aquí están los datos comparativos compilados para PIT:
Finalmente, discutamos el soporte de hardware necesario para la aceleración.
GPU
NVIDIA A100
La A100 utiliza la nueva arquitectura Ampere, con hasta 6912 núcleos CUDA y 40 GB de memoria HBM2 de alta velocidad. También es compatible con la tecnología NVLink de segunda generación, que permite una comunicación rápida entre GPU y acelera las velocidades de entrenamiento para modelos grandes. La A100 introduce potentes nuevos Tensor Cores de tercera generación, junto con soporte integral para tipos de datos de DL y HPC, así como nuevas capacidades dispersas para duplicar aún más el rendimiento. Las operaciones TF32 Tensor Core en la A100 proporcionan una ruta directa para acelerar datos de entrada/salida FP32 en marcos DL y HPC, funcionando 10 veces más rápido que las operaciones FP32 FMA de V100, o 20 veces más rápido en el caso de dispersión. Para DL de precisión mixta FP16/FP32, el rendimiento de la A100 es 2.5 veces el de V100, aumentando a 5 veces con dispersión. Al ejecutar modelos de IA con el marco PyTorch, en comparación con el chip V100 de generación anterior, la A100 demuestra una mejora de rendimiento de 6x en el entrenamiento del modelo BERT y una mejora de 7x en la inferencia de BERT.
GPU Intel Max Series
Según la referencia [18], implementaciones recientes de dos operaciones de matrices dispersas en la GPU NVIDIA V100 han mostrado ganancias de rendimiento de hasta 10 veces en comparación con la implementación de referencia en V100.
Conclusión
En resumen, aquí hay tres conclusiones sobre la aceleración de la inferencia de LLM mediante dispersión:
- La dispersión de pesos (50%), la dispersión de activación (90%) y la dispersión de MoE (por ejemplo, Mistral 8x7B con un 75% de dispersión dinámica) son factores ortogonales (los efectos pueden ser acumulativos, pero el rendimiento del modelo puede verse afectado). Combinado con el efecto de aceleración de 2–3x del compilador PIT en modelos dispersos, en comparación con los marcos de inferencia actuales principales (TGI/vLLM, etc.), hay un límite de aceleración teórica de 5 a 30 veces.
- La latencia es el enfoque principal de las técnicas de dispersión actuales (la dispersión tiene cierta efectividad; cuanto mayor es el tamaño del lote, peor es el efecto de dispersión). La dirección de rendimiento será una nueva dirección de optimización porque la dispersión de activación exhibe una cierta distribución de ley de potencia, ofreciendo un potencial de optimización de ingeniería significativo.
- Convertir activaciones no ReLU a activaciones ReLU en LLM tiene costos relativamente bajos (alrededor del 3% del costo de ajuste fino; la calidad de los datos es relativamente importante). Además, entrenar predictores en DejaVu tiene costos más bajos (entrenamiento rápido e independiente de los datos). Combinado con la reducción de costos que trae el aumento en la velocidad de inferencia, esta es una iniciativa de alto retorno de inversión y es viable comercialmente.
Artículo de referencia
[11] Pit: Optimization of dynamic sparse deep learning models via permutation invariant transformation [18]Performance Optimization of Deep Learning Sparse Matrix Kernels on Intel Max Series GPU
novita.ai proporciona una API de Stable Diffusion y cientos de las API de generación de imágenes AI más rápidas y económicas para 10,000 modelos.🎯 Generación más rápida en solo 2s, pago por uso, desde $0.0015 por imagen estándar, puede agregar sus propios modelos y evitar el mantenimiento de GPU. Gratis para compartir extensiones de código abierto.
Lectura recomendada Unveiling LLM-Pruner Techniques: Doubling Inference Speed
