FlashMLA: optimización de los núcleos de descodificación MLA para las GPU Hopper (Día 1 de la Semana del Código Abierto de DeepSeek)
Últimos recursos sobre IAPublicado hace 6 meses Círculo de intercambio de inteligencia artificial 11.2K 00
Introducción general
FlashMLA es un programa desarrollado por la DeepSeek AI ha desarrollado un eficaz kernel de descodificación MLA (Multi-head Latent Attention) optimizado para las GPU de arquitectura Hopper de NVIDIA, diseñado para mejorar el rendimiento del procesamiento de secuencias de longitud variable. El proyecto se ha publicado en código abierto en GitHub y está a disposición de los desarrolladores de forma gratuita. Admite cálculo de precisión BF16 y caché KV paginada (tamaño de bloque 64), y ofrece un buen rendimiento en el H800 SXM5, con hasta 3000 GB/s de ancho de banda en configuraciones de uso intensivo de memoria y hasta 580 TFLOPS en configuraciones de uso intensivo de cálculo. FlashMLA se inspira en FlashAttention 2&3 y el proyecto Cutlass, y es apto para entornos de producción desde el primer momento. DeepSeek AI ha demostrado su innovación en tecnología de IA a través de este proyecto de código abierto, que ha atraído mucha atención.

Lista de funciones
- Decodificación MLA eficienteOptimizado para las GPU Hopper para acelerar significativamente el procesamiento de secuencias de longitud variable.
- Admite la precisión BF16Utiliza operaciones de coma flotante de media precisión para mejorar la eficiencia computacional manteniendo la precisión.
- Caché KV de paginaciónEl mecanismo de paginación con un tamaño de bloque de 64 se utiliza para gestionar eficazmente la memoria y mejorar el rendimiento de la inferencia.
- Alto rendimientoGPU H800 : Proporciona hasta 3000 GB/s de ancho de banda de memoria y 580 TFLOPS de potencia de cálculo en la GPU H800.
- código abiertoSe proporciona el código fuente completo para que los desarrolladores puedan realizar modificaciones e integraciones personalizadas.
Utilizar la ayuda
Proceso de instalación
FlashMLA es un proyecto de código abierto basado en GitHub , antes de utilizarlo es necesario asegurarse de que el entorno cumple los requisitos y completar la instalación . Aquí están los pasos detallados:
1. Preparación medioambiental
- sistema operativoSoporte para sistemas Linux (se recomienda Ubuntu 20.04 o superior).
- requisitos de hardware: Requiere una GPU con arquitectura Hopper de NVIDIA (como la H800 SXM5).
- dependencia del software::
- CUDA 12.6 o superior (consulta las instrucciones de instalación en el sitio web de NVIDIA).
- PyTorch 2.0 o superior (recomendado mediante
pip install torch
(Instalación). - Python 3.8 o superior.
- Herramientas de inspecciónAsegúrate de que Git está instalado para descargar código de GitHub.
2. Descargar el código fuente
- Abra un terminal e introduzca el siguiente comando para clonar el repositorio FlashMLA:
git clone https://github.com/deepseek-ai/FlashMLA.git
- Vaya al catálogo de proyectos:
cd FlashMLA
3. Instalación de dependencias
El proyecto depende de PyTorch y CUDA, que pueden instalarse con los siguientes comandos:
pip install -r requirements.txt
En caso contrario requirements.txt
es sencillo asegurarse de que PyTorch está instalado:
pip install torch torchvision
Compruebe que CUDA está disponible:
python -c "import torch; print(torch.cuda.is_available())"
exportaciones True
Indica que la configuración del entorno se ha realizado correctamente.
4. Compilación y pruebas
FlashMLA proporciona plug-ins CUDA precompilados, pero asegúrese de que coinciden con su versión CUDA local:
- Vaya al directorio fuente y ejecute el script de compilación (si existe):
python setup.py install
- Compruebe que la instalación es correcta y ejecute el código de ejemplo:
python example.py
Si no se informa de ningún error, la instalación se ha completado.
Cómo utilizarlo
La característica principal de FlashMLA es proporcionar un soporte eficiente de decodificación MLA para tareas de inferencia de modelos de IA. Estos son los pasos:
Función 1: Cargar y ejecutar FlashMLA
- Módulo de importación::
Introducción de las funciones básicas de FlashMLA en scripts de Python:from flash_mla import get_mla_metadata, flash_mla_with_kvcache
- Preparación de la introducción de datos::
cache_seqlens
Define la longitud de secuencia de la caché KV.q_i
: Tensor de consulta.kvcache_i
Datos en caché KV.block_table
Tabla de bloques para la caché de paginación.
- Obtener metadatos::
tile_scheduler_metadata, num_splits = get_mla_metadata(cache_seqlens, s_q * h_q // h_kv, h_kv)
- decodificación en marcha::
o_i, lse_i = flash_mla_with_kvcache(q_i, kvcache_i, block_table, cache_seqlens, dv, tile_scheduler_metadata, num_splits, causal=True)
exportaciones
o_i
es el resultado de la descodificación.lse_i
es el valor de la suma logarítmica.
Función 2: Optimizar el tratamiento de secuencias de longitud variable
- tomaFlashMLA: cuando se trata de secuencias de entrada de longitud dinámica, FlashMLA reduce la huella de memoria paginando la caché KV.
- plataforma::
- Configurar los parámetros de paginación: el tamaño de bloque está fijado en 64 y puede ajustarse mediante el ajuste de los parámetros
cache_seqlens
Controla la longitud de la secuencia. - Especificar en tiempo de ejecución
causal=True
(c) Garantizar que el mecanismo de atención causal está en funcionamiento.
- Configurar los parámetros de paginación: el tamaño de bloque está fijado en 64 y puede ajustarse mediante el ajuste de los parámetros
- efecto3000 GB/s de ancho de banda de memoria en el H800 para tareas de inferencia a gran escala.
Función 3: Pruebas de rendimiento
- Métodos de ensayo::
- Edite el script de ejemplo (por ejemplo
example.py
), aumentando el tamaño de los datos de entrada. - Utilice el siguiente código para registrar el rendimiento:
import time start = time.time() # 运行解码代码 o_i, lse_i = flash_mla_with_kvcache(...) print(f"耗时: {time.time() - start} 秒")
- Edite el script de ejemplo (por ejemplo
- Resultados esperadosCasi 3000 GB/s para tareas intensivas de memoria y 580 TFLOPS para tareas intensivas de cálculo.
advertencia
- compatibilidad de hardware: Sólo se admiten GPUs Hopper, se recomienda H800 o equivalente.
- Consejos de depuración: Si encuentras errores de CUDA, comprueba si la versión coincide o busca ayuda de la comunidad en GitHub Issues.
- entorno de producciónIntegración directa en los procesos de inferencia de modelos existentes, garantizando que los formatos de los datos de entrada sean coherentes con los requisitos de FlashMLA.
Con los pasos anteriores, los usuarios pueden empezar a utilizar FlashMLA rápidamente y disfrutar de la mejora de rendimiento que aporta su eficaz descodificación. El código completo y la documentación se encuentran en el repositorio de GitHub, y se recomienda ajustar los parámetros en función de los requisitos reales del proyecto.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...