Inferencia rápida de LoRA para Flux con Diffusers y PEFT
Sources: https://huggingface.co/blog/lora-fast, Hugging Face Blog
Las adaptadores LoRA ofrecen una gran personalización para modelos de todas las formas y tamaños. En generación de imágenes, pueden dotar a los modelos de diferentes estilos, personajes y mucho más. A veces, también se pueden aprovechar para reducir la latencia de inferencia. Por ello, su importancia es crucial, especialmente para personalizar y ajustar modelos. En este artículo tomamos el modelo Flux.1-Dev para generación de texto a imagen por su popularidad y adopción generalizada, y mostramos cómo optimizar su velocidad de inferencia al usar LoRAs (~2.3x). Cuenta con más de 30k adaptadores entrenados con él (según lo reportado en el Hub de Hugging Face). Por lo tanto, su importancia para la comunidad es significativa. Nota: aunque demostramos mejoras con Flux, creemos que nuestra receta es lo suficientemente genérica para aplicarse a otros modelos. Si no puedes esperar para empezar con el código, consulta el repositorio de código asociado. Al servir LoRAs, es común realizar hot-swapping (intercambiar LoRAs). Un LoRA cambia la arquitectura del modelo base. Además, las LoRAs pueden ser diferentes entre sí – cada una puede tener rangos diferentes y apuntar a distintas capas para la adaptación. Para abordar estas propiedades dinámicas de las LoRAs, debemos tomar medidas para asegurar que las optimizaciones sean robustas. Por ejemplo, podemos aplicar torch.compile a un modelo cargado con una LoRA particular para obtener aceleraciones en la inferencia. Sin embargo, en cuanto cambiamos a otra LoRA (con una configuración potencialmente diferente), encontraremos problemas de recompilación, lo que ralentiza la inferencia. También se pueden fusionar los parámetros LoRA en los parámetros base del modelo, ejecutar la compilación y desfusionar LoRA al cargar nuevas. Sin embargo, este enfoque volverá a encontrar el problema de recompilación en cada inferencia debido a cambios de arquitectura potenciales. Nuestra receta de optimización tiene en cuenta estos escenarios para ser lo más realista posible. A continuación, los componentes clave de nuestra receta de optimización: Observa que entre los mencionados, la cuantización FP8 es con pérdida pero a menudo ofrece la negociación más importante entre velocidad y memoria. Aunque probamos principalmente la receta en GPUs NVIDIA, debería funcionar en GPUs AMD también. En nuestros blogs anteriores (post 1 y post 2), ya discutimos los beneficios de usar los tres primeros componentes de nuestra receta de optimización. Aplicarlos uno a la vez implica solo unas pocas líneas de código: El procesador FA3 proviene de aquí. Los problemas surgen cuando intentamos intercambiar LoRAs en un transformador de difusión compilado (pipe.transformer) sin activar recompilación. Normalmente, cargar y descargar LoRAs requeriría recompilación, lo que anula cualquier ventaja de velocidad obtenida de la compilación. Afortunadamente, hay una forma de evitar la necesidad de recompilación. Al pasar hotswap=True, diffusers mantendrá sin cambios la arquitectura del modelo y solo cambiará los pesos del adaptador LoRA, lo cual no requiere recompilación. (Como recordatorio, la primera llamada a pipe será lenta ya que torch.compile es un compilador just-in-time. Sin embargo, las llamadas subsecuentes deberían ser significativamente más rápidas). Esto generalmente permite intercambiar LoRAs sin recompilación, pero hay limitaciones: para más información sobre hot-swapping en Diffusers y sus limitaciones, visita la sección de hot-swapping de la documentación. Los beneficios de este flujo se vuelven evidentes cuando miramos la latencia de inferencia sin usar compilación con hot-swapping. Puntos clave : Este artículo presenta una receta de optimización para inferencia rápida de LoRA con Flux, demostrando ganancias significativas en velocidad. Nuestro enfoque combina Flash Attention 3, torch.compile y cuantización FP8 manteniendo la capacidad de hot-swapping sin recompilación. En GPUs de alto rendimiento como la H100, esta configuración optimizada ofrece aproximadamente 2.23x de velocidad respecto al baseline. Para GPUs de consumo, específicamente el RTX 4090, abordamos limitaciones de memoria introduciendo cuantización NF4 para el codificador de texto T5 y utilizando compilación regional. Esta receta integral logró una ganancia sustancial de ~2.04x, haciendo que la inferencia LoRA en Flux sea viable y eficiente incluso con VRAM limitada. La idea clave es que, al gestionar cuidadosamente compilación y cuantización, los beneficios de LoRA pueden realizarse plenamente en diferentes configuraciones de hardware. Esperamos que estas recetas te inspiren a optimizar tus casos de uso basados en LoRA y a beneficiarte de una inferencia rápida. A continuación, se muestra una lista de los recursos importantes citados a lo largo de este artículo: Más artículos de nuestro Blog Por linoyts 2 de enero de 2024 • 70 Por derekl35 19 de junio de 2025 • 83 Me gustó tu artículo! ¿Puedo preguntar qué versión de PyTorch usaste para los resultados de prueba? PyTorch nightly. A boy with baloon · Regístrate o inicia sesión para comentar
More news
Scaleway se une a los Proveedores de Inferencia de Hugging Face para Inferencia Serverless y de Baja Latencia
Scaleway es ahora un Proveedor de Inferencia soportado en Hugging Face Hub, lo que permite inferencia serverless directamente en las páginas de modelos con los SDK de JS y Python. Accede a modelos open-weight populares y disfruta de flujos de IA escalables y de baja latencia.
Acelera ZeroGPU Spaces con la compilación AoT de PyTorch
Descubre cómo la compilación Ahead-of-Time (AoT) de PyTorch acelera ZeroGPU Spaces exportando y recargando modelos optimizados, con cuantización FP8, formas dinámicas y demos prácticas.
Haz que tus ZeroGPU Spaces vayan más rápido con la compilación AoT de PyTorch
Descubre cómo la compilación ahead-of-time (AoT) de PyTorch acelera ZeroGPU Spaces en GPUs Nvidia H200, con recarga instantánea, cuantización FP8, formas dinámicas y ganancias de rendimiento (1.3×–1.8×) para Flux, Wan y LTX.
Generar imágenes con Claude y Hugging Face: conectar Claude a Spaces vía MCP
Descubre cómo Claude puede generar imágenes de alta calidad conectándose a Hugging Face Spaces a través del MCP Server, usando FLUX.1-Krea-dev para realismo y Qwen-Image para renderizado de texto preciso, con pasos prácticos.
Nuevo Nemotron Nano 2: modelo de razonamiento abierto líder con 6x de rendimiento
El Nemotron Nano 2 9B es un modelo de razonamiento abierto para precisión empresarial y eficiencia en el edge, que ofrece 6x de rendimiento y un presupuesto de pensamiento configurable.
De Cero a GPU: Construcción y Escalado de Kernels CUDA Listos para Producción con Kernel Builder
Guía completa para diseñar, compilar y desplegar kernels CUDA de producción usando Hugging Face Kernel Builder, con bindings de PyTorch, builds multi-arquitectura y distribución en Hub.