Ce projet montre comment générer des images à l'aide de Stable Diffusion en hébergeant ComfyUI sur Amazon SageMaker Inference. Il s'agit d'un modèle de conception qui permet d'ajouter la capacité de génération d'images GenAI à votre application.
ComfyUI est l'une des interfaces graphiques et backend les plus populaires qui vous permet de générer des images à l'aide de Stable Diffusion. Certaines des fonctionnalités clés :
En hébergeant ComfyUI à l'aide d'Amazon SageMaker Inference, il peut être particulièrement adapté lorsque vous souhaitez :
Il existe une fonction Lambda pour appeler le point de terminaison d'inférence SageMaker (qui exécute ComfyUI) pour générer des images. À titre d'illustration, l'URL de la fonction Lambda est configurée afin que vous puissiez tester la génération d'images en appelant ce point de terminaison HTTPS dédié.
Le moyen le plus simple consiste à lancer une instance EC2 de g5.xlarge
exécutant AMI Deep Learning OSS Nvidia Driver AMI GPU PyTorch 2.3.0 (Amazon Linux 2)
. Connectez-vous à l'instance à l'aide de Session Manager , puis ajoutez l'utilisateur au groupe docker
en exécutant la commande suivante.
sudo usermod -a -G docker $( whoami )
Déconnectez-vous et reconnectez-vous pour que l'adhésion au groupe mise à jour prenne effet.
- Si vous n'exécutez pas ComfyUI localement, une instance non GPU telle que
t3.small
fonctionne également.- Si vous souhaitez exécuter le modèle FLUX.1, utilisez au moins
g5.2xlarge
ou supérieur pour la version fp8. utilisez au moinsg5.4xlarge
pour la version fp16.
AWS Cloud9 ou la machine locale fonctionnent également, mais assurez-vous que les éléments suivants sont correctement installés.
Remarques : Apple M1/M2/M3 ne fonctionne pas car la construction multi-architecture du conteneur n'est pas encore prise en charge. Vous devez construire sur x86_64 qui correspond au point de terminaison SageMaker.
Étape 1 - Cloner le projet :
git clone https://github.com/aws-samples/comfyui-on-amazon-sagemaker.git
Étape 2 - Personnalisez les fichiers suivants (facultatif) :
FLUX.1 - Si vous souhaitez essayer les modèles FLUX.1 :
- décommentez ici ou ici pour télécharger les modèles.
- mettez à jour ici pour remplacer
SAGEMAKER_INSTANCE_TYPE
par au moinsml.g5.2xlarge
.- utilisez le fichier d'invite correspondant
flux1-dev-fp8-ckpt.json
ouflux1-schnell-fp8-ckpt.json
dans la requête API.
Étape 3 - Exécutez déployer.sh. Cela prend généralement moins d’une heure.
./deploy.sh
À titre d'illustration, l'URL de la fonction Lambda est activée afin que vous puissiez tester la génération d'images en appelant ce point de terminaison HTTPS dédié. L'URL du point de terminaison peut être trouvée dans ComfyUIFunctionUrl
à partir de la sortie de la pile.
L'authentification AWS_IAM
est configurée par défaut pour appeler l'URL de la fonction lambda. Vous devez donc signer chaque requête HTTP à l'aide d'AWS Signature Version 4 (SigV4). Des outils tels que awscurl, Postman et AWS SigV4 Proxy offrent des moyens intégrés de signer vos demandes avec SigV4. Vous pouvez désactiver l'authentification en définissant LAMBDA_URL_AUTH_TYPE
sur NONE
dans déployer.sh mais c'est dangereux car l'URL de la fonction est ouverte à tout le monde.
Exemple d'autorisation de signature AWS à l'aide de Postman :
Et voici un exemple de corps de requête :
{
"positive_prompt" : " hill happy dog " ,
"negative_prompt" : " hill " ,
"prompt_file" : " workflow_api.json " ,
"seed" : 11245
}
Une invocation réussie voyant l'image générée :
Supprimez les ressources suivantes déployées par déployer.sh.
comfyui
)comfyui-sagemaker-<AWS_ACCOUNT_ID>-<AWS_REGION>
)comfyui-sagemaker
) Voir DÉVELOPPEMENT
Voir CONTRIBUTION pour plus d'informations.
Cette bibliothèque est sous licence MIT-0. Voir le fichier LICENCE.