すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:Generate high-definition long videos using EasyAnimate

最終更新日:Mar 11, 2026

EasyAnimate は、Alibaba Cloud PAI が Diffusion Transformer (DiT) アーキテクチャに基づいて開発した動画生成フレームワークです。テキストやイメージから高解像度長尺動画を迅速に生成するための完全なソリューションを提供し、個別のニーズを満たすモデルファインチューニング機能も含まれています。

ソリューション概要

ソリューション

利点とシナリオ

課金情報

ソリューション 1: DSW を使用した動画生成

組み込みのチュートリアルとコードを備えたクラウドベースの統合開発環境 (IDE) を提供します。これは、モデルの深い理解やカスタム開発が必要なシナリオに最適です。

このチュートリアルでは、パブリックリソースを使用して従量課金モードで課金される DSW インスタンスを作成します。課金の詳細については、「DSW の課金」をご参照ください。

ソリューション 2: モデルギャラリーを使用した動画生成

環境構成は不要です。ワンクリックでモデルのデプロイまたはファインチューニングを行い、WebUI または API を介して迅速に呼び出すことができます。これは、迅速な検証やアプリケーション統合が必要なシナリオに適しています。

このチュートリアルでは、パブリックリソースを使用して、EAS サービス(モデルデプロイ用)および DLC job(モデルファインチューニング用)を作成します。どちらも従量課金モードで課金されます。課金に関する詳細については、「DLC 課金」および「EAS 課金」をご参照ください。

ソリューション 1: DSW を使用した動画生成

ステップ 1: DSW インスタンスの作成

  1. PAI コンソールにログインし、ターゲットリージョンを選択します。左側のナビゲーションウィンドウで、Workspaces をクリックし、ターゲットワークスペースを選択して開きます。

  2. 左側のナビゲーションウィンドウで、Model Training > Interactive Modeling (DSW) をクリックして DSW ページにアクセスします。

  3. 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 を検索して選択します。

  4. OK をクリックしてインスタンスを作成します。インスタンスステータスが Running に変わるまで待ちます。

ステップ 2: EasyAnimate チュートリアルとモデルのダウンロード

  1. ご利用の DSW インスタンスの Actions をクリックし、Open をクリックして DSW 開発環境にアクセスします。

  2. Notebook タブで、[Launcher] ページに移動し、[DSW ギャラリー] をクリックして開きます。

  3. DSW ギャラリーページで、[EasyAnimate (V5) に基づく AI 動画生成の例]を検索します。[DSW で開く]をクリックすると、必要なリソースが DSW インスタンスに自動的にダウンロードされます。

    EasyAnimate に基づく AI 動画生成の例には複数のバージョンがあります。このトピックでは、バージョン V5 を例として使用します。

    image

  4. EasyAnimate 関連のコードとモデルをダウンロードしてインストールします。

    EasyAnimate チュートリアルファイルで、image をクリックして、[関数定義][コードのダウンロード][モデルのダウンロード] というタイトルのセルを順に実行します。

ステップ 3: WebUI の起動と動画の生成

  1. image をクリックして、[UI の起動] というタイトルのセルを実行し、WebUI サービスを開始します。

  2. 生成されたリンクをクリックして WebUI にアクセスします。

    image

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

    image

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

    image

ソリューション 2: モデルギャラリーを使用した動画生成

ステップ 1: 事前学習済みモデルのデプロイ

  1. PAI コンソールにログインし、ターゲットリージョンを選択します。 左側のナビゲーションウィンドウで、Workspaces をクリックし、ターゲットワークスペースを選択して移動します。

  2. 左側のナビゲーションウィンドウで、Quick Start > [モデルギャラリー] をクリックします。[EasyAnimate 高解像度長尺動画生成モデル] を検索し、Deploy をクリックし、デフォルト設定を使用してデプロイメントを確認します。サービスステータスが Running に変わると、モデルが正常にデプロイされます。

    image

ステップ 2: WebUI または API を使用した動画生成

モデルデプロイが正常に完了したら、WebUI または API を使用して動画を生成できます。

後でデプロイメントタスクの詳細を表示するには、左側のナビゲーションウィンドウに移動し、モデルギャラリー > Job Management > Deployment Jobs をクリックしてから、Service name をクリックします。

WebUI メソッド

  1. Service details ページで、View Web App をクリックします。

    image

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

    image

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

    image

