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

Platform For AI:EasyAnimate を使用して高精細・長尺動画の生成

最終更新日:Oct 29, 2025

EasyAnimate は、Alibaba Cloud の Platform For AI (PAI) によって開発された、Diffusion Transformer (DiT) アーキテクチャに基づく動画生成フレームワークです。テキストや画像から高精細な長尺動画を迅速に生成でき、パーソナライズのためのファインチューニング機能を備えています。

概要

ソリューション

利点とシナリオ

課金の説明

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

チュートリアルとコードが組み込まれたクラウド IDE を提供します。このソリューションは、モデルを深く探求したり、その機能をカスタマイズしたりしたいユーザーに最適です。

このソリューションでは、パブリックリソースを使用して Data Science Workshop (DSW) インスタンスを作成し、従量課金制で課金されます。課金の詳細については、「DSW の課金情報」をご参照ください。

ソリューション 2:Model Gallery を使用して動画を生成

環境構成が不要です。ワンクリックでモデルをデプロイまたはファインチューニングし、WebUI または API を介して呼び出すことができます。このソリューションは、結果を迅速に検証したり、モデルをアプリケーションに統合したりする必要があるユーザーに最適です。

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

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

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

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

  2. 左側のナビゲーションウィンドウで、[Model Training] > [Data Science Workshop (DSW)] を選択して DSW ページに移動します。

  3. [New Instance] をクリックし、次のパラメーターを設定します。他のパラメーターはデフォルト値のままにすることができます。

    パラメーター

    説明

    Instance Name

    このチュートリアルでは、値の例として AIGC_test_01 を使用します。

    Resource Type

    [Public Resources] を選択します。

    Resource Specification

    GPU インスタンスタイプで、ecs.gn7i-c8g1.2xlarge または A10 か GU100 GPU を搭載した別のインスタンスタイプを選択します。

    Image

    [Alibaba Cloud Image] を選択し、easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 を検索して選択します。

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

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

  1. ターゲット DSW インスタンスの [Actions] 列で、[Open] をクリックして DSW 開発環境に入ります。

  2. [Notebook] タブの [Launcher] ページで、[DSW Gallery] をクリックします。

  3. DSW Gallery ページで [AI Video Generation Demo Based On EasyAnimate (V5)] を検索し、[Open In DSW] をクリックしてチュートリアルのリソースを DSW インスタンスに自動的にダウンロードします。

    EasyAnimate を使用した AI 動画生成の例には複数のバージョンがあります。このガイドでは V5 を例として使用します。

    image

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

    EasyAnimate チュートリアルファイルで、image をクリックして、[Define Functions][Download Code][Download Models] を順番に実行します。

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

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

  2. 生成されたリンクをクリックして WebUI を開きます。

    image

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

    image

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

    image

ソリューション 2:Model Gallery を使用して動画を生成

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

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

  2. 左側のナビゲーションウィンドウで、[QuickStart] > [Model Gallery] をクリックします。EasyAnimate Long Video Generation Model を検索し、[Deploy] をクリックして、デフォルトの構成でデプロイメントを確認します。サービスステータスが [Running] になると、デプロイメントは完了です。

    image

ステップ 2: WebUI または API による動画の生成

デプロイメント後、WebUI または API を使用して動画を生成できます。

後でデプロイメントタスクの詳細を表示するには、左側のナビゲーションウィンドウで [Model Gallery] > [Job Management] > [Deployment Jobs] を選択し、[Service Name] をクリックします。

WebUI の使用

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

    image

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

    image

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

    image

API の使用

  1. サービス URL とトークンを取得するには、[Service Details] ページで、[Call Information] セクションの [View Call Information] をクリックします。

    image

  2. サービスを呼び出して動画を生成します。以下は 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("サービス URL (service_url) とトークンは空にできません")
            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. サービス情報を設定します。プレースホルダーを実際のサービスエンドポイントとトークンに置き換えます。環境変数として設定することをお勧めします。
            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}")

    次の表に、サービスインターフェイスの入力パラメーターを示します。

    インターフェイスパラメーターの説明

    パラメーター

    説明

    タイプ

    デフォルト値

    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

    サンプリング方法。

    有効な値は、EulerEulerADPM++PNDMDDIM です。

    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

    更新する motion_module モデルへのパス。

    string

    none

    generation_method

    生成タイプ。有効な値: Video GenerationImage Generation

    string

    none

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

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

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

  2. 左側のナビゲーションウィンドウで、[QuickStart] > [Model Gallery] をクリックします。

  3. Model Gallery ページで、[EasyAnimate Long Video Generation Model] を検索し、[Train] をクリックして設定ページに移動します。

    image

  4. [Resource Source][Public 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 File Or Directory] をクリックし、データフォルダとメタファイルをアップロードして選択します。

      image

  5. [Train] > [OK] をクリックしてトレーニングタスクを作成します。このガイドで選択した環境構成では、トレーニングに約 40 分かかります。タスクのステータスが [Succeeded] に変わると、トレーニングは完了です。

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

    image

  7. [Service Details] ページで、ページ上部の [View Web Application] をクリックします。

    後でサービスの詳細を表示するには、左側のナビゲーションウィンドウで [Model Gallery] > [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 デプロイメント」をご参照ください。