novitalabs/comfyui-worker:v0.0.1 comme exemple pour montrer comment créer et appeler un endpoint serverless asynchrone.
1. Préparer l’image de conteneur
Packagez votre environnement d’exécution dans une image Docker et téléversez-la à l’avance dans un registre d’images. Les registres d’images publics et privés sont pris en charge. Les registres privés nécessitent des identifiants pour l’extraction de l’image.- Vous pouvez téléverser votre image sur Docker Hub. La plateforme fournit actuellement un service de préchauffage d’image pour les images Docker Hub.
novitalabs/comfyui-worker:v0.0.1. L’image inclut ComfyUI et le SDK worker Novita. L’entrée de la tâche est un JSON de workflow ComfyUI, et le gestionnaire du worker renvoie les résultats d’images générées. Nous recommandons de configurer des variables d’environnement de stockage objet telles que BUCKET_ENDPOINT_URL, afin que les images et vidéos générées puissent être téléversées dans votre bucket et renvoyées sous forme d’URL dans la sortie du job.
2. Sélectionner la spécification d’instance
L’endpoint serverless asynchrone prend actuellement en charge les types d’instances GPU suivants :- RTX 4090 24GB
- H100 SXM 80GB
comfyui-worker, nous recommandons RTX 4090 24GB.
Pour des besoins supplémentaires, contactez-nous.
3. Créer un stockage cloud (facultatif)
Si vous avez besoin d’un stockage partagé ou persistant, créez un stockage cloud sur la page de gestion du stockage, puis montez le stockage lors de la création de l’endpoint. Pour plus de détails, consultez Gérer le stockage cloud.4. Créer l’endpoint
- Accédez à la page Async Serverless GPUs, sélectionnez un type d’instance, puis cliquez sur « Create Endpoint ».
- Complétez la configuration des paramètres de l’endpoint.
- Nom de l’endpoint : utilisé pour identifier l’endpoint de manière unique. Il fait partie de l’URL lors de la création de jobs. Le système génère un nom par défaut aléatoire. Vous pouvez le personnaliser, mais il est recommandé d’utiliser le nom par défaut.
- Configuration du worker
| Élément de configuration | Description |
|---|---|
| Nombre minimal de workers | Le nombre minimal d’instances de worker à conserver pour l’endpoint. Définir un minimum plus élevé aide à réduire le temps de démarrage à froid. S’il est défini sur 0, il n’y aura aucun worker inactif lorsqu’il n’y a pas de requêtes, ce qui peut augmenter la latence de réponse pour les nouvelles requêtes. Utilisez 0 avec prudence pour les scénarios sensibles à la latence. |
| Nombre maximal de workers | Le nombre maximal d’instances de worker jusqu’auquel l’endpoint peut évoluer. Lorsque le volume de requêtes augmente, la plateforme augmente automatiquement le nombre de workers jusqu’à ce maximum. Cette limite aide à contrôler les coûts. |
| Délai d’inactivité (secondes) | Lorsqu’un worker est sur le point d’être libéré en raison d’une réduction d’échelle, la plateforme le conserve pendant le délai d’inactivité configuré afin qu’il puisse répondre rapidement aux nouvelles requêtes. Vous êtes facturé pour le worker pendant cette période. |
| Nombre maximal de requêtes simultanées | Le nombre maximal de requêtes simultanées gérées par un worker. Si ce nombre est dépassé, les requêtes sont routées vers d’autres workers. Si tous les workers sont entièrement occupés, les requêtes en excès sont mises en file d’attente jusqu’à ce que l’exécution soit possible. |
| GPU / worker | Nombre de cartes GPU allouées à chaque worker. |
| Version de CUDA | Version de CUDA utilisée par le worker. |
GPUs / Worker sur 1.
- Type :
- Sélectionnez Async.
- Politique d’élasticité :
- Sélectionnez Queue request policy.
- Définissez Single worker target concurrency sur
1. Le worker ComfyUI de cet exemple traite un job à la fois. Lorsque les requêtes en file d’attente dépassent la capacité actuelle des workers, la plateforme met à l’échelle les workers en fonction du nombre de requêtes dans la file, jusqu’à atteindre le nombre maximal de workers.
- Configuration de l’image :
- Adresse de l’image :
novitalabs/comfyui-worker:v0.0.1. - Identifiants du dépôt d’images : si l’image est privée, fournissez les identifiants d’extraction de l’image. Vous pouvez créer des identifiants sur la page de gestion des identifiants de sécurité.
- Port HTTP : port HTTP du worker.
- Commande de démarrage du conteneur : commande exécutée au démarrage du conteneur.
- Adresse de l’image :
- Configuration du stockage :
- Disque système : taille du disque système par instance de worker.
- Stockage cloud : sélectionnez un stockage cloud si vous devez le monter. Pour plus de détails, consultez Gérer le stockage cloud.
- Autre :
- Chemin de vérification de l’état : ce paramètre n’est actuellement pas activé.
- Variables d’environnement : définissez les variables d’environnement requises par le service. Exemple de configuration S3 :
comfyui-worker, nous recommandons fortement de configurer le stockage objet afin que les images de sortie soient téléversées dans un bucket et renvoyées sous forme d’URL.
- Vérifiez la tarification et cliquez sur « Deploy with One Click ».
5. Accéder au service
- Sur la page Async Serverless GPUs, recherchez l’endpoint nouvellement créé et assurez-vous que son statut est « Running ».
- Assurez-vous qu’au moins un worker de l’endpoint est en cours d’exécution.
- Assurez-vous de disposer d’une clé API pour l’authentification. Le créateur de l’endpoint et le propriétaire de la clé API doivent appartenir à la même équipe.
Obtenir une clé API :
- Connectez-vous à la console Novita.
- Accédez à la page API Key / Key Management.
- Créez une clé API et copiez la valeur
sk_...générée. - Assurez-vous que le propriétaire de la clé API et le propriétaire de l’endpoint sont dans la même équipe.
5.1 Créer un job et récupérer la sortie via Curl
La requête suivante est un exemplecomfyui-worker exécutable et correspond au cas testé. Remplacez 0f43a6867e05fddd dans l’URL par le vrai nom de votre endpoint, et remplacez sk_xxxx par votre vraie clé API.
La taille maximale de job acceptée par l’endpoint serverless asynchrone est de 4 MiB.
id est le job_id :
La taille maximale de sortie renvoyée par l’API
status de l’endpoint serverless asynchrone est de 4 MiB. Pour éviter cette limitation, configurez les variables d’environnement de stockage objet et renvoyez dans la sortie les URL des fichiers téléversés.Les résultats des jobs sont conservés dans l’endpoint serverless asynchrone pendant jusqu’à 6 heures après la fin de l’exécution.5.2 Créer un job et obtenir les résultats via le SDK Novita
Installez le SDK :novita-gpus est https://async-public.serverless.novita.ai/v1.