EasyAnimate は、Alibaba Cloud PAI が Diffusion Transformer (DiT) アーキテクチャに基づいて開発した動画生成フレームワークです。テキストやイメージから高解像度長尺動画を迅速に生成するための完全なソリューションを提供し、個別のニーズを満たすモデルファインチューニング機能も含まれています。
ソリューション概要
ソリューション | 利点とシナリオ | 課金情報 |
組み込みのチュートリアルとコードを備えたクラウドベースの統合開発環境 (IDE) を提供します。これは、モデルの深い理解やカスタム開発が必要なシナリオに最適です。 | このチュートリアルでは、パブリックリソースを使用して従量課金モードで課金される DSW インスタンスを作成します。課金の詳細については、「DSW の課金」をご参照ください。 | |
環境構成は不要です。ワンクリックでモデルのデプロイまたはファインチューニングを行い、WebUI または API を介して迅速に呼び出すことができます。これは、迅速な検証やアプリケーション統合が必要なシナリオに適しています。 | このチュートリアルでは、パブリックリソースを使用して、EAS サービス(モデルデプロイ用)および DLC job(モデルファインチューニング用)を作成します。どちらも従量課金モードで課金されます。課金に関する詳細については、「DLC 課金」および「EAS 課金」をご参照ください。 |
ソリューション 1: DSW を使用した動画生成
ステップ 1: DSW インスタンスの作成
PAI コンソールにログインし、ターゲットリージョンを選択します。左側のナビゲーションウィンドウで、Workspaces をクリックし、ターゲットワークスペースを選択して開きます。
左側のナビゲーションウィンドウで、Model Training > Interactive Modeling (DSW) をクリックして DSW ページにアクセスします。
Create instance をクリックし、次の主要パラメーターを構成します。他のパラメーターはデフォルト値のままにします。
パラメーター
説明
Instance Name
本チュートリアルで使用する例: AIGC_test_01。
Resource Type
Public Resources を選択します。
Instance Type
GPU 仕様 から、
ecs.gn7i-c8g1.2xlargeまたは A10 / GU10 GPU を搭載した他のインスタンスを選択します。Image
Alibaba Cloud Image を選択し、
easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04を検索して選択します。OK をクリックしてインスタンスを作成します。インスタンスステータスが Running に変わるまで待ちます。
ステップ 2: EasyAnimate チュートリアルとモデルのダウンロード
ご利用の DSW インスタンスの Actions をクリックし、Open をクリックして DSW 開発環境にアクセスします。
Notebook タブで、[Launcher] ページに移動し、[DSW ギャラリー] をクリックして開きます。
DSW ギャラリーページで、[EasyAnimate (V5) に基づく AI 動画生成の例]を検索します。[DSW で開く]をクリックすると、必要なリソースが DSW インスタンスに自動的にダウンロードされます。
EasyAnimate に基づく AI 動画生成の例には複数のバージョンがあります。このトピックでは、バージョン V5 を例として使用します。

EasyAnimate 関連のコードとモデルをダウンロードしてインストールします。
EasyAnimate チュートリアルファイルで、
をクリックして、[関数定義]、[コードのダウンロード]、[モデルのダウンロード] というタイトルのセルを順に実行します。
ステップ 3: WebUI の起動と動画の生成
をクリックして、[UI の起動] というタイトルのセルを実行し、WebUI サービスを開始します。生成されたリンクをクリックして WebUI にアクセスします。

WebUI インターフェイスで、ドロップダウンリストから事前学習済みモデルのパスを選択します。必要に応じて他のパラメーターを構成します。

[生成] をクリックします。約 5 分後、生成された動画を右側で表示またはダウンロードできます。

ソリューション 2: モデルギャラリーを使用した動画生成
ステップ 1: 事前学習済みモデルのデプロイ
PAI コンソールにログインし、ターゲットリージョンを選択します。 左側のナビゲーションウィンドウで、Workspaces をクリックし、ターゲットワークスペースを選択して移動します。
左側のナビゲーションウィンドウで、Quick Start > [モデルギャラリー] をクリックします。[EasyAnimate 高解像度長尺動画生成モデル] を検索し、Deploy をクリックし、デフォルト設定を使用してデプロイメントを確認します。サービスステータスが Running に変わると、モデルが正常にデプロイされます。

ステップ 2: WebUI または API を使用した動画生成
モデルデプロイが正常に完了したら、WebUI または API を使用して動画を生成できます。
後でデプロイメントタスクの詳細を表示するには、左側のナビゲーションウィンドウに移動し、モデルギャラリー > Job Management > Deployment Jobs をクリックしてから、Service name をクリックします。
WebUI メソッド
Service details ページで、View Web App をクリックします。

WebUI インターフェイスで、事前学習済みモデルのパスを選択します。必要に応じて他のパラメーターを構成します。

[生成] をクリックします。約 5 分後、生成された動画を右側で表示またはダウンロードできます。

API メソッド
[Service details] ページの [Resource Details] セクションで、[View Call Information] をクリックして、サービス エンドポイントとトークンを取得します。

