42.uk Research

ComfyUI : Installation, utilisation et optimisation de Stable Diffusion

1 759 mots 9 minutes de lecture SS 92

Un guide complet pour installer, utiliser et optimiser ComfyUI pour Stable Diffusion. Maîtrisez les workflows, corrigez les problèmes...

Promptus UI

ComfyUI : Installation, utilisation et optimisation de Stable Diffusion

L’exécution locale de Stable Diffusion offre un contrôle inégalé, mais la configuration initiale peut être intimidante. ComfyUI, une interface basée sur des nœuds, fournit ce contrôle, mais nécessite une approche différente des interfaces utilisateur standard. Ce guide vous explique l’installation, l’utilisation de base et les techniques d’optimisation avancées pour tirer le meilleur parti de votre matériel. La faible quantité de VRAM est un problème persistant, et nous allons l’aborder de front.

Installation de ComfyUI

L’installation de ComfyUI implique de télécharger le logiciel, d’extraire les fichiers et d’installer les dépendances nécessaires. Ce processus varie légèrement en fonction de votre système d’exploitation et de votre matériel.

Tout d’abord, rendez-vous sur le référentiel GitHub de ComfyUI [https://github.com/comfyanonymous/ComfyUI]. Téléchargez la version appropriée pour votre système d’exploitation. Pour Windows, un téléchargement direct est généralement disponible. Pour Linux, vous clonnerez probablement le référentiel.

Règle d’or : * Si vous avez un GPU NVIDIA, téléchargez la version qui inclut la prise en charge de CUDA. Si vous êtes sur AMD, recherchez la version DirectML.

Extrayez l’archive téléchargée à l’emplacement de votre choix. Ensuite, accédez au dossier extrait.

Sous Windows, exécutez runnvidiagpu.bat (ou le fichier .bat approprié pour votre GPU). Cela téléchargera automatiquement les dépendances nécessaires, y compris PyTorch et d’autres bibliothèques requises. Soyez patient, cela peut prendre un certain temps.

Sous Linux, vous devrez peut-être créer un environnement Conda et installer manuellement les dépendances à l’aide de pip. Reportez-vous à la page GitHub de ComfyUI pour obtenir des instructions détaillées.

Analyse technique

Le processus d’installation configure essentiellement un environnement Python avec toutes les bibliothèques dont ComfyUI a besoin pour fonctionner. Les fichiers .bat sont des raccourcis pratiques qui automatisent ce processus sous Windows. Sous Linux, la configuration manuelle offre plus de contrôle, mais nécessite une connaissance des environnements Python.

Utilisation de ComfyUI : une approche basée sur les nœuds

ComfyUI utilise un système de workflow basé sur des nœuds. Chaque nœud représente une opération spécifique, telle que le chargement d’un modèle, l’encodage d’une invite ou l’échantillonnage d’une image. La connexion de ces nœuds crée un pipeline visuel pour la génération d’images.

Au lieu de taper des invites et de cliquer sur « Générer », vous créez un graphique de nœuds interconnectés. Un workflow de base comprend généralement :

  1. Load Checkpoint : Charge un modèle Stable Diffusion (par exemple, SDXL, 1.5).
  2. Load CLIP Text Encode (Prompt) : Encode votre invite positive en une représentation numérique.
  3. Load CLIP Text Encode (Negative Prompt) : Encode votre invite négative.
  4. Empty Latent Image : Crée un espace latent vide pour l’image.
  5. KSampler : Le nœud d’échantillonnage central qui affine de manière itérative l’image en fonction de l’invite, du modèle et du planificateur.
  6. VAE Decode : Décode l’image latente en une représentation de pixel visible.
  7. Save Image : Enregistre l’image générée sur votre disque.

Pour créer ce workflow, cliquez avec le bouton droit de la souris sur l’interface ComfyUI et sélectionnez « Add Node ». Recherchez le nœud souhaité et cliquez pour l’ajouter au graphique. Connectez les nœuds en faisant glisser la sortie d’un nœud vers l’entrée d’un autre.

!Figure : Un workflow ComfyUI de base avec les nœuds énumérés ci-dessus à 0:30

Figure : Un workflow ComfyUI de base avec les nœuds énumérés ci-dessus à 0:30 (Source : Vidéo)*

Analyse technique

L’approche basée sur les nœuds offre une flexibilité incroyable. Vous pouvez facilement modifier et expérimenter avec différents composants du processus de génération d’images. Cependant, elle nécessite également une compréhension plus approfondie du fonctionnement de Stable Diffusion sous le capot.

Optimisation de ComfyUI pour une faible quantité de VRAM

L’exécution de Stable Diffusion, en particulier avec SDXL, peut rapidement épuiser la VRAM, en particulier sur les cartes avec 8 Go ou moins. Plusieurs techniques peuvent atténuer ce problème, en échangeant la vitesse contre l’efficacité de la mémoire.

Une faible quantité de VRAM est un goulot d’étranglement courant. Voici comment y remédier :

  1. Tiled VAE Decode : Cette technique décode l’image latente en tuiles plus petites, ce qui réduit considérablement l’utilisation de la VRAM pendant l’étape de décodage. Les tests communautaires sur X montrent qu’un chevauchement en mosaïque de 64 pixels réduit les joints. Pour activer, installez le nœud personnalisé approprié et configurez le nœud de décodage VAE.
  2. Sage Attention : Ce mécanisme d’attention économe en mémoire remplace le mécanisme d’attention standard dans le KSampler. Bien qu’il économise de la VRAM, il peut introduire de subtils artefacts de texture à des valeurs CFG élevées.
  3. Block/Layer Swapping : Déchargez les couches de modèle vers le CPU pendant l’échantillonnage. Cela vous permet d’exécuter des modèles plus grands sur des cartes avec une VRAM limitée. Expérimentez en échangeant les 3 premiers blocs de transformateur vers le CPU tout en conservant le reste sur le GPU.
  4. Utilisez des modèles plus petits : Les modèles SD 1.5 nécessitent généralement moins de VRAM que les modèles SDXL.
  5. Réduisez la taille du lot : Réduisez la batch_size dans le nœud Empty Latent Image à 1.
  6. Baissez la résolution : Générez des images à une résolution inférieure (par exemple, 512x512) et mettez-les à l’échelle plus tard.

Mes résultats de tests en laboratoire

Test A (SDXL, 1024x1024, paramètres par défaut, 4090) :** Rendu de 14 s, VRAM de pointe de 11,8 Go.

Test B (SDXL, 1024x1024, VAE en mosaïque, Sage Attention, 4090) :** Rendu de 45 s, VRAM de pointe de 7,5 Go.

Test C (SDXL, 768x768, paramètres par défaut, carte de 8 Go) :** Erreur de mémoire insuffisante.

Test D (SDXL, 768x768, VAE en mosaïque, Sage Attention, Block Swapping, carte de 8 Go) :** Rendu de 60 s, achèvement réussi.

Analyse technique

Ces techniques fonctionnent en réduisant la quantité de données qui doivent être stockées dans la VRAM à un moment donné. Le décodage VAE en mosaïque divise le processus de décodage en morceaux plus petits. Sage Attention utilise un calcul d’attention plus économe en mémoire. L’échange de blocs déplace les parties inactives du modèle vers la RAM système. Chaque technique a un compromis de vitesse.

Techniques avancées

Une fois que vous avez maîtrisé les bases, explorez ces techniques avancées :

  1. ControlNet : ControlNet vous permet de guider la génération d’images à l’aide d’images d’entrée, de croquis ou d’autres signaux de contrôle.
  2. Upscaling : Utilisez des modèles de mise à l’échelle spécialisés pour augmenter la résolution de vos images générées sans perdre de détails.
  3. Image Variation : Créez des variations d’une image existante à l’aide du workflow « Image to Image ».
  4. Looping and Iteration : Utilisez des nœuds personnalisés pour créer des workflows itératifs complexes, tels que la génération d’animations ou l’évolution d’images au fil du temps.