API メソッド

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

    image

  2. サービスを呼び出して動画を生成できます。以下は 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 の入力パラメーターを以下に示します。

    API パラメーターの説明

    パラメーター名

    説明

    タイプ

    デフォルト

    prompt_textbox

    ユーザーが入力するポジティブプロンプト。

    string

    必須、デフォルトなし

    negative_prompt_textbox

    ユーザーが入力するネガティブプロンプト。

    string

    "The video is not of a high quality, it has a low resolution, and the audio quality is not clear. Strange motion trajectory, a poor composition and deformed video, low resolution, duplicate and ugly, strange body structure, long and strange neck, bad teeth, bad eyes, bad limbs, bad hands, rotating camera, blurry camera, shaking camera. Deformation, low-resolution, blurry, ugly, distortion."

    sample_step_slider

    拡散モデルにおけるノイズ除去サンプリングステップ数。ステップ数が多いほど詳細が豊かになる可能性がありますが、時間がかかります。

    int

    30

    cfg_scale_slider

    プロンプトガイダンススケール。値が高いほどプロンプトとの整合性が高まりますが、多様性が低下する可能性があります。

    float

    6

    sampler_dropdown

    サンプラータイプ。

    有効値: Euler, EulerA, DPM++, PNDM, DDIM

    string

    Euler

    width_slider

    動画の幅。

    int

    672

    height_slider

    動画の高さ。

    int

    384

    length_slider

    動画フレーム数。

    int

    144

    is_image

    入力がイメージであるかどうか。

    bool

    False

    lora_alpha_slider

    LoRA モデルパラメーターの重み。

    float

    0.55

    seed_textbox

    ランダムシード。

    int

    43

    lora_model_path

    追加の LoRA モデルへのパス。

    指定された場合、LoRA モデルはリクエスト中に適用され、その後削除されます。

    string

    none

    base_model_path

    更新するトランスフォーマーモデルへのパス。

    string

    none

    motion_module_path

    モーションモジュールモデルを更新するパス。

    string

    none

    generation_method

    生成タイプ。有効値: Video Generation, Image Generation

    string

    none

ステップ 3: (オプション) 事前学習済みモデルのファインチューニング

カスタムデータセットでモデルをファインチューニングすると、特定のスタイルやコンテンツを持つ動画を生成できます。モデルをファインチューニングするには、次のステップに従います。

  1. PAI コンソールにログインします。PAI コンソール の左側のナビゲーションウィンドウで、Workspaces をクリックし、対象のワークスペースを選択して開きます。

  2. 左側のナビゲーションウィンドウで、Quick Start > [モデルギャラリー] をクリックします。

  3. モデルギャラリー ページで、EasyAnimate 高解像度長時間動画生成モデルを検索し、Fine-tune をクリックして構成ページに移動します。

    image

  4. SourcePublic Resources に設定します。Instance type には、A10 以上の GPU を搭載したインスタンスを選択します。必要に応じてハイパーパラメーターを設定します。その他のパラメーターはデフォルト値のままにします。

    カスタムデータセットを使用してモデルをファインチューニングする場合は、次の手順に従います。

    カスタムデータセットの使用

    1. データフォルダーとメタファイルを準備します。データフォルダーにはトレーニング用のイメージと動画が含まれます。メタファイルは JSON 形式です。各データエントリには、"file_path"、"text"、"type" のフィールドで表されるファイルパス、テキスト説明、およびデータの型が含まれます。例:

      [
          {
              "file_path": "00031-3640797216.png",
              "text": "1girl, black_hair",
              "type": "image"    },
          {
              "file_path": "00032-3838108680.png",
              "text": "1girl, black_hair",
              "type": "image"    }
      ]

      動画データには "type":"video" を、イメージデータには "type":"image" を設定します。

    2. データフォルダーとメタファイルをアップロードして選択します。トレーニング構成ページで、[OSS ファイルまたはディレクトリの選択] をクリックし、データフォルダーとメタファイルをアップロードして選択します。

      image

  5. Train」をクリックし、「Confirm」をクリックして、トレーニングジョブを作成します。このチュートリアルで使用する環境構成では、トレーニングに約 40 分かかります。ジョブのステータスが「Successful」に変更された場合、モデルは正常にトレーニング完了しています。

    後でトレーニングジョブの詳細を表示するには、左側のナビゲーションウィンドウで[モデルギャラリー] > Job Management > Training Jobs をクリックし、ジョブ名をクリックします。
  6. 右上隅の Deploy ボタンをクリックして、ファインチューニングされたモデルをデプロイします。ステータスが Running に変わると、モデルが正常にデプロイされます。

    image

  7. Service details」ページで、ページ上部の「Web アプリケーションの表示」をクリックします。

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

    image

本番環境での推奨事項

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

    • DSW インスタンスの停止または削除:

      image

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

      image

  • 本番デプロイメントには EAS を使用します: 本番環境にモデルをデプロイするには、ソリューション 2 を使用してワンクリックでモデルを EAS にデプロイします。ソリューション 1 を使用した場合は、カスタムイメージを作成してモデルを EAS にデプロイできます。詳細については、「モデルをオンラインサービスとしてデプロイ」をご参照ください。

    EAS は、複雑な本番環境を処理するために次の機能を提供します。

    • EAS ストレステストを使用して、ご利用のサービスエンドポイントがサポートする同時実行レベルをテストします。

    • EAS Auto Scaling を使用して、トラフィックのピークと谷に基づいてインスタンスを自動的にスケールアップまたはスケールダウンし、安定した運用を確保します。

    • EAS ログモニタリングとアラートを使用して、サービスステータスをリアルタイムでモニターし、システムの安定性とセキュリティを向上させます。

参考文献

EAS は、ComfyUI および Stable Video Diffusion モデルに基づいて AI 動画生成サービスをワンクリックでデプロイするためのシナリオベースのデプロイメントメソッドを提供します。詳細については、「AI 動画生成 - ComfyUI デプロイメント」をご参照ください。