DALL-E Homebrew Dans cet article, nous verrons comment configurer l'exécution de votre propre générateur d'images AI. Vous avez besoin d'un système Linux avec une carte compatible CUDA pour que cela fonctionne jusqu'au bout. J'ai obtenu le script de base txt-2img fonctionnant sous Windows. Malheureusement, pour les publiés en juillet, vous avez besoin de afin d'indexer l'ensemble de données openimages, qui n'est disponible que sur Linux. a bien fonctionné pour moi. modèles de diffusion augmentés par récupération scann WSL Voici à peu près ce dont vous aurez besoin : Linux (amende WSL) 11.3 Graphiques CUDA = 32 Go de RAM 50 Go d'espace disque (~30 Go sans openimages) Carte de la série 3xxx (je ne fais que deviner ici. Tout cela est fait avec un 3090 FE) Diffusion latente Je suis tombé par hasard sur le pendant que je parcourais les sous-reddits AI. Quelques messages l'ont mentionné et je ne savais pas ce que c'était, alors je suis allé chercher sur Google. référentiel de diffusion latente Je ne suis pas un informaticien, un mathématicien ou quoi que ce soit d'autre qui serait nécessaire pour vraiment comprendre ce qui se passe ici. L'article sur les nouveaux modèles RAD est compréhensible et intéressant, mais je n'ai pas encore fait beaucoup de recherches au-delà de cela. Text-to-image vs RAD Il existe 2 techniques de génération d'images possibles avec Latent Diffusion. Nous allons installer et examiner les deux. Je crois que le modèle txt2-img que nous allons configurer en premier est ce à quoi nous sommes habitués avec d'autres outils de génération d'images en ligne - il crée un clip d'image à très basse résolution qui pense être une bonne correspondance rapide et le débruite et le met à l'échelle. Le modèle RAD utilise une base de données configurable d'images comme référence ET fait la diffusion comme nous en avons l'habitude. Cela semble signifier qu'il est moins bon en tant que générateur à usage général, mais pourrait être utilisé avec un ensemble de formation spécifique que vous pourriez éventuellement créer. Je vais essayer cela à l'avenir. RAD génère également des images 768X768, ce qui est assez impressionnant. Instructions d'installation Texte à image Assurez-vous que est installé et que fonctionne dans votre shell. Vous pouvez obtenir CUDA 11.3 conda Conda ici , de peur que vous ne vous retrouviez plus tard dans l'enfer de la dépendance. Je l'ai fait via mais conda peut aussi fonctionner. (Ré)installez Pytorch maintenant pip Cloner le repo sur un lecteur avec beaucoup d'espace libre dans le référentiel et exécutez : cd conda env create -f environment.yaml conda activate ldm Cela configurera l'environnement initial. Si vous rencontrez des erreurs avec Pytorch plus tard et que vous devez le réinstaller, revenez à environment.yaml et réinstallez en utilisant les versions de package correctes. Téléchargez le modèle et vous êtes prêt à partir tant que vos dépendances de torche sont toutes correctement configurées. mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt Vous devriez être en mesure d'échantillonner des images maintenant en utilisant : python scripts/txt2img.py --prompt "my cool image" Assurez-vous de voir les options que vous pouvez définir dans le README. Vous pouvez utiliser ce script bash pour faciliter l'exécution de tout à partir d'un shell. Vous pouvez l'inclure dans votre fichier et rouvrir votre shell. Assurez-vous de modifier les 3 chemins en fonction de vos besoins. Nous verrons le PLMS plus tard. ~/.bashrc function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi } Les images sont 512X512 par défaut. Vous pouvez utiliser pour mettre à l'échelle les images avec de très bons résultats. This Jupiter Notebook Dépannage Si vous obtenez des erreurs de mémoire CUDA lors de l'exécution de commandes, essayez de réduire la taille du lot. Utilisez pour dépanner/afficher l'utilisation de la mémoire. htop Si vous utilisez WSL, assurez-vous que toute votre RAM est disponible pour Linux. Si vous obtenez des erreurs liées à la torche, vous devrez probablement réinstaller Pytorch. Cela entraînera probablement d'autres problèmes avec les packages. Vérifiez environment.yaml et installez manuellement les versions de package correctes avec et/ou (j'ai fait les deux et je ne suis pas sûr de ce qui a tout fait fonctionner) pip conda GDR Vous pouvez en savoir plus sur RDM . Comme dit précédemment, il combine essentiellement une base de données d'images avec des descriptions de clips avec le processus de diffusion existant, d'après ce que je comprends. Cette partie prend beaucoup plus de temps à fonctionner. ici Notez que ce modèle, en particulier lors de l'utilisation de la formation openimages, est le meilleur pour recréer des choses réelles et ne semble pas très bon (encore) et créer les images étranges auxquelles nous sommes habitués à partir des modèles de diffusion. Faites fonctionner le modèle Text-to-Image en premier Installez de nouveaux packages et téléchargez le modèle de formation. pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt Testez tout fonctionne jusqu'à présent avec python scripts/knn2img.py --prompt "I'm a computer" Si tout s'est bien passé, vous devriez voir un texte de réussite dans votre shell. Nous devons maintenant télécharger tous les index/modèles d'images. Le zip openimages est de 11 Go. Les données ArtBench sont assez petites. mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers Nous sommes maintenant prêts à utiliser les modèles Artbench (qui fonctionnent plutôt bien dans mes tests limités), mais ce que nous voulons vraiment, c'est utiliser le modèle openimages massif comme référence. Nous avons téléchargé les données, mais nous devons créer l'index. Si vous souhaitez tester la base de données Artbench, exécutez python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 Index des images ouvertes Sauf si vous avez un super ordinateur, la terrible gestion de la mémoire dans le multitraitement python (d'après ce que je peux dire) nous empêchera d'utiliser les 4 fichiers que nous avons décompressés avec le script du repo pour les indexer. Tout le reste que j'ai essayé, les processus manqueraient de mémoire. Heureusement, nous avons juste besoin de concaténer les fichiers. Vous pouvez ensuite supprimer les anciens fichiers de pièces si vous le souhaitez. Nous devons également déplacer les fichiers de pièces hors du dossier openimages. cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../ Maintenant, lorsque nous exécutons le script de formation, nous ne devrions pas manquer de mémoire. Je pense que c'est un problème dans leur fonction multi-fichiers dans le script de formation. python scripts/train_searcher.py Nous devons modifier la taille du lot dans afin de ne pas manquer de mémoire GPU. Vous devrez peut-être descendre à 1, mais j'ai pu régler à 2 sur un 3090. scripts/knn2img.py Ouvrez dans un éditeur scripts/knn2img.py Allez à la ligne 243 ou trouvez "n_samples" Modifiez la valeur par défaut à 1 ou 2 et enregistrez Vous pouvez également le faire en utilisant le paramètre de ligne de commande, mais comme cela ne fonctionnera jamais pour moi, je voulais changer la valeur par défaut. Notez que si vous mettez à jour le dépôt à l'avenir, cela sera probablement écrasé. Nous pouvons maintenant générer des images RDM à l'aide de la base de données openimages : python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20 Voici un script pour l'exécuter facilement. Encore une fois, assurez-vous de modifier les 3 chemins en fonction de vos besoins : ~/.bashrc function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi } Accélérer les choses Vous pouvez également exécuter des invites par lots en créant un fichier (dans ce cas ) et en y pointant le script avec le paramètre comme celui-ci prompts.txt –from-file python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 exemple prompts.txt prompt 1 prompt 2 prompt 3 Cela devrait vous faire gagner beaucoup de temps si vous exécutez de nombreuses requêtes, car le modèle n'est chargé qu'une seule fois. Le modèle texte-image n'a pas cette option. Tests initiaux et PLMS Vous trouverez ci-dessous quelques résultats initiaux des deux modèles avec PLMS activé et désactivé. Le PLMS devrait accélérer les choses. Pour l'instant, nous ne mesurerons pas l'augmentation de la vitesse mais regarderons subjectivement la qualité d'image/les résultats. Étant donné que le modèle RDM ne fera que 2 photos à la fois pour mon système, j'ai inclus les deux photos au lieu d'une grille pour ce modèle. Je ferai presque certainement des tests plus spécifiques à l'avenir et ces modèles seront inclus dans les prochains articles de comparaison. Une maison en bois sur une colline, photographie de paysage Texte à image sans plm avec plms GDR sans plm avec plms Un panneau d'arrêt violet Texte à image sans plm avec plms GDR sans plm avec plms tanière de renard, art numérique Texte à image sans plm avec plms GDR sans plm avec plms gagner le grand jeu, photographie primée Texte à image sans plm avec plms GDR sans plm avec plms une voiture de sport roulant dans les dunes de sable Texte à image sans plm avec plms GDR sans plm avec plms Un générateur d'images pour appeler le vôtre Et voilà, plus de crédits ni de limites mensuelles, juste une pure génération d'images d'IA par vous-même. Une fois que j'aurai défini certains paramètres de réglage et créé ma propre base de données de formation d'images, nous en reparlerons probablement. Espérons qu'avec quelques réglages et de nouvelles versions/modèles, cela se rapprochera du facteur WOW de DALL-E. Également publié . ici