EasyAnimate は、Alibaba Cloud の Platform For AI (PAI) によって開発された、Diffusion Transformer (DiT) アーキテクチャに基づく動画生成フレームワークです。テキストや画像から高精細な長尺動画を迅速に生成でき、パーソナライズのためのファインチューニング機能を備えています。
概要
ソリューション | 利点とシナリオ | 課金の説明 |
チュートリアルとコードが組み込まれたクラウド IDE を提供します。このソリューションは、モデルを深く探求したり、その機能をカスタマイズしたりしたいユーザーに最適です。 | このソリューションでは、パブリックリソースを使用して Data Science Workshop (DSW) インスタンスを作成し、従量課金制で課金されます。課金の詳細については、「DSW の課金情報」をご参照ください。 | |
環境構成が不要です。ワンクリックでモデルをデプロイまたはファインチューニングし、WebUI または API を介して呼び出すことができます。このソリューションは、結果を迅速に検証したり、モデルをアプリケーションに統合したりする必要があるユーザーに最適です。 | このチュートリアルでは、パブリックリソースを使用して、モデルデプロイメント用の Elastic Algorithm Service (EAS) サービスと、モデルファインチューニング用の Deep Learning Containers (DLC) タスクを作成します。どちらのサービスも従量課金モデルを使用します。課金の詳細については、「DLC の課金」および「EAS の課金」をご参照ください。 |
ソリューション 1:DSW を使用して動画を生成
ステップ 1: DSW インスタンスの作成
PAI コンソールにログインし、リージョンを選択します。左側のナビゲーションウィンドウで、[Workspace List] をクリックし、ターゲットワークスペースを選択してクリックします。
左側のナビゲーションウィンドウで、[Model Training] > [Data Science Workshop (DSW)] を選択して DSW ページに移動します。
[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を検索して選択します。[Yes] をクリックしてインスタンスを作成します。インスタンスのステータスが [Running] に変わるまで待ちます。
ステップ 2: EasyAnimate チュートリアルとモデルのダウンロード
ターゲット DSW インスタンスの [Actions] 列で、[Open] をクリックして DSW 開発環境に入ります。
[Notebook] タブの [Launcher] ページで、[DSW Gallery] をクリックします。
DSW Gallery ページで [AI Video Generation Demo Based On EasyAnimate (V5)] を検索し、[Open In DSW] をクリックしてチュートリアルのリソースを DSW インスタンスに自動的にダウンロードします。
EasyAnimate を使用した AI 動画生成の例には複数のバージョンがあります。このガイドでは V5 を例として使用します。

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

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

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

ソリューション 2:Model Gallery を使用して動画を生成
ステップ 1: 事前学習済みモデルのデプロイ
PAI コンソールにログインし、リージョンを選択します。左側のナビゲーションウィンドウで、[Workspace List] をクリックし、ターゲットワークスペースを選択してクリックします。
左側のナビゲーションウィンドウで、 をクリックします。EasyAnimate Long Video Generation Model を検索し、[Deploy] をクリックして、デフォルトの構成でデプロイメントを確認します。サービスステータスが [Running] になると、デプロイメントは完了です。

ステップ 2: WebUI または API による動画の生成
デプロイメント後、WebUI または API を使用して動画を生成できます。
後でデプロイメントタスクの詳細を表示するには、左側のナビゲーションウィンドウで [Model Gallery] > [Job Management] > [Deployment Jobs] を選択し、[Service Name] をクリックします。
WebUI の使用
[Service Details] ページで、[View Web App] をクリックします。

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

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

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

サービスを呼び出して動画を生成します。以下は 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}")次の表に、サービスインターフェイスの入力パラメーターを示します。
ステップ 3: (オプション) 事前学習済みモデルのファインチューニング
カスタムデータセットでモデルをファインチューニングして、特定のスタイルやコンテンツの動画を生成できます。モデルをファインチューニングするには、次の手順に従います。
PAI コンソールにログインします。左側のナビゲーションウィンドウで [Workspace List] をクリックし、ターゲットワークスペースを選択してクリックします。
左側のナビゲーションウィンドウで、 をクリックします。
Model Gallery ページで、[EasyAnimate Long Video Generation Model] を検索し、[Train] をクリックして設定ページに移動します。

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

[Service Details] ページで、ページ上部の [View Web Application] をクリックします。
後でサービスの詳細を表示するには、左側のナビゲーションウィンドウで [Model Gallery] > [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 デプロイメント」をご参照ください。
