Comment créer des styles personnalisés avec Stable Diffusion

Personnaliser Stable Diffusion avec des styles de rendu, créer un styles.csv, améliorer les prompts et gérer les limites de VRAM sur GPU Radeon.
Dernièrement je vous parlais de Stable Diffusion et de son installation sur Radeon RX 6800 XT Rocm dans cet article .
Pour rappel, Stable Diffusion est un model de génération d'image. Mais vous remarquerez qu'avec cet interface, on est rapidement limité.
Comment faire pour ajouter des custom prompt style afin de préciser si l'on souhaite une illustration, du photoréaliste, etc ?
C'est ce que nous allons voir dans cet article.
Créer des styles de rendu personnalisés
Premièrement, rendez-vous dans votre dossier stable-diffusion-webui , on va créer un fichier styles.csv dans lequel on va mettre le contenu suivant:
Name,Prompt
Illustration,"masterpiece, best quality, digital painting, fantasy art, vibrant colors, detailed"
Photorealism,"RAW photo, 35mm lens, DSLR, shallow depth of field, natural lighting, photorealistic"
Logo,"flat vector logo, centered, minimalist, white background, simple"
Cyberpunk,"cyberpunk neon city at night, rain, science fiction, blade runner, ultra detailed"
Anime,"anime style, vibrant, clean lines, studio ghibli"
Une fois que vous avez fait cela, relancez votre Stable Diffusion.
Sur l'interface et cliquez sur la définition des styles.

Maintenant on va rafraîchir la liste en cliquant sur l'icône d'actualisation:

Une fois que c'est fait, vous devriez avoir une liste de styles à jour:

Vous pouvez maintenant facilement passer d'un style à l'autre ou éditer au besoin:

Les limites
Cependant attention, vous allez tout de même faire face à quelques limitations.
Si votre système tourne sur un seul GPU et que celui ci est déjà utilisé par votre système pour afficher sur l'écran, vous ne pourrez pas aller jusqu'au maximum de VRAM disponible.
Vous allez devoir tourner sur des résolutions assez basses: 512x512 car dans le cas contraire, si l'on compte une partie de VRAM utilisée par le système, vous allez atteindre un Out of Memory:

Il y a des solutions de contournement pour ce problème:
- passer par un petit GPU pour le display
- utiliser plusieurs GPU pour le render
- opter pour un modèle plus haut de gamme avec plus de VRAM
Edit: J'ai bien vérifié l'activation de Resizable Bar et de Above 4G Decode dans mon bios, j'ai rebooté la machine et lancé Automatic1111 avec ./webui.sh sans extra arg et j'ai réussi à render des photos de 1024*1024.
Bon cela utilise 95% de la VRAM sur 16go, mais au moins, ça passe !

FAQ
Comment créer un fichier styles.csv pour Stable Diffusion ?
Il suffit de créer un fichier texte nommé styles.csv à la racine du dossier stable-diffusion-webui, en respectant le format Name,Prompt avec une ligne par style. Après avoir relancé l'interface, un bouton d'actualisation permet de charger les nouveaux styles sans redémarrage supplémentaire.
Pourquoi je ne peux générer qu'en 512x512 sans avoir d'erreur mémoire ?
Si votre GPU sert à la fois à afficher votre bureau et à faire tourner Stable Diffusion, une partie de la VRAM est déjà réservée par le système, ce qui réduit la mémoire disponible pour la génération. Monter la résolution consomme rapidement le reste et déclenche une erreur Out of Memory.
Est-il possible de générer en 1024x1024 sur une Radeon RX 6800 XT ?
Oui, en activant Resizable Bar et Above 4G Decode dans le BIOS, il est possible de générer en 1024x1024, mais cela utilise environ 95 % des 16 Go de VRAM disponibles. La marge est donc très faible et le moindre usage concurrent peut provoquer un plantage.
Quelles sont les alternatives si on manque de VRAM ?
Trois options sont envisageables : dédier un petit GPU secondaire uniquement à l'affichage, utiliser plusieurs GPU en parallèle pour la génération, ou investir dans un modèle avec une capacité de VRAM plus élevée.

Alexandre P.
Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.
Poursuivre la lecture


