Quantification dans Diffusers : rendre l’IA plus accessible
Réduire la taille des modèles de diffusion avec la quantification tout en préservant la qualité des images.
Les modèles de diffusion de grande taille, comme le modèle text-to-image Flux, sont capables de générer des images bluffantes. Cependant, leur taille colossale pose un problème de mémoire et nécessite des ressources de calcul considérables. La quantification apparaît comme une solution efficace, réduisant la taille de ces modèles tout en préservant la qualité des résultats. Mais alors, peut-on réellement faire la différence sur l’image finale ?
Comment les backends de quantification transforment les Diffusers
Hugging Face a intégré divers backends de quantification directement dans ses Diffusers. Ces outils, tels que bitsandbytes, GGUF et torchao, permettent de rendre les grands modèles plus accessibles tout en démontrant leur utilisation avec le modèle Flux. Par exemple, le transformer principal de Flux nécessite environ 31.447 GB de mémoire en BF16, mais passe à 12.584 GB avec une quantification de 4 bits par bitsandbytes.
Performances de bitsandbytes : un compromis judicieux
Bitsandbytes est particulièrement efficace pour la quantification 8 bits et 4 bits, souvent utilisée pour les LLMs. La quantification de Flux avec bitsandbytes permet de réduire significativement l’utilisation de la mémoire, sans pour autant sacrifier les performances visuelles. Par exemple, la version 4 bits réduit la mémoire à 12.584 GB contre 31.447 GB en BF16, tout en préservant un temps d’inférence de 12 secondes.
La quantification permet de réduire drastiquement la taille des modèles de diffusion, les rendant plus adaptés aux contraintes matérielles actuelles, sans dégrader significativement leur performance visuelle.
torchao enrichit les options de quantification
Torchao, une bibliothèque native PyTorch, propose une quantification focalisée sur l’optimisation architecturale incluant int4, int8, et float8. Ces optimisations permettent un contrôle précis sur la réduction de la taille des modèles, tout en préservant une efficacité opérationnelle grâce à des types de données exotiques. Par exemple, l’utilisation de torchao int4 permet de réduire la mémoire sans aller au-delà des capacités offertes par torch.compile.
Optimisation de la mémoire et exemples concrets
En pratique, les configurations de quantification pipeline, telles que PipelineQuantizationConfig avec bitsandbytes, montrent comment des bibliothèques comme diffusers et transformers peuvent être utilisées de manière complémentaire pour gérer les contraintes de mémoire. Charger le modèle FLUX.1-dev en quantification 4 bits est une opération simple et directe, qui réduit considérablement les besoins en mémoire par rapport à une exécution en BF16.
« La quantification offre un moyen de rendre les IA de diffusion massives plus maniables et accessibles sans sacrifier la qualité visuelle. »
Hugging Face Blog
Les avancées en quantification ouvrent la porte à une utilisation plus répandue et efficiente des modèles géants de diffusion. Grâce à ces optimisations, des modèles autrefois jugés gourmands en ressources deviennent accessibles à un public plus large, repoussant ainsi les limites de l’IA générative.