EasyAnimate, Alibaba Cloud PAI tarafından Diffusion Transformer (DiT) mimarisine dayalı olarak geliştirilen bir video oluşturma çerçevesidir. Metin veya görüntülerden yüksek çözünürlüklü (HD), uzun formatlı videolar oluşturmak için eksiksiz bir çözüm sunar ve kişiselleştirme amacıyla model ince ayarı yapma yetenekleri içerir.
Çözümler
|
|
|
|
|
|
|
|
|
|
|
1. Çözüm: DSW kullanarak videolar oluşturun
1. Adım: Bir DSW örneği oluşturun
PAI konsoluna giriş yapın ve bir bölge seçin. Sol gezinme bölmesinde Workspaces öğesini tıklayın, ardından hedef çalışma alanınızın adını bulup tıklayın.
Sol gezinme bölmesinde DSW sayfasına gitmek için Model Training > Interactive Modeling (DSW) öğelerini tıklayın.
-
Create instance öğesini tıklayın ve aşağıdaki ana parametreleri yapılandırın. Diğer parametreleri varsayılan değerlerinde bırakın.
Parametre
Açıklama
Instance Name
Örnek: AIGC_test_01.
Resource TypePublic Resources seçeneğini belirleyin.
Instance Type
GPU Specs altındaecs.gn7i-c8g1.2xlargeveya başka bir A10 ya da GU100 örnek türünü seçin.
ImageAlibaba Cloud Image seçeneğini belirleyin, ardından
easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04görüntüsünü aratıp seçin. Örneği oluşturmak için OK öğesini tıklayın ve örnek durumunun Running olarak değişmesini bekleyin.
2. Adım: EasyAnimate eğitimini ve modelini indirin
Hedef DSW örneğinin Actions sütununda, geliştirme ortamına girmek için Open öğesini tıklayın.
Notebook sekmesinde Launcher sayfasını açın ve DSW Gallery öğesini tıklayın.
-
DSW Gallery'de AI Video Generation with EasyAnimate (V5) ifadesini aratın. Bu eğitim için gereken kaynakları DSW örneğine indirmek üzere Open in DSW öğesini tıklayın.
EasyAnimate için AI video oluşturma örneği birden çok sürümde mevcuttur. Bu eğitimde örnek olarak V5 kullanılmaktadır.
-
EasyAnimate kodunu ve modelini indirip yükleyin.
EasyAnimate eğitim dosyasında, sırasıyla Function Definition, Download Code ve Download Model başlıklı hücreleri çalıştırmak için
simgesini tıklayın.
3. Adım: WebUI'yi başlatın ve bir video oluşturun
WebUI hizmetini başlatan Launch UI başlıklı hücreyi çalıştırmak için
simgesini tıklayın.-
WebUI'yi açmak için oluşturulan bağlantıyı tıklayın.
!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()`. -
WebUI'de önceden eğitilmiş modelin yolunu seçin ve diğer parametreleri ihtiyaca göre yapılandırın.
Pretrained Model Path açılır listesinden
/mnt/workspace/demos/easyanimate_v5/EasyAnimate/models/Diffusion_Transformer/EasyAnimateV5-12b-zh-InP/yolunu seçin. Generate öğesini tıklayın. Yaklaşık 5 dakika sonra, sağ tarafta oluşturulan videoyu görüntüleyebilir veya indirebilirsiniz.
2. Çözüm: Model Galerisi kullanarak videolar oluşturun
1. Adım: Önceden eğitilmiş modeli dağıtın
PAI konsoluna giriş yapın ve bir bölge seçin. Sol gezinme bölmesinde Workspaces öğesini tıklayın, ardından hedef çalışma alanınızın adını bulup tıklayın.
Sol gezinme bölmesinde Quick Start > Model Gallery yolunu izleyin. EasyAnimate HD Long Video Generation Model ifadesini aratın, Deploy öğesini tıklayın, varsayılan yapılandırmaları kullanın ve dağıtımı onaylayın. Hizmet durumu Running olarak değiştiğinde model başarıyla dağıtılmış olur.
2. Adım: WebUI veya API kullanarak videolar oluşturun
Modeli dağıttıktan sonra, hizmeti WebUI veya bir API aracılığıyla çağırarak videolar oluşturabilirsiniz.
Dağıtım görevi ayrıntılarını daha sonra görüntülemek için sol gezinme bölmesinde Model Gallery > Job Management > Deployment Jobs yolunu izleyin ve ardından Service name öğesini tıklayın.
WebUI
Service details sayfasında View Web App öğesini tıklayın.
-
WebUI'de önceden eğitilmiş modelin yolunu seçin ve diğer parametreleri ihtiyaca göre yapılandırın.
Örneğin, Pretrained Model Path açılır listesinde
/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512/yolunu seçin. -
Generate öğesini tıklayın. Yaklaşık 5 dakika sonra, sağ tarafta oluşturulan videoyu görüntüleyebilir veya indirebilirsiniz.
Oluşturma tamamlandığında, sağ alt köşedeki Generation Info alanında Success ifadesi görünür; bu, videonun başarıyla oluşturulduğunu gösterir.
API
Service details sayfasında, Resource Details bölümünde hizmet uç noktasını ve belirteci almak için View Call Information öğesini tıklayın.
-
Video oluşturmak için hizmeti çağırın. Aşağıdaki Python kodu örnek bir istek sağlamaktadır:
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}")
3. Adım: (İsteğe bağlı) Modelde ince ayar yapın
Belirli stillere veya içeriğe sahip videolar oluşturmak için modeli özel bir veri kümesi üzerinde ince ayar yapabilirsiniz. Şu adımları izleyin:
PAI konsoluna giriş yapın. Sol gezinme bölmesinde Workspaces öğesini tıklayın, ardından hedef çalışma alanınızın adını bulup tıklayın.
Sol gezinme bölmesinde Quick Start > Model Gallery yolunu izleyin.
Model Gallery'de EasyAnimate HD Long Video Generation Model ifadesini aratın ve yapılandırma sayfasını açmak için Fine-tune öğesini tıklayın.
-
Source öğesini Public Resources olarak ayarlayın. Instance type için A10 veya daha yüksek GPU'ya sahip bir örnek seçin. Hiperparametreleri ihtiyaca göre yapılandırın ve diğer parametreler için varsayılan değerleri koruyun.
Modeli özel bir veri kümesiyle ince ayar yapmak için aşağıdaki kılavuzu kullanın:
-
Eğitim görevini oluşturmak için Train > Confirm öğelerini tıklayın. Bu eğitimdeki yapılandırmayla eğitim süreci yaklaşık 40 dakika sürer. Görev durumu Successful olarak değiştiğinde model eğitimi tamamlanır.
Eğitim görevi ayrıntılarını daha sonra görüntülemek için sol gezinme bölmesinde Model Gallery > Job Management > Training Jobs yolunu izleyin ve ardından görev adını tıklayın.
Sağ üst köşede, ince ayar yapılmış modeli dağıtmak için Deploy öğesini tıklayın. Durum Running olarak değiştiğinde dağıtım tamamlanır.
-
Service details sayfasında, sayfanın üst kısmındaki View WEB Application öğesini tıklayın.
Hizmet ayrıntılarını daha sonra görüntülemek için sol gezinme bölmesinde Model Gallery > Job Management > Deployment Jobs yolunu izleyin ve ardından Service name öğesini tıklayın.
-
WebUI'de, videolar oluşturmak için eğitilen LoRA modelini seçin. API kullanımı için bkz. 2. Adım.
Model checkpoints bölümünde, Select LoRA model açılır listesinden LoRA modelini seçin ve LoRA alpha kaydırıcısını kullanarak ağırlığını ayarlayın.
Üretim önerileri
-
Maliyetleri düşürmek için örnekleri veya hizmetleri durdurun: Bu eğitim, genel kaynakları kullanarak DSW örnekleri ve EAS model hizmetleri oluşturur. Daha fazla ücretlendirilmeyi önlemek için, artık ihtiyaç duymadığınızda bu örnekleri ve hizmetleri durdurun veya silin.
Interactive Modeling (DSW) sayfasında hedef örneği bulun. Actions sütununda, çalışan bir örneği durdurmak için Stop öğesini veya durdurulmuş bir örneği silmek için Delete öğesini tıklayın.
Model Gallery sayfasında Task Management sekmesini tıklayın ve ardından Deployment Tasks alt sekmesine gidin. Hedef hizmeti bulun ve Actions sütununda Stop veya Delete öğesini tıklayın.
-
Üretim dağıtımı için EAS kullanın: Üretim ortamları için, modeli EAS'a tek tıklamayla dağıtmak üzere 2. Çözümü kullanın. 1. Çözümü kullandıysanız, özel bir çalışma zamanı görüntüsü oluşturarak modeli EAS'a dağıtabilirsiniz. Daha fazla bilgi için bkz. Modelleri çevrimiçi hizmetler olarak dağıtma.
EAS, üretim iş yükleri için aşağıdaki özellikleri sunar:
Hizmet uç noktasının destekleyebileceği eşzamanlılık düzeyini test etmek için EAS'ın yük testi özelliğini kullanın.
Trafik artışlarını ve düşüşlerini yönetmek için örnekleri otomatik olarak ölçeklendiren ve hizmetin kararlı çalışmasını sağlayan EAS'ın otomatik ölçeklendirme özelliğini kullanın.
Hizmet sağlığını gerçek zamanlı olarak izlemek ve sistem kararlılığını ile güvenliği artırmak için EAS'ın günlük izleme ve uyarı özelliğini kullanın.
Referanslar
EAS, ComfyUI ve Stable Video Diffusion modellerine dayalı AI video oluşturma hizmetlerinin tek tıklamayla dağıtılması için senaryo tabanlı bir dağıtım yöntemi sunar. Daha fazla bilgi için bkz. AI Video Oluşturma - ComfyUI Dağıtımı.