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

Platform For AI:EasyAnimate を使用した高解像度・長編動画の生成

最終更新日:Aug 26, 2026

EasyAnimate は、Alibaba Cloud の Platform for AI (PAI) が Diffusion Transformer (DiT) アーキテクチャに基づいて開発した動画生成フレームワークです。テキストや画像から高解像度 (HD) の長編動画を生成するための完全なソリューションを提供し、パーソナライズのためのモデルのファインチューニング機能も備えています。

ソリューション

ソリューション

利点とユースケース

課金

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

チュートリアルとコードが組み込まれたクラウドベースの統合開発環境 (IDE) を提供します。このソリューションは、モデルを深く探求したい、またはカスタム開発を行いたいユーザーに最適です。

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

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

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

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

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

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

  1. PAI コンソールにログインし、リージョンを選択します。左側のメニューで ワークスペースリスト をクリックし、対象のワークスペースを探してクリックします。

  2. 左側のメニューで、モデル開発とトレーニング > DSW-Notebook モデリング をクリックして DSW ページに移動します。

  3. インスタンスの作成 をクリックし、次の主要なパラメーターを設定します。その他のパラメーターはデフォルト値のままにします。

    パラメーター

    説明

    インスタンス名

    例:AIGC_test_01。

    リソースタイプ

    パブリックリソース を選択します。

    リソース仕様

    [GPU Specs] で、ecs.gn7i-c8g1.2xlarge または他の A10 インスタンスタイプを選択します。

    イメージ

    Alibaba Cloud イメージ を選択し、easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 を検索して選択します。

  4. OK をクリックしてインスタンスを作成し、インスタンスのステータスが 実行中 に変わるのを待ちます。

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

  1. 対象の DSW インスタンスの 操作 列で、開く をクリックして開発環境を開きます。

  2. ノートブック タブで [Launcher] ページを開き、[DSW Gallery] をクリックします。

  3. DSW Gallery で [AI Video Generation with EasyAnimate (V5)] を検索します。[Open in DSW] をクリックして、このチュートリアルに必要なリソースを DSW インスタンスにダウンロードします。

    EasyAnimate の AI 動画生成の例には、複数のバージョンがあります。このチュートリアルでは V5 を例として使用します。
  4. EasyAnimate のコードとモデルをダウンロードしてインストールします。

    EasyAnimate のチュートリアルファイルで、image をクリックして、[Function Definition]、[Download Code]、[Download Model] というタイトルのセルを順に実行します。

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

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

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

    !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()`.
  3. WebUI で、事前学習済みモデルのパスを選択し、必要に応じて他のパラメーターを設定します。

    [Pretrained Model Path] ドロップダウンリストから、/mnt/workspace/demos/easyanimate_v5/EasyAnimate/models/Diffusion_Transformer/EasyAnimateV5-12b-zh-InP/ を選択します。

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

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

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

  1. PAI コンソールにログインし、リージョンを選択します。左側のメニューで ワークスペースリスト をクリックし、対象のワークスペース名を探してクリックします。

  2. 左側のメニューで、クイックスタート > [Model Gallery] をクリックします。[EasyAnimate HD Long Video Generation Model] を検索し、デプロイメント をクリックし、デフォルト設定のままデプロイを確定します。サービスのステータスが 実行中 に変わると、モデルは正常にデプロイされています。

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

モデルをデプロイした後、WebUI または API を介してサービスを呼び出すことで動画を生成できます。

後でデプロイジョブの詳細を表示するには、左側のメニューで [Model Gallery] > タスク管理 > タスクのデプロイメント をクリックし、サービス名 をクリックします。

WebUI

  1. サービスの詳細 ページで、WEB アプリケーションの表示 をクリックします。

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

    たとえば、[Pretrained Model Path] ドロップダウンリストで、/mnt/models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512/ を選択します。

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

    生成が完了すると、右下の [Generation Info] エリアに [Success] と表示され、動画が正常に生成されたことを示します。

API

  1. サービスの詳細 ページの リソースの詳細 セクションで、エンドポイント情報の表示 をクリックしてサービスエンドポイントとトークンを取得します。

  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("`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_textbox: ポジティブプロンプト。
                **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` を少なくとも 1 回呼び出して使用するモデルを指定する必要があります。後でモデルを切り替えるには、このメソッドを再度呼び出します。
            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}")

    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

    更新対象の transformer モデルのパス。

    string

    none

    motion_module_path

    更新対象の motion_module モデルのパス。

    string

    none

    generation_method

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

    string

    必須。デフォルト値はありません。

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

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

  1. PAI コンソールにログインします。左側のメニューで ワークスペースリスト をクリックし、対象のワークスペース名を探してクリックします。

  2. 左側のメニューで、クイックスタート > [Model Gallery] をクリックします。

  3. モデルギャラリーで [EasyAnimate HD Long Video Generation Model] を検索し、トレーニング をクリックして設定ページを開きます。

  4. リソースのソース を パブリックリソース に設定します。インスタンスタイプ には、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. トレーニング設定ページで [Select OSS File or Directory] をクリックし、データフォルダーとメタファイルをアップロードして選択します。

  5. トレーニング > 確認 をクリックしてトレーニングタスクを作成します。このチュートリアルの設定では、トレーニングプロセスに約 40 分かかります。タスクのステータスが 成功 に変わると、モデルトレーニングは完了です。

    後でトレーニングタスクの詳細を表示するには、左側のメニューで [Model Gallery] > タスク管理 > トレーニングジョブ をクリックし、タスク名をクリックします。
  6. 右上隅にある デプロイメント をクリックして、ファインチューニングされたモデルをデプロイします。ステータスが 実行中 に変わると、デプロイは完了です。

  7. サービスの詳細 ページで、ページ上部の [View Web App] をクリックします。

    後でサービスの詳細を表示するには、左側のメニューで [Model Gallery] > タスク管理 > タスクのデプロイメント をクリックし、サービス名 をクリックします。
  8. WebUI で、トレーニング済みの LoRA モデルを選択して動画を生成します。API の使用法については、「ステップ 2」をご参照ください。

    [Model checkpoints] セクションで、[Select LoRA model] ドロップダウンリストから LoRA モデルを選択し、[LoRA alpha] スライダーを使用してその重みを設定します。

本番環境に関する推奨事項

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

    • [Interactive Modeling (DSW)] ページで、対象のインスタンスを探します。[Actions] 列で [Stop] をクリックして実行中のインスタンスを停止するか、[Delete] をクリックして停止したインスタンスを削除します。

    • [Model Gallery] ページの [Job Management] タブをクリックし、[Deployment Jobs] サブタブをクリックします。対象のサービスを探し、[Actions] 列の [Stop] または [Delete] をクリックします。

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

    EAS は、本番ワークロード向けに次の機能を提供します。

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

    • EAS のオートスケーリング機能を使用して、トラフィックの増減に対応してインスタンスを自動的にスケーリングし、安定したサービス運用を保証します。

    • EAS のログの監視とアラート機能を使用して、サービスの健全性をリアルタイムで追跡し、システムの安定性とセキュリティを向上させます。

関連ドキュメント

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