EasyAnimate是阿里雲PAI基於Diffusion Transformer(DiT)架構自主研發的視頻產生架構。它提供了一套完整的解決方案,支援通過文本或圖片快速產生高清長視頻,並包含模型微調功能以滿足個人化需求。
方案介紹
方案 | 優勢和適用情境 | 計費說明 |
提供雲端整合式開發環境(IDE),內建教程和代碼。適合需要深入瞭解模型、進行二次開發的情境。 | 本教程將使用公用資源建立DSW執行個體,其採用隨用隨付模式。更多計費詳情請參見DSW計費說明。 | |
無需關心環境配置,可一鍵部署或微調模型,並通過 WebUI 或 API 快速調用。適合需要快速驗證效果或進行應用整合的情境。 | 本教程將使用公用資源建立EAS服務(用於模型部署),和DLC任務(用於模型微調),其均採用隨用隨付模式。更多計費詳情請參見DLC計費說明、EAS計費說明。 |
方案一:使用DSW產生視頻
步驟一:建立DSW執行個體
登入PAI控制台,選擇目標地區。在左側導覽列單擊工作空間列表,選擇並單擊進入目標工作空間。
在左側導覽列單擊模型開發與訓練 > 互動式建模(DSW),進入DSW頁面。
單擊建立執行個體,配置以下關鍵參數,其他參數保持預設即可。
參數
說明
執行個體名稱
本教程使用的樣本值為:AIGC_test_01。
資源類型
選擇公用資源。
資源規格
選擇GPU規格下的
ecs.gn7i-c8g1.2xlarge,或其他A10、GU100規格。鏡像
選擇官方鏡像,搜尋並選擇
easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04。單擊確定,建立執行個體,等待執行個體狀態變為運行中。
步驟二:下載EasyAnimate教程和模型
單擊目標DSW執行個體操作列下的開啟,進入DSW執行個體的開發環境。
在Notebook頁簽的Launcher頁面,單擊開啟DSW Gallery。
在DSW Gallery頁面,搜尋基於EasyAnimate的AI視頻產生樣本 (V5)。單擊在DSW中開啟,即可自動將本教程所需的資源下載至DSW執行個體中。
基於EasyAnimate的AI視頻產生樣本有多個版本,本文以V5版本為例進行說明。

下載EasyAnimate相關代碼和模型並進行安裝。
在EasyAnimate的教程檔案中,單擊
依次運列名為函數定義、下載代碼和下載模型儲存格。
步驟三:啟動WebUI並產生視頻
單擊
運列名為UI啟動的儲存格,啟動WebUI服務。單擊產生的連結,進入WebUI。

在WebUI介面下拉選擇預訓練模型路徑,其它參數按需配置即可。

單擊Generate(產生),等待約5分鐘後,即可在右側查看或下載產生的視頻。

方案二:使用Model Gallery產生視頻
步驟一:部署預訓練模型
登入PAI控制台,選擇目標地區。在左側導覽列單擊工作空間列表,選擇並單擊進入目標工作空間。
在左側導覽列單擊。搜尋EasyAnimate 高清長視頻產生模型,單擊部署,使用預設配置,確認部署。當服務狀態變為運行中時,表示模型部署成功。

步驟二:通過WebUI或API產生視頻
模型部署完成後,您可以使用WebUI及API兩種方式調用服務來產生視頻。
後續查看部署任務詳情,可通過在左側導覽列單擊Model Gallery > 任務管理 > 部署任務,然後再單擊服務名稱查看。
WebUI方式
在服務詳情頁面,單擊查看WEB應用。

在WebUI介面選擇預訓練的模型路徑,其它參數按需配置即可。

單擊Generate(產生),等待大約5分鐘後,即可在右側查看或下載產生的視頻。

API方式
在服務詳情頁面的資源詳情地區,單擊查看調用資訊,擷取服務調用地址和Token。

