ComfyUI est un outil AIGC basé sur des nœuds, construit sur Stable Diffusion, conçu pour la génération de vidéos courtes et la production d'animations. PAI-EAS prend en charge le déploiement de services ComfyUI adapté à différents scénarios.
Avant de commencer
Principales limites et considérations
Lisez cette section avant le déploiement afin d'éviter le gaspillage de ressources et les erreurs courantes.
-
Ressources de déploiement : Nous recommandons les types d'instance GPU GU30, NVIDIA A10 ou NVIDIA T4. Le type d'instance
ml.gu7i.c16m60.1-gu30offre le meilleur rapport qualité-prix.ImportantChaque instance PAI-EAS exécute un seul processus ComfyUI et ne prend en charge qu'un seul GPU (une instance unique avec un seul GPU ou plusieurs instances avec un seul GPU chacune). L'inférence parallèle sur plusieurs GPU n'est pas prise en charge. Ne sélectionnez pas de types d'instance multi-GPU (tels que 2×A10). Les types d'instance multi-GPU gaspillent des ressources et n'améliorent pas les performances pour une tâche unique.
Mise à l'échelle horizontale : Pour augmenter la concurrence, utilisez l'API Edition et augmentez le nombre de replicas au lieu de sélectionner un type d'instance multi-GPU.
Choisir une édition de déploiement
Sélectionnez l'édition qui correspond le mieux à votre cas d'utilisation :
Édition | Cas d'utilisation | Méthode d'accès | Fonctionnalités clés | Méthode de facturation |
Standard Edition | Développement et tests pour un utilisateur unique |
|
| Lors du déploiement sur des ressources publiques, la facturation commence dès que l'instance est en cours d'exécution, même sans aucun appel API. |
API Edition | Charges de travail de production à forte concurrence | Appels API (asynchrones) |
| |
Cluster Edition WebUI | Équipes multi-utilisateurs et formation | WebUI |
Pour plus d'informations sur le fonctionnement, consultez Fonctionnement de Cluster Edition |
Pour plus d'informations sur la facturation, consultez Facturation d'Elastic Algorithm Service (EAS).
Les appels API synchrones et asynchrones diffèrent selon l'utilisation ou non du service de file d'attente PAI-EAS :
Appel synchrone : Envoie une requête directement à l'instance d'inférence sans utiliser le service de file d'attente PAI-EAS.
Appel asynchrone : Utilise le service de file d'attente PAI-EAS. Les requêtes sont soumises à une file d'attente d'entrée et les résultats sont livrés via un modèle d'abonnement.
Comme ComfyUI dispose de son propre système de file d'attente asynchrone intégré, même les appels synchrones sont traités de manière asynchrone en arrière-plan. Après avoir soumis une requête, le système renvoie un Prompt ID que vous utilisez pour interroger le résultat de l'inférence.
Déployer le service
Standard Edition, Cluster Edition et API Edition : Vous pouvez utiliser le déploiement de modèles basé sur des scénarios pour une expérience simplifiée, ou le déploiement de modèles personnalisés pour des options de configuration avancées.
Méthode 1 : Déploiement de modèles basé sur des scénarios (recommandé)
Connectez-vous à la console PAI. Sélectionnez une région en haut de la page. Ensuite, sélectionnez l'espace de travail souhaité et cliquez sur Enter Elastic Algorithm Service (EAS).
Sur la page Elastic Algorithm Service (EAS), cliquez sur Deploy Service. Dans la section Scenario-based Model Deployment, cliquez sur AI Video Generation: ComfyUI-based Deployment.
-
Configurez les paramètres clés suivants et définissez les autres paramètres selon vos besoins :
Version : Consultez Choisir une édition de déploiement.
-
Model Settings : Par exemple, en utilisant Object Storage Service (OSS), sélectionnez un bucket et un répertoire. Une fois le déploiement réussi, le système crée automatiquement les répertoires ComfyUI requis à cet emplacement.
ImportantPAI-EAS ne prend pas en charge l'installation directe de nœuds personnalisés (plugins) depuis le réseau via ComfyUI Manager ou Git Clone. Pour utiliser vos propres modèles, installer des nœuds personnalisés ou effectuer des appels API, vous devez configurer ce point de montage de stockage.
Resource Configuration : Vous devez sélectionner un type d'instance GPU. Nous recommandons GU30, NVIDIA A10 ou NVIDIA T4.
ml.gu7i.c16m60.1-gu30offre le meilleur rapport qualité-prix. Si ce type d'instance n'est pas disponible, sélectionnez plutôtecs.gn6i-c16g1.4xlarge.
Cliquez sur Deploy. Attendez environ 5 minutes. Lorsque le Service Status passe à Running, le déploiement est terminé.
Méthode 2 : Déploiement de modèles personnalisés
Connectez-vous à la console PAI. Sélectionnez une région en haut de la page. Ensuite, sélectionnez l'espace de travail souhaité et cliquez sur Enter Elastic Algorithm Service (EAS).
Cliquez sur Deploy Service Dans la section Inference Service, cliquez sur Custom Deployment dans la section Custom Model Deployment.
-
Configurez les paramètres clés suivants :
Deployment Method : Sélectionnez Image-based Deployment et cochez la case Enable Web App.
-
Image Configuration : Dans la liste Alibaba Cloud Image, sélectionnez
comfyui:2.3. Convention de nommage des versions d'image :x.xpour Standard Edition,x.x-apipour API Edition etx.x-clusterpour Cluster Edition.RemarqueÉtant donné que les versions sont mises à jour fréquemment, sélectionnez la dernière version d'image disponible lors du déploiement.
Pour les cas d'utilisation de chaque édition, consultez Choisir une édition de déploiement.
-
Mount storage : En prenant Object Storage Service (OSS) comme exemple, sélectionnez un bucket et un répertoire. Une fois le déploiement réussi, le système crée automatiquement les répertoires ComfyUI requis à cet emplacement. Assurez-vous que le bucket se trouve dans la même région que le service PAI-EAS.
ImportantPAI-EAS ne prend pas en charge l'installation directe de nœuds personnalisés (plugins) depuis le réseau via ComfyUI Manager ou Git Clone. Pour utiliser vos propres modèles, installer des nœuds personnalisés ou effectuer des appels API, vous devez configurer ce point de montage de stockage.
URI : Cliquez sur
pour sélectionner un répertoire OSS existant. Par exemple, oss://bucket-test/data-oss/.Mount Path : Définissez-le sur
/mnt/datapour monter le répertoire OSS sur le chemin du conteneur/mnt/data.
-
Command to Run :
Après avoir sélectionné une version d'image, le système configure automatiquement la commande d'exécution.
Si vous avez configuré un point de montage de stockage, vous devez ajouter le paramètre
--data-dirà la Command, et sa valeur doit correspondre exactement au Mount Path. Par exemple,python main.py --listen --port 8000 --data-dir /mnt/data --cache-root /stable-diffusion-cache.
Resource Type : Sélectionnez Public Resources.
Deployment : Vous devez sélectionner un type d'instance GPU. Nous recommandons GU30, NVIDIA A10 ou NVIDIA T4.
ml.gu7i.c16m60.1-gu30offre le meilleur rapport qualité-prix. Si ce type d'instance n'est pas disponible, sélectionnez plutôtecs.gn6i-c16g1.4xlarge.
Cliquez sur Deploy. Le déploiement prend environ 5 minutes. Lorsque le Service Status passe à Running, le service est déployé.
Utiliser le service via WebUI
Standard Edition et Cluster Edition prennent en charge l'accès via WebUI.
Ouvrir l'interface web
Cliquez sur le nom du service cible pour ouvrir la page Overview, puis cliquez sur Web Application dans le coin supérieur droit.
Si la page met longtemps à se charger, consultez La page se fige ou met trop de temps à se charger .
Utiliser un workflow de modèle
ComfyUI fournit des modèles prédéfinis pour les tâches courantes.
-
Sélectionnez un modèle (par exemple, Wan VACE Text to Video).
RemarqueLes modèles varient selon les versions d'image ComfyUI. Si le modèle d'exemple n'est pas disponible, sélectionnez un autre modèle ou chargez un fichier de workflow depuis le système de fichiers local.
Une fois le workflow chargé, vous pouvez voir des erreurs concernant des modèles manquants. Vous pouvez ignorer ces erreurs (nous vous recommandons de sélectionner l'option pour ne plus afficher ce message).
-
Étant donné que les chemins d'accès aux modèles peuvent avoir changé, l'exécution directe du workflow peut produire l'erreur suivante :
Prompt outputs failed validation: UNETLoader: - Value not in list: unet_name: 'wan2.1_vace_14B_fp16.safetensors' not in (list of length 200) LoraLoader: - Value not in list: lora_name: 'Wan21_CausVid_14B_T2V_lora_rank32.safetensors' not in (list of length 364)Dans la section Load models here, resélectionnez
wan2.1_vace_14B_fp16.safetensorsdans le chargeur UNET etWan21_CausVid_14B_T2V_lora_rank32.safetensorsdans le chargeur LoRA. Une fois le workflow exécuté avec succès, la vidéo générée apparaît dans la section Save Video.

Utiliser des modèles et des nœuds personnalisés
-
Assurez-vous que le service dispose d'un point de montage de stockage configuré. Une fois le service déployé, le système crée automatiquement la structure de répertoires suivante dans le stockage OSS ou NAS monté.
data-oss/ ├── custom_nodes/ # Custom node files (ComfyUI plugins) ├── models/ # Model files ├── input/ ├── output/ ├── unet/ └── temp/ -
Téléchargez les fichiers de modèle ou de nœud. Par exemple, vous pouvez utiliser OSS et télécharger des fichiers vers OSS via la console. Pour les fichiers volumineux, consultez Comment télécharger de grands objets vers OSS ?.
-
Télécharger des fichiers de modèle : Consultez la documentation du dépôt source pour le nœud qui utilise le modèle, et téléchargez le modèle dans le sous-répertoire correspondant sous
models. Par exemple :Chargeur de checkpoint : Téléchargez les modèles vers
models/checkpoints.Chargeur de modèle de style : Téléchargez les modèles vers
models/styles.
Télécharger des fichiers de nœud : Téléchargez les nœuds personnalisés dans le répertoire
custom_nodesdu stockage monté.
-
-
Charger le nouveau contenu.
Modèles : En haut de la page, cliquez sur PaiCustom > Load New Models. Si le modèle n'apparaît toujours pas, cliquez sur PaiCustom > Restart Process. Une fois le processus redémarré, actualisez la page du navigateur.
Nœuds : Cliquez sur Restart Process. Une fois le processus redémarré, actualisez la page du navigateur.
Appeler le service via l'API
Vous pouvez appeler le service ComfyUI via son API pour l'intégrer à vos applications et automatiser la génération de contenu. Le flux de travail principal consiste à : soumettre un workflow JSON > obtenir un ID de tâche > utiliser cet ID de tâche pour récupérer le résultat de la génération.
Prise en charge par édition : L'édition Standard prend uniquement en charge les appels synchrones et offre des fonctionnalités de débogage en ligne. L'édition API ne prend en charge que les appels asynchrones et uniquement le point de terminaison /prompt.
Récupération des fichiers générés : Les images et vidéos générées sont stockées dans le répertoire
outputmonté. Les réponses de l'API renvoient les noms de fichiers et de sous-répertoires, et non les fichiers eux-mêmes. Pour OSS, construisez le chemin d'accès complet au fichier pour le télécharger. Pour plus d'informations, consultez la rubrique Télécharger des fichiers OSS à l'aide du SDK Alibaba Cloud.
Préparer le corps de la requête API
Le format du corps de la requête dépend de la méthode d'appel :
Appel synchrone : encapsulez le contenu JSON du workflow dans une paire clé-valeur
prompt.Appel asynchrone : le corps de la requête correspond directement au contenu JSON du workflow.
Comment télécharger un workflow : Dans le coin supérieur gauche de la page ComfyUI, cliquez sur
> File > Export (API).
Étant donné que le workflow Wan VACE Text to Video mentionné ci-dessus est long à exécuter, un workflow de test est fourni ci-après pour faciliter les tests (chaque exécution dure environ 3 minutes).
Appels synchrones
Les appels synchrones envoient des requêtes directement à l'instance de service PAI-EAS. Cette méthode convient aux scénarios de développement, de test et de faible concurrence.
Débogage en ligne
Le débogage en ligne vous permet de tester les appels d'API directement dans la console sans écrire de code. Cela s'avère utile pour valider rapidement les configurations de workflow.
Sur la page Elastic Algorithm Service (EAS), cliquez sur Online Debugging dans la colonne Actions du service cible pour ouvrir la page de débogage en ligne.
Appels basés sur le code
Vous pouvez appeler l'API par le biais de code pour intégrer ComfyUI à vos applications. Le flux de travail est identique à celui du débogage en ligne : obtenez d'abord l'ID de prompt, puis interrogez le résultat de l'inférence.
Appels asynchrones
Les appels asynchrones sont conçus pour les charges de travail de production à forte concurrence. Cette méthode utilise le service de file d'attente PAI-EAS pour l'équilibrage de charge. Les requêtes retournent immédiatement et vous récupérez les résultats en vous abonnant à la file d'attente de résultats.
Les appels asynchrones prennent uniquement en charge le point de terminaison api_prompt. Le paramètre task_id est un identifiant essentiel pour faire correspondre les requêtes aux résultats. Attribuez une valeur unique à chaque requête afin de pouvoir la corréler avec le résultat correspondant dans la file d'attente. Le chemin de la requête est le suivant :
{service_url}/api_prompt?task_id={assign a unique value}
FAQ
Vous trouverez ci-dessous les problèmes courants et leurs solutions lors du déploiement et de l'utilisation de ComfyUI.
Problèmes de déploiement
Q : Le service reste en attente ou ComfyUI ne génère aucune sortie
Ce problème est généralement dû à des ressources insuffisantes. Vérifiez que l'image du service et le type d'instance sont correctement configurés. Nous recommandons les types d'instance GPU GU30, NVIDIA A10 ou NVIDIA T4. Le type d'instance ml.gu7i.c16m60.1-gu30 offre le meilleur rapport qualité-prix.
Problèmes liés aux modèles et aux nœuds
Q : L'interface Web affiche une erreur « Missing Model »
Problème : Une boîte de dialogue intitulée Missing Model indique que le modèle situé dans checkpoints/v1-5-pruned-emaonly-fp16.safetensors est manquant, et un avertissement rouge à gauche affiche Invalid directory specified (does this require custom nodes?).
Solution : Vous pouvez ignorer cette erreur en toute sécurité. Cette vérification de validation ne s'applique pas à ComfyUI déployé sur PAI. Fiez-vous plutôt aux erreurs d'exécution réelles.
Nous vous recommandons de sélectionner l'option permettant de ne plus afficher ce message, ou de désactiver la validation des modèles dans Settings.
Q : J'ai téléchargé un nouveau modèle, mais je ne le trouve pas
Solution :
Cliquez sur PaiCustom et sélectionnez Load New Models.
Si le modèle n'apparaît toujours pas, cliquez sur Restart Process.
Q : Le chargeur de modèles affiche « undefined »
Commencez par vérifier que le fichier de modèle est placé dans le répertoire correct requis par le nœud de chargement de modèle.
Si vous avez téléchargé le modèle après le déploiement, redémarrez le service.
Q : Impossible de trouver un nœud
Pour les nœuds nouvellement installés, redémarrez le service.
Si le nœud n'est pas installé, consultez la section Utiliser des modèles personnalisés et installer des nœuds (plugins ComfyUI).
Q : ComfyUI Manager échoue à télécharger des modèles ou à installer des nœuds
Nous ne recommandons pas l'utilisation de ComfyUI Manager avec ComfyUI déployé sur PAI-EAS. ComfyUI Manager télécharge des modèles et du code de plugin depuis des sources externes telles que GitHub, ce qui échoue fréquemment en raison des restrictions réseau.
Préférez le téléchargement des fichiers de modèles et de nœuds vers le stockage monté. Pour plus d'informations, consultez la section Utiliser des modèles personnalisés et installer des nœuds (plugins ComfyUI).
Q : Comment afficher les fichiers de modèles et les nœuds disponibles (plugins ComfyUI)
Fichiers de modèles : Vérifiez-les depuis le nœud de chargement de modèle correspondant. Par exemple, affichez les fichiers de modèles disponibles dans la liste déroulante du chargeur de points de contrôle (Checkpoint loader).
Nœuds : Cliquez avec le bouton droit sur la page de l'interface Web et sélectionnez Add Node dans le menu contextuel pour afficher tous les plugins ComfyUI installés.
Erreurs d'exécution
Q : La page se fige ou met trop de temps à charger
Actualisez la page, videz le cache du navigateur ou accédez au service en mode navigation privée.
Si le stockage est monté, supprimez les fichiers des répertoires
input/,output/ettemp/.Essayez de redémarrer le service.
Q : Le processus redémarre au milieu du workflow
Si les journaux de l'instance contiennent run.sh: line 54: 531285 Killed python -u main_run.py "$@", le processus a été arrêté en raison d'une condition de manque de mémoire (OOM). Le processus redémarre automatiquement après un événement OOM.
Q : RuntimeError: CUDA error: out of memory
Cela signifie que la mémoire GPU est épuisée. Pour les modèles d'images, réduisez la résolution de l'image ou la taille du lot. Pour les modèles vidéo, réduisez le nombre d'images ou la résolution.
Q : L'appel API renvoie « url not found » ou « 404 page not found »
Vérifiez que l'URL du endpoint API est complète. Pour les appels synchrones, vous devez ajouter le chemin
/prompt.
Autres
Q : Performances de l'accélération xFormers
xFormers est un outil d'accélération open source basé sur Transformer qui réduit le temps de génération d'images et de vidéos ainsi que l'utilisation de la mémoire GPU.
Les images ComfyUI ont l'accélération xFormers activée par défaut. L'effet d'accélération dépend de la taille du workflow, avec des améliorations plus notables sur les opérations gourmandes en GPU, en particulier avec les GPU NVIDIA.
Étapes suivantes
Après avoir déployé le service ComfyUI, vous pouvez :
Surveillance du service : Configurez la surveillance et les alertes pour suivre l'état du service en temps réel. Pour plus d'informations, consultez la section Afficher les métriques de surveillance du service.
Auto Scaling : Configurez des politiques Auto Scaling basées sur la charge de travail pour optimiser l'utilisation des ressources et les coûts. Pour plus d'informations, consultez la section Auto Scaling.
Optimisation des coûts : Comprenez les méthodes de facturation de PAI-EAS et choisissez le type d'instance et l'édition de déploiement appropriés pour réduire les coûts. Pour plus d'informations, consultez la section Présentation de la facturation.
Référence
Installer des packages Python
Installer un package .whl en exécutant une commande
Assurez-vous que le service dispose d'un montage de stockage configuré. Par exemple, supposons que le chemin OSS (URI) soit
oss://examplebucket/comfyui/et que le chemin de montage soit/mnt/data/.Téléchargez le fichier
.whldans le répertoireoss://examplebucket/comfyui/models/whl. Si le répertoirewhln'existe pas, créez-le d'abord.Mettez à jour la section Command to Run du service : ajoutez
pip install /mnt/data/models/whl/xxx.whlau début de la commande d'exécution. Dans cette commande,/mnt/dataest le chemin de montage OSS, et xxx.whl est le nom du package .whl.Redémarrez le service.
Installer des packages via la configuration de bibliothèques tierces
Sur la page des détails du service, cliquez sur Update dans le coin supérieur droit.
Si le service a été déployé via un déploiement de modèle basé sur un scénario, passez au déploiement de modèle personnalisé.
Dans la section Environment Information , configurez les dépendances dans la zone Third-party Library Configuration.
Cliquez sur Update en bas de la page pour appliquer la mise à jour.
Mettre à jour la version de l'image
Si le service dispose d'un stockage OSS ou NAS monté, les modèles personnalisés sont stockés dans le stockage OSS ou NAS et ne sont pas affectés par une mise à jour de la version de l'image.
Sur la page des détails du service, cliquez sur Update dans le coin supérieur droit.
Si le service a été déployé via un déploiement de modèle basé sur un scénario, passez au déploiement de modèle personnalisé.
Dans la section Service Configuration , modifiez la configuration JSON et mettez à jour le champ
imagesouscontainersvers la version souhaitée (par exemple, changez 1.9 par la version cible).Cliquez sur Update Directly.
Générer une URL sans connexion avec une période de validité personnalisée
Vous pouvez utiliser une API pour générer une URL d'accès Web sans connexion avec une période de validité spécifiée.
Accédez à la page de l'API DescribeServiceSignedUrl.
Sélectionnez le endpoint du service.
-
Définissez les paramètres suivants :
-
ClusterId (Region) et ServiceName : Saisissez la région et le nom du service.
Sur la page de présentation du service EAS, le champ Service Name affiche la valeur ServiceName. La région est intégrée dans l'adresse de l'image du nœud (par exemple,
cn-hangzhoucorrespond à la valeur de région ClusterId). Vous pouvez cliquer sur View Web Application dans le coin supérieur droit pour ouvrir le service. Type (Page type) : Sélectionnez webview dans la liste déroulante.
Expire (Expiration time) : Saisissez un entier en secondes. La valeur maximale est de 43 200 secondes (12 heures). Définissez cette valeur selon vos besoins.
Internal (VPC access) : Définissez sur false (accès public) ou true (accès VPC).
-
Cliquez sur Call API. Le champ
SignedUrldans la réponse contient l'URL d'accès Web sans connexion.
Modifier la langue par défaut de l'interface Web
Sur la page de l'interface Web, cliquez sur le bouton Settings dans le coin inférieur gauche.
-
Configurez la langue aux deux emplacements suivants, puis actualisez et rechargez la page.
Comfy > Locale.
Language > Locale.
Annexe
Fonctionnement de l'édition Cluster
Le diagramme suivant illustre l'architecture :
L'édition Cluster est conçue pour les scénarios multi-utilisateurs. Elle introduit une couche proxy qui découple les clients des instances d'inférence backend.
Chaque utilisateur dispose d'un environnement backend et d'un répertoire de travail indépendants, mais partage le pool d'instances d'inférence GPU backend.
Lorsqu'un utilisateur envoie une requête d'inférence, le proxy sélectionne une instance disponible dans le pool pour traiter la requête.
Ce mécanisme de multiplexage temporel isole les environnements utilisateur tout en maximisant l'utilisation des ressources GPU et en réduisant les coûts d'inférence dans les scénarios multi-utilisateurs.
