Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Générez des images par lots à l'aide d'un modèle de diffusion
Ce didacticiel explique comment exécuter la génération d'images par lots à haut débit sur un fichier JSONL contenant des invites à l'aide d'un modèle de diffusion. Vous soumettez le bundle de tâches par lots texte-image GitHub
Chaque ligne sélectionnée dans le JSONL devient une tâche de génération. Le planificateur distribue les tâches entre les opérateurs GPU disponibles, et chaque programme de travail charge le pipeline de diffusion une fois et le réutilise pour chaque tâche qu'il exécute. Lorsqu'une ligne contient un caption champ, ou qu'un generated_text champ est enchaîné à partir de la sortie du bundle d'inférence par lots vLLM, le travail compose le texte sur l'image générée sous forme de typographie nette. Les lignes sans légende produisent des images pures, de sorte que le bundle fonctionne aussi bien qu'un générateur de lots texte-image en clair.
Durée estimée : 30 à 60 minutes, configuration de la ferme comprise. La première exécution télécharge également environ 13 Go de poids de modèle par travailleur.
L'exécution de ce didacticiel entraîne des frais pour les instances de travail GPU qui traitent la tâche.
Présentation de
Pour terminer ce didacticiel, procédez comme suit :
-
Configurez votre ferme.
-
Préparez le fichier d'entrée.
-
Soumettez la tâche de génération d'images.
-
Téléchargez et parcourez la galerie.
-
nettoyer les ressources.
Configurez votre ferme
Vous avez besoin d'un parc géré par des services avec des GPU NVIDIA et au moins 32 Go de RAM, ainsi que d'une file d'attente avec un environnement de file d'attente conda qui lit CondaPackages les paramètres et les tâches. CondaChannels FLUX.2 Klein 4B s'adapte facilement aux GPU de 16 Go et plus (par exemple, L4 ou A10G) grâce au déchargement du processeur.
Le moyen le plus rapide d'obtenir une batterie de serveurs compatible est de déployer le CloudFormation modèle de batterie de serveurs CUDA GitHubCREATE_COMPLETE, configurez la CLI Deadline Cloud pour utiliser la nouvelle batterie de serveurs :
deadline config set defaults.farm_idFarmId-from-stack-outputsdeadline config set defaults.queue_idCUDAQueueId-from-stack-outputs
Note
Le bundle comprend un environnement de InstallDeps travail qui installe PyTorch et la dernière bibliothèque de diffuseurs de git en plus de l'environnement conda de la file d'attente à chaque session, et télécharge quatre petites polices Google pour la superposition des sous-titres. Attendez-vous à un temps de configuration supplémentaire de 30 à 90 secondes par utilisateur lors de la première utilisation, en plus du téléchargement du modèle lors de la première exécution. Si votre flotte fonctionne dans un VPC restreint au réseau, vous devez soit préintégrer les dépendances dans un canal AMI ou conda personnalisé, soit ouvrir une sortie.
Préparez le fichier d'entrée
L'entrée est un fichier JSONL avec un objet JSON par ligne. Chaque ligne doit avoir un prompt champ ou un generated_text champ enchaîné à partir de la sortie du bundle d'inférence par lots vLLM :
{"prompt": "A golden hour photo of a sourdough loaf on a linen-covered table", "id": "loaf_01"} {"prompt": "A bakery storefront at sunrise, photorealistic", "caption": "OPEN AT DAWN", "id": "shop_01"} {"prompt": "Write a slogan for sourdough", "id": "001", "generated_text": "Real grain. Real fermentation. Real you.", "style": "rustic flat lay, warm tones"}
Les champs par ligne facultatifs incluent le texte superposé, caption style pour remplacer le suffixe de style au niveau de la tâche, et, etfont. width height steps seed Le bundle inclut le même outil de création d'invites à dépendance zéro que le bundle par lots vLLM. Ouvrez tools/prompt_builder.html pour créer des fichiers d'entrée, importer un JSONL par glisser-déposer et ajouter des remplacements par invite.
Le sample_prompts.jsonl fichier groupé est une démonstration de 10 images d'une campagne de boulangerie : des slogans de boulangerie générés par le bundle d'inférence par lots vLLM, accompagnés d'astuces de style superposées pour des visuels évocateurs.
Soumettre la tâche de génération d'images
Pour soumettre à l'aide de l'expéditeur de l'interface graphique
-
Dans le répertoire du
text_to_image_batchbundle, ouvrez l'émetteur :deadline bundle gui-submit . -
Choisissez votre fichier JSONL d'entrée. Essayez la démo
sample_prompts.jsonlde la campagne sur les boulangeries. -
Définissez la plage d'invites (par exemple,
1-10pour les 10 premières invites) et choisissez un répertoire de sortie. -
Modifiez éventuellement StyleSuffix la largeur et la hauteur. Laissez Overlay Caption activé
truesi votre JSONL contient des légendes ou des slogans, ou réglez-le surfalsepour la génération d'images pures. -
Sélectionnez Soumettre.
Vous pouvez également soumettre via l'interface de ligne de commande :
deadline bundle submit . \ --parameter InputFile=$PWD/sample_prompts.jsonl \ --parameter Prompts=1-10 \ --parameter OutputDir=$PWD/output
Les ChunkSize paramètres Prompts et fonctionnent de la même manière que dans le bundle d'inférence par lots vLLM, à l'aide de la fonction de découpage des tâches de Deadline Cloud. Pour de plus amples informations, veuillez consulter Découpage des tâches pour les modèles de tâches. Le ModelName paramètre accepte tout ce que la bibliothèque de diffuseurs peut charger, y compris SDXL Turbo et Stable Diffusion 3.5. Pour la liste complète des paramètres et les paramètres des autres modèles, consultez le tableau des paramètres dans l'exemple de fichier README sur GitHub
Téléchargez et parcourez la galerie
Pour télécharger et consulter les résultats
-
Une fois la tâche terminée, exécutez la commande de téléchargement depuis le répertoire que vous avez utilisé au moment de l'envoi, afin que le
OutputDirchemin soit redirigé au même endroit :deadline job download-output --job-idjob-id -
Chaque artefact se trouve dans un
output/sous-répertoire du chemin que vous avez défini.OutputDirLes fichiers PNG bruts sont disponiblesoutput/images/, les métadonnées combinées sont disponibles et il s'output/gallery.htmlagit d'une visionneuse de galerie statique avec recherche et exportation au format CSV.output/output.jsonl -
Si les images de la galerie ne se chargent pas lorsque vous l'ouvrez
gallery.htmldirectement, il s'agit d'une restriction de sécurité du navigateur surfile://les URL. Servez plutôt le répertoire :cdOutputDir/output && python3 -m http.server 8080 # open http://localhost:8080/gallery.html
Chaîne à partir de l'inférence par lots vLLM
Le flux classique associe ce bundle au bundle d'inférence par lots vLLM :
-
Générez du texte à l'aide du bundle d'inférence par lots vLLM : slogans, légendes, descriptions de scènes ou texte alternatif. La sortie est
output.jsonlavec ungenerated_textchamp par ligne. Consultez Exécuter une inférence LLM par lots avec vLLM. -
(Facultatif) Ouvrez
tools/prompt_builder.html, déposezoutput.jsonl, ajoutez ou modifiez des légendes, des styles ou des descriptions visuelles par invite, puis réexportez. -
Soumettez ce bundle avec le JSONL en tant que.
InputFileLe script par tâche est automatiquement utiliségenerated_textcomme légende de superposition.
Lorsqu'une ligne contient à la fois un generated_text slogan et le LLM originalprompt, le script de tâche essaie de retirer le sujet de la demande et de l'utiliser comme invite visuelle pour le modèle de diffusion, car les slogans sont souvent trop abstraits pour donner un sujet concret au modèle. Le travailleur enregistre la source d'invite visuelle par tâche afin que vous puissiez détecter les erreurs d'extraction.
Nettoyage
Pour éviter des frais récurrents, nettoyez les ressources que vous avez créées pour ce didacticiel :
Pour nettoyer les ressources du didacticiel
-
Si vous avez déployé le CloudFormation modèle de batterie de serveurs CUDA, supprimez la CloudFormation pile de la CloudFormation console.
-
Si vous avez utilisé un parc de serveurs existant et créé un parc de GPU spécialement pour ce didacticiel, arrêtez ou supprimez ce parc. Si vous avez utilisé une flotte partagée préexistante, laissez-la en place.
-
Supprimez les fichiers de sortie locaux si vous n'en avez plus besoin.
Ressources connexes
Les ressources suivantes fournissent des informations supplémentaires :