調用服務,產生視頻。Python請求樣本如下:
import os import requests import json import base64 from typing import Dict, Any class EasyAnimateClient: """ EasyAnimate EAS 服務 API 用戶端。 """ def __init__(self, service_url: str, token: str): if not service_url or not token: raise ValueError("服務地址 (service_url) 和 Token 不可為空") 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]: """ 更新並載入指定的模型版本和路徑。 Args: model_path: 模型在服務內的路徑, 如 "/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512"。 edition: 模型版本,預設為 "v3"。 timeout: 請求逾時時間(秒),模型載入較慢,建議設定較長時間。 """ # 1. 更新版本 requests.post( f"{self.base_url}/easyanimate/update_edition", headers=self.headers, json={"edition": edition}, timeout=timeout ).raise_for_status() # 2. 更新模型路徑並等待載入 print(f"發送載入模型請求: {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: """ 根據提示詞產生視頻。 Args: prompt: 英文正向提示詞。 **kwargs: 其他選擇性參數,參考下方的參數說明表格。 Returns: MP4 格式的視頻位元據。 """ 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"API 返回格式錯誤: {result}") return base64.b64decode(result["base64_encoding"]) # --- 使用樣本 --- if __name__ == "__main__": try: # 1. 佈建服務資訊,請替換為真實的服務調用地址和Token,建議將其設定為環境變數 EAS_URL = "<eas-service-url>" EAS_TOKEN = "<eas-service-token>" # 2. 建立用戶端 client = EasyAnimateClient(service_url=EAS_URL, token=EAS_TOKEN) # 3. 載入模型 (服務部署後,預設不會載入任何模型。在發起產生請求前,您必須至少調用一次update_model來指定要使用的模型。後續若需切換模型,則再次調用此方法。) client.update_model(model_path="/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512") # 4. 產生視頻 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. 儲存視頻檔案 with open("api_generated_video.mp4", "wb") as f: f.write(video_bytes) print("視頻已成功儲存為 api_generated_video.mp4") except requests.RequestException as e: print(f"網路請求錯誤: {e}") except (ValueError, KeyError) as e: print(f"資料或參數錯誤: {e}") except Exception as e: print(f"發生未知錯誤: {e}")服務介面輸入參數說明如下:
步驟三:(可選)微調預訓練模型
在自訂資料集上微調訓練模型,可以產生特定風格或內容的視頻。微調操作步驟如下:
登入PAI控制台。在左側導覽列單擊工作空間列表,選擇並單擊進入目標工作空間。
在左側導覽列單擊。
在Model Gallery頁面,搜尋EasyAnimate 高清長視頻產生模型,單擊訓練進入配置頁面。

資源來源選擇公用資源,執行個體規格選擇A10及其以上顯卡的執行個體,超參數可以按需配置,其他參數預設即可。
如果您想使用自訂資料集微調模型,可參考如下內容:
單擊訓練 > 確定建立訓練任務。在本文選擇的環境配置下訓練大約需要40分鐘,當任務狀態為成功時,代表模型訓練成功。
後續查看訓練任務詳情,可通過在左側導覽列單擊Model Gallery > 任務管理 > 訓練任務,然後再單擊任務名稱查看。
單擊右上方的部署按鈕部署微調後的模型。當狀態變為運行中時,代表模型部署成功。

在服務詳情頁面,單擊頁面上方的查看WEB應用。
後續查看服務詳情,您可通過在左側導覽列單擊Model Gallery > 任務管理 > 部署任務,然後再單擊服務名稱查看。
在WebUI介面,選擇訓練完成的LoRA模型進行視頻產生。API調用方式可參考步驟二。

生產環境應用建議
及時停止執行個體或服務節省成本:本教程使用了公用資源建立DSW執行個體及EAS模型服務,當您不需要時請及時停止或刪除執行個體(服務),以免繼續計費。
停止或刪除DSW執行個體:

停止或刪除EAS模型服務:

生產環境使用EAS部署服務:如果需要將模型應用於生產環境,建議採用方式二,一鍵將模型部署到EAS。如果採用了方式一,您可以通過製作自訂鏡像方式將模型部署到EAS,詳情請參見將模型部署為線上服務。
EAS 提供了如下功能,以應對複雜的生產環境:
使用EAS的自動壓測功能,測試服務介面能支撐的並發度。
使用EAS的Auto Scaling功能,執行個體將實現自動擴縮容,應對業務中出現的波峰波穀,保障業務平穩運行。
使用EAS的日誌監控與警示功能,協助您即時掌握服務運行狀態,提升系統的穩定性、安全性。
相關文檔
EAS提供了情境化部署方式,可一鍵部署基於ComfyUI和Stable Video Diffusion模型的AI視頻產生服務,詳情請參見AI視頻產生-ComfyUI部署。