サービスを呼び出して動画を生成できます。以下は Python リクエストの例です。
import os import requests import json import base64 from typing import Dict, Any class EasyAnimateClient: """ EasyAnimate EAS service API client. """ def __init__(self, service_url: str, token: str): if not service_url or not token: raise ValueError("Service URL and token 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]: """ Update and load the specified model version and path. Args: model_path: Path to the model within the service, such as "/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512". edition: Model version, default is "v3". timeout: Request timeout in seconds. Model loading is slow, so set a longer timeout. """ # 1. Update edition requests.post( f"{self.base_url}/easyanimate/update_edition", headers=self.headers, json={"edition": edition}, timeout=timeout ).raise_for_status() # 2. Update model path and wait for loading print(f"Sending model loading request: {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: """ Generate a video based on the prompt. Args: prompt: Positive prompt in English. **kwargs: Optional parameters. See the parameter description table below. Returns: Video binary data 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 service information. Replace with your actual service URL and token. We recommend setting them as environment variables. EAS_URL = "<eas-service-url>" EAS_TOKEN = "<eas-service-token>" # 2. Create client client = EasyAnimateClient(service_url=EAS_URL, token=EAS_TOKEN) # 3. Load model (After service deployment, no model is loaded by default. You must call update_model at least once before generating videos. Call this method again to switch models.) client.update_model(model_path="/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512") # 4. Generate 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 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"Unexpected error: {e}")サービス API の入力パラメーターを以下に示します。
ステップ 3: (オプション) 事前学習済みモデルのファインチューニング
カスタムデータセットでモデルをファインチューニングすると、特定のスタイルやコンテンツを持つ動画を生成できます。モデルをファインチューニングするには、次のステップに従います。
PAI コンソールにログインします。PAI コンソール の左側のナビゲーションウィンドウで、Workspaces をクリックし、対象のワークスペースを選択して開きます。
左側のナビゲーションウィンドウで、Quick Start > [モデルギャラリー] をクリックします。
モデルギャラリー ページで、EasyAnimate 高解像度長時間動画生成モデルを検索し、Fine-tune をクリックして構成ページに移動します。

Source を Public Resources に設定します。Instance type には、A10 以上の GPU を搭載したインスタンスを選択します。必要に応じてハイパーパラメーターを設定します。その他のパラメーターはデフォルト値のままにします。
カスタムデータセットを使用してモデルをファインチューニングする場合は、次の手順に従います。
「Train」をクリックし、「Confirm」をクリックして、トレーニングジョブを作成します。このチュートリアルで使用する環境構成では、トレーニングに約 40 分かかります。ジョブのステータスが「Successful」に変更された場合、モデルは正常にトレーニング完了しています。
後でトレーニングジョブの詳細を表示するには、左側のナビゲーションウィンドウで[モデルギャラリー] > Job Management > Training Jobs をクリックし、ジョブ名をクリックします。
右上隅の Deploy ボタンをクリックして、ファインチューニングされたモデルをデプロイします。ステータスが Running に変わると、モデルが正常にデプロイされます。

「Service details」ページで、ページ上部の「Web アプリケーションの表示」をクリックします。
後でサービスの詳細を表示するには、左側のナビゲーションウィンドウに移動し、モデルギャラリー > Job Management > Deployment Jobsをクリックし、その後Service nameをクリックします。
WebUI インターフェイスで、トレーニング済み LoRA モデルを選択して動画を生成します。API 呼び出しについては、ステップ 2 をご参照ください。

本番環境での推奨事項
コストを節約するために、インスタンスまたはサービスを不要になったら速やかに停止または削除します: このチュートリアルでは、パブリックリソースを使用して DSW インスタンスと EAS モデルサービスを作成します。継続的な課金を避けるため、不要になったインスタンスまたはサービスは速やかに停止または削除してください。
DSW インスタンスの停止または削除:

EAS モデルサービスの停止または削除:

本番デプロイメントには EAS を使用します: 本番環境にモデルをデプロイするには、ソリューション 2 を使用してワンクリックでモデルを EAS にデプロイします。ソリューション 1 を使用した場合は、カスタムイメージを作成してモデルを EAS にデプロイできます。詳細については、「モデルをオンラインサービスとしてデプロイ」をご参照ください。
EAS は、複雑な本番環境を処理するために次の機能を提供します。
EAS ストレステストを使用して、ご利用のサービスエンドポイントがサポートする同時実行レベルをテストします。
EAS Auto Scaling を使用して、トラフィックのピークと谷に基づいてインスタンスを自動的にスケールアップまたはスケールダウンし、安定した運用を確保します。
EAS ログモニタリングとアラートを使用して、サービスステータスをリアルタイムでモニターし、システムの安定性とセキュリティを向上させます。
参考文献
EAS は、ComfyUI および Stable Video Diffusion モデルに基づいて AI 動画生成サービスをワンクリックでデプロイするためのシナリオベースのデプロイメントメソッドを提供します。詳細については、「AI 動画生成 - ComfyUI デプロイメント」をご参照ください。
