EasyAnimate est un framework de génération vidéo développé par Alibaba Cloud PAI, basé sur l'architecture Diffusion Transformer (DiT). Il propose une solution complète pour générer des vidéos haute définition (HD) et longues à partir de texte ou d'images, et inclut des fonctionnalités d'affinage de modèles pour la personnalisation.
Solutions
|
Solution |
Avantages et cas d'utilisation |
Facturation |
|
Fournit un environnement de développement intégré (IDE) cloud avec des tutoriels et du code intégrés. Cette solution convient aux utilisateurs souhaitant explorer les modèles en profondeur ou effectuer un développement personnalisé. |
Ce tutoriel crée une instance DSW utilisant des ressources publiques, facturée selon le modèle de paiement à l'utilisation. Pour plus d'informations, consultez la rubrique Facturation DSW. |
|
|
Aucune configuration d'environnement n'est requise. Vous pouvez déployer ou affiner les modèles en un clic, puis les appeler via une WebUI ou une API. Cette solution est idéale pour une validation rapide ou une intégration applicative. |
Ce tutoriel crée un service EAS pour le déploiement de modèles et une tâche DLC pour l'affinage de modèles. Les deux utilisent des ressources publiques et sont facturés selon le modèle de paiement à l'utilisation. Pour plus d'informations, consultez les rubriques Facturation DLC et Facturation EAS. |
Solution 1 : Générer des vidéos avec DSW
Étape 1 : Créer une instance DSW
Connectez-vous à la console PAI et sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Workspaces, puis recherchez et cliquez sur le nom de votre espace de travail cible.
Dans le volet de navigation de gauche, cliquez sur Model Training > Interactive Modeling (DSW) pour accéder à la page DSW.
-
Cliquez sur Create instance et configurez les paramètres clés suivants. Laissez les autres paramètres avec leurs valeurs par défaut.
Paramètre
Description
Instance Name
Exemple : AIGC_test_01.
Resource Type
Sélectionnez Public Resources.
Instance Type
Sous GPU Specs, sélectionnez
ecs.gn7i-c8g1.2xlargeou un autre type d'instance A10 ou GU100.Image
Sélectionnez Alibaba Cloud Image, puis recherchez et sélectionnez
easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04. Cliquez sur OK pour créer l'instance et attendez que le statut de l'instance passe à Running.
Étape 2 : Télécharger le tutoriel et le modèle EasyAnimate
Dans la colonne Actions de l'instance DSW cible, cliquez sur Open pour entrer dans l'environnement de développement.
Dans l'onglet Notebook, ouvrez la page Launcher et cliquez sur DSW Gallery.
-
Dans DSW Gallery, recherchez AI Video Generation with EasyAnimate (V5). Cliquez sur Open in DSW pour télécharger les ressources requises pour ce tutoriel sur l'instance DSW.
L'exemple de génération vidéo IA pour EasyAnimate est disponible en plusieurs versions. Ce tutoriel utilise la V5 à titre d'exemple.
-
Téléchargez et installez le code et le modèle EasyAnimate.
Dans le fichier de tutoriel EasyAnimate, cliquez sur
pour exécuter séquentiellement les cellules intitulées Function Definition, Download Code et Download Model.
Étape 3 : Lancer la WebUI et générer une vidéo
Cliquez sur
pour exécuter la cellule intitulée Launch UI, ce qui démarre le service WebUI.-
Cliquez sur le lien généré pour ouvrir la WebUI.
!python app.py /mnt/workspace/demos/easyanimate_v5_1/EasyAnimate/easyanimate/ui/ui.py:892: GradioUnusedKwargWarning: You have unused kwarg parameters in Video, please remove them: {'sources': 'upload'} control_video = gr.Video() /usr/local/lib/python3.10/dist-packages/gradio/utils.py:842: UserWarning: Expected 2 arguments for function <function ui.<locals>.upload_generation_method at 0x7fe5b79b79a0>, received 1. warnings.warn() /usr/local/lib/python3.10/dist-packages/gradio/utils.py:846: UserWarning: Expected at least 2 arguments for function ui.<locals>.upload_generation_method at 0x7fe5b79b79a0>, received 1. warnings.warn() Running on local URL: http://0.0.0.0:7860 IMPORTANT: You are using gradio version 3.41.2, however version 4.44.1 is available, please upgrade. -------- To create a public link, set `share=True` in `launch()`. -
Dans la WebUI, sélectionnez le chemin du modèle pré-entraîné et configurez les autres paramètres selon vos besoins.
Dans la liste déroulante Pretrained Model Path, sélectionnez
/mnt/workspace/demos/easyanimate_v5/EasyAnimate/models/Diffusion_Transformer/EasyAnimateV5-12b-zh-InP/. Cliquez sur Generate. Après environ 5 minutes, vous pouvez consulter ou télécharger la vidéo générée sur la droite.
Solution 2 : Générer des vidéos avec Model Gallery
Étape 1 : Déployer le modèle pré-entraîné
Connectez-vous à la console PAI et sélectionnez une région. Dans le volet de navigation de gauche, cliquez sur Workspaces, puis recherchez et cliquez sur le nom de votre espace de travail cible.
Dans le volet de navigation de gauche, cliquez sur Quick Start > Model Gallery. Recherchez EasyAnimate HD Long Video Generation Model, cliquez sur Deploy, utilisez les configurations par défaut, puis confirmez le déploiement. Lorsque le statut du service passe à Running, le modèle est déployé avec succès.
Étape 2 : Générer des vidéos via la WebUI ou l'API
Après avoir déployé le modèle, vous pouvez générer des vidéos en appelant le service via la WebUI ou une API.
Pour consulter ultérieurement les détails de la tâche de déploiement, dans le volet de navigation de gauche, cliquez sur Model Gallery > Job Management > Deployment Jobs , puis cliquez sur le Service name .
WebUI
Sur la page Service details, cliquez sur View Web App.
-
Dans la WebUI, sélectionnez le chemin du modèle pré-entraîné et configurez les autres paramètres selon vos besoins.
Par exemple, dans la liste déroulante Pretrained Model Path, sélectionnez
/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512/. -
Cliquez sur Generate. Après environ 5 minutes, vous pouvez consulter ou télécharger la vidéo générée sur la droite.
Une fois la génération terminée, la zone Generation Info en bas à droite affiche Success, indiquant que la vidéo a été générée avec succès.
API
Sur la page Service details, dans la section Resource Details, cliquez sur View Call Information pour obtenir le point de terminaison du service et le jeton.
-
Appelez le service pour générer une vidéo. Le code Python suivant fournit un exemple de requête :
import os import requests import json import base64 from typing import Dict, Any class EasyAnimateClient: """ API client for the EasyAnimate EAS service. """ def __init__(self, service_url: str, token: str): if not service_url or not token: raise ValueError("The `service_url` and `token` parameters cannot be empty.") self.base_url = service_url.rstrip('/') self.headers = { 'Content-Type': 'application/json', 'Authorization': token } def update_model(self, model_path: str, edition: str = "v3", timeout: int = 300) -> Dict[str, Any]: """ Updates and loads the specified model version and path. Args: model_path: The path to the model within the service, such as "/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512". edition: The model version. Defaults to "v3". timeout: The request timeout in seconds. A longer timeout is recommended as model loading can be slow. """ # 1. Update the version. requests.post( f"{self.base_url}/easyanimate/update_edition", headers=self.headers, json={"edition": edition}, timeout=timeout ).raise_for_status() # 2. Update the model path and wait for it to load. print(f"Sending request to load model: {model_path}") response = requests.post( f"{self.base_url}/easyanimate/update_diffusion_transformer", headers=self.headers, json={"diffusion_transformer_path": model_path}, timeout=15000 ) response.raise_for_status() return response.json() def generate_video(self, prompt_textbox: str, **kwargs) -> bytes: """ Generates a video based on a prompt. Args: prompt_textbox: The positive prompt in English. **kwargs: Other optional parameters. See the parameter description table below. Returns: The binary data of the video in MP4 format. """ payload = { "prompt_textbox": prompt_textbox, "negative_prompt_textbox": kwargs.get("negative_prompt", "The video is not of a high quality, it has a low resolution..."), "width_slider": kwargs.get("width_slider", 672), "height_slider": kwargs.get("height_slider", 384), "length_slider": kwargs.get("length_slider", 144), "sample_step_slider": kwargs.get("sample_step_slider", 30), "cfg_scale_slider": kwargs.get("cfg_scale_slider", 6.0), "seed_textbox": kwargs.get("seed_textbox", 43), "sampler_dropdown": kwargs.get("sampler_dropdown", "Euler"), "generation_method": "Video Generation", "is_image": False, "lora_alpha_slider": 0.55, "lora_model_path": "none", "base_model_path": "none", "motion_module_path": "none" } response = requests.post( f"{self.base_url}/easyanimate/infer_forward", headers=self.headers, json=payload, timeout=1500 ) response.raise_for_status() result = response.json() if "base64_encoding" not in result: raise ValueError(f"Invalid API response format: {result}") return base64.b64decode(result["base64_encoding"]) # --- Example Usage --- if __name__ == "__main__": try: # 1. Configure the service information. Replace the placeholders with your actual service endpoint and token. We recommend setting them as environment variables. EAS_URL = "<eas-service-url>" EAS_TOKEN = "<eas-service-token>" # 2. Create the client. client = EasyAnimateClient(service_url=EAS_URL, token=EAS_TOKEN) # 3. Load the model. By default, no model is loaded after service deployment. You must call `update_model` at least once to specify the model to use before sending a generation request. To switch models later, call this method again. client.update_model(model_path="/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512") # 4. Generate the video. video_bytes = client.generate_video( prompt_textbox="A beautiful cat playing in a sunny garden, high quality, detailed", width_slider=672, height_slider=384, length_slider=72, sample_step_slider=20 ) # 5. Save the video file. with open("api_generated_video.mp4", "wb") as f: f.write(video_bytes) print("Video saved successfully as api_generated_video.mp4") except requests.RequestException as e: print(f"Network request error: {e}") except (ValueError, KeyError) as e: print(f"Data or parameter error: {e}") except Exception as e: print(f"An unknown error occurred: {e}")
Étape 3 : (Facultatif) Affiner le modèle
Vous pouvez affiner le modèle sur un jeu de données personnalisé pour générer des vidéos avec des styles ou du contenu spécifiques. Suivez ces étapes :
Connectez-vous à la console PAI. Dans le volet de navigation de gauche, cliquez sur Workspaces, puis recherchez et cliquez sur le nom de votre espace de travail cible.
Dans le volet de navigation de gauche, cliquez sur Quick Start > Model Gallery.
Dans Model Gallery, recherchez EasyAnimate HD Long Video Generation Model et cliquez sur Fine-tune pour ouvrir la page de configuration.
-
Définissez Source sur Public Resources. Pour Instance type, sélectionnez une instance dotée d'un GPU A10 ou supérieur. Configurez les hyperparamètres selon vos besoins et conservez les valeurs par défaut pour les autres paramètres.
Pour affiner le modèle avec un jeu de données personnalisé, suivez les instructions ci-dessous :
-
Cliquez sur Train > Confirm pour créer la tâche d'entraînement. Avec la configuration de ce tutoriel, le processus d'entraînement prend environ 40 minutes. Lorsque le statut de la tâche passe à Successful, l'entraînement du modèle est terminé.
Pour consulter ultérieurement les détails de la tâche d'entraînement, dans le volet de navigation de gauche, cliquez sur Model Gallery > Job Management > Training Jobs , puis cliquez sur le nom de la tâche.
Dans le coin supérieur droit, cliquez sur Deploy pour déployer le modèle affiné. Lorsque le statut passe à Running, le déploiement est terminé.
-
Sur la page Service details, cliquez sur View WEB Application en haut de la page.
Pour consulter ultérieurement les détails du service, dans le volet de navigation de gauche, cliquez sur Model Gallery > Job Management > Deployment Jobs , puis cliquez sur le Service name .
-
Dans la WebUI, sélectionnez le modèle LoRA entraîné pour générer des vidéos. Pour l'utilisation de l'API, consultez Étape 2.
Dans la section Model checkpoints, sélectionnez le modèle LoRA dans la liste déroulante Select LoRA model et définissez son poids à l'aide du curseur LoRA alpha.
Recommandations de production
-
Arrêtez les instances ou les services pour réduire les coûts : Ce tutoriel crée des instances DSW et des services de modèles EAS en utilisant des ressources publiques. Pour éviter des frais supplémentaires, arrêtez ou supprimez ces instances et services lorsque vous n'en avez plus besoin.
Sur la page Interactive Modeling (DSW), recherchez l'instance cible. Dans la colonne Actions, cliquez sur Stop pour arrêter une instance en cours d'exécution, ou cliquez sur Delete pour supprimer une instance arrêtée.
Sur la page Model Gallery, cliquez sur l'onglet Task Management, puis sur le sous-onglet Deployment Tasks. Recherchez le service cible et cliquez sur Stop ou Delete dans la colonne Actions.
-
Utilisez EAS pour le déploiement en production : Pour les environnements de production, utilisez la Solution 2 pour déployer le modèle sur EAS en un clic. Si vous avez utilisé la Solution 1, vous pouvez déployer le modèle sur EAS en créant une image d'exécution personnalisée. Pour plus d'informations, consultez la rubrique Déployer des modèles en tant que services en ligne.
EAS offre les fonctionnalités suivantes pour les charges de travail de production :
Utilisez la fonctionnalité de tests de charge d'EAS pour tester le niveau de concurrence que le point de terminaison du service peut prendre en charge.
Utilisez la fonctionnalité de mise à l'échelle automatique d'EAS pour adapter automatiquement les instances afin de gérer les pics et les creux de trafic, garantissant ainsi un fonctionnement stable du service.
Utilisez la fonctionnalité de surveillance des journaux et d'alerte d'EAS pour suivre en temps réel l'état de santé du service et améliorer la stabilité et la sécurité du système.
Références
EAS propose une méthode de déploiement basée sur des scénarios pour déployer en un clic des services de génération vidéo IA basés sur ComfyUI et les modèles Stable Video Diffusion. Pour plus d'informations, consultez la rubrique Génération vidéo IA - Déploiement ComfyUI.