Wan を 画像→動画 に使用する場合、プロンプト最適化 や 公式の動画エフェクト を適用しても、特定の動作、エフェクト、またはスタイル に関するカスタマイズ要件を満たせない場合は、モデルのファインチューニング を実行してください。
適用性
対応するデプロイモードおよびリージョン:本ドキュメントは、国際デプロイモード のシンガポールリージョンでのみ有効です。このリージョンでは、Model Studio API キー を使用する必要があります。
対応するファインチューニング手法:LoRA を用いた効率的な SFT。
対応するファインチューニング対象モデル:
最初のフレームに基づく画像→動画:wan2.6-i2v、wan2.5-i2v-preview、wan2.2-i2v-flash。
最初および最後のフレームに基づく画像→動画:wan2.2-kf2v-flash。
モデルのファインチューニング手順
最初のフレームに基づく画像→動画
ファインチューニング目標:「マネーレイン」エフェクト用 LoRA モデルの学習。
期待される結果:最初のフレーム画像を入力すると、プロンプトを指定しなくても「マネーレイン」エフェクトを備えた動画を自動生成します。
入力:最初のフレーム画像
| 出力動画(ファインチューニング前) プロンプトでは、固定された動きで一貫して「マネーレイン」エフェクトを生成できません。動きは制御不能です。 | 出力動画(ファインチューニング後) ファインチューニング済みモデルは、トレーニングセットからプロンプトを指定せずに特定の「マネーレイン」エフェクトを安定して再現できます。 |
最初および最後のフレームに基づく画像→動画
ファインチューニング目標:「ファッション雑誌」エフェクト用 LoRA モデルの学習。
期待される結果:最初および最後のフレーム画像を入力すると、プロンプトを指定しなくても「ファッション雑誌」エフェクトを備えた動画を自動生成します。
入力:最初のフレーム画像
| 入力:最後のフレーム画像
| 出力動画(ファインチューニング前) プロンプトでは、固定された動きで一貫して「ファッション雑誌」エフェクトを生成できません。動きは制御不能です。 | 出力動画(ファインチューニング後) ファインチューニング済みモデルは、トレーニングセットからプロンプトを指定せずに特定の「ファッション雑誌」エフェクトを安定して再現できます。 |
以下のコードを実行する前に、Model Studio API キーを作成し、API キーを環境変数として設定してください。
ステップ 1:データセットのアップロード
ローカルのデータセット(.zip 形式)を Alibaba Cloud Model Studio プラットフォームにアップロードし、ファイル ID(id)を取得します。
トレーニングセットのサンプルデータ:フォーマットについては、トレーニングセットをご参照ください。
最初のフレームに基づく画像→動画:wan-i2v-training-dataset.zip。
最初および最後のフレームに基づく画像→動画:wan-kf2v-training-dataset.zip。
リクエスト例
この例では、最初のフレームに基づく画像→動画モデルを使用します。トレーニングセットのみをアップロードします。システムが自動的にトレーニングセットの一部を検証セットとして分割します。データセットのアップロードには数分かかります。正確な所要時間はファイルサイズによって異なります。
curl --location --request POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"./wan-i2v-training-dataset.zip"' \
--form 'purpose="fine-tune"'レスポンス例
id を保存してください。これはアップロードされたデータセットの固有識別子です。
{
"id": "file-ft-b2416bacc4d742xxxx",
"object": "file",
"bytes": 73310369,
"filename": "wan-i2v-training-dataset.zip",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1766127125
}ステップ 2:モデルのファインチューニング
ステップ 2.1:ファインチューニングジョブの作成
ステップ 1 で取得したファイル ID を使用して、学習ジョブを開始します。
ハイパーパラメーターの値はモデルごとに異なります。ハイパーパラメーターの設定については、ハイパーパラメーターをご参照ください。その他の呼び出し例については、リクエスト例をご参照ください。
リクエスト例
<replace_with_training_dataset_file_id> を、前のステップで取得した id に置き換えてください。
最初のフレームに基づく画像→動画
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model":"wan2.6-i2v",
"training_file_ids":[
"<replace_with_training_dataset_file_id>"
],
"training_type":"efficient_sft",
"hyper_parameters":{
"n_epochs":400,
"batch_size":2,
"learning_rate":2e-5,
"split":0.9,
"eval_epochs": 50,
"max_pixels": 36864
}
}'最初および最後のフレームに基づく画像→動画
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model":"wan2.2-kf2v-flash",
"training_file_ids":[
"<replace_with_training_dataset_file_id>"
],
"training_type":"efficient_sft",
"hyper_parameters":{
"n_epochs":400,
"batch_size":4,
"learning_rate":2e-5,
"split":0.9,
"eval_epochs": 50,
"max_pixels": 262144
}
}'レスポンス例
output 内の以下の 3 つの主要パラメーターにご注意ください:
job_id:タスク ID。進行状況の照会に使用します。finetuned_output:新しくファインチューニングされたモデルの名前。以降のデプロイメントおよび呼び出しでは、この名前を使用する必要があります。status:モデル学習のステータス。ファインチューニングジョブを作成すると、初期ステータスは PENDING(学習未開始)になります。
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "PENDING",
"finetuned_output": "xxxx-ft-202511111122-xxxx",
...
}
}ステップ 2.2:ファインチューニングジョブのステータス照会
ステップ 2.1 で取得した job_id を使用して、ジョブの進行状況を照会します。以下の API 操作を繰り返し呼び出して、status が SUCCEEDED になるまで待機してください。
この例のファインチューニングジョブは、学習に数時間かかります。正確な所要時間はファインチューニング対象のモデルによって異なります。しばらくお待ちください。
リクエスト例
URL 内の <replace_with_fine-tuning_job_id> を、job_id の値に置き換えてください。
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'レスポンス例
output フィールド内の以下の 2 つのパラメーターにご注意ください:
status:値が SUCCEEDED になった場合、モデルの学習が完了し、デプロイ可能です。usage:モデル学習に消費されたトークン総数(課金に使用されます)。
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "SUCCEEDED",
"usage": 432000,
...
}
}ステップ 3:ファインチューニング済みモデルのデプロイメント
ステップ 3.1:モデルをオンラインサービスとしてデプロイ
ファインチューニングジョブのステータスが SUCCEEDED になった後、モデルをオンラインサービスとしてデプロイします。
リクエスト例
<replace_with_model_name> を、ファインチューニングジョブの作成操作から得られた finetuned_output レスポンスパラメーターの値に置き換えてください。
最初のフレームに基づく画像→動画
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model_name": "<replace_with_model_name>",
"aigc_config": {
"use_input_prompt": false,
"prompt": "画像の内容に基づいて動画の説明を提供します。説明には「Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she/he stretches her/his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.」というフレーズを含める必要があります。\n出力テンプレート:\nThe video begins with a shot of [subject description]. [Environment description]. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she/he stretches her/his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.\n例:\nThe video begins showing a young woman standing in front of a brick wall covered with ivy. She has long, smooth reddish-brown hair, wearing a white sleeveless dress, a shiny silver necklace, and a smile on her face. The brick wall in the background is covered with green vines, appearing rustic and natural. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she stretches her arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.",
"lora_prompt_default": "Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she/he stretches her/his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain."
},
"capacity": 1,
"plan": "lora"
}'最初および最後のフレームに基づく画像→動画
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model_name": "<replace_with_model_name>",
"aigc_config": {
"use_input_prompt": false,
"prompt": "画像の内容に基づいて動画の説明を提供します。説明には「Then she/he begins the s86b5p transformation.」というフレーズを含める必要があります。\n出力テンプレート:\nThe video begins with a shot of [subject description]. [Environment description]. Then she/he begins the s86b5p transformation.\n例:\nThe video begins with a young woman in an outdoor setting. She has short, curly dark brown hair and a friendly smile. She is wearing a black Polo shirt with colorful floral embroidery. The background features green vegetation and distant mountains. Then she begins the s86b5p transformation.",
"lora_prompt_default": "Then she/he begins the s86b5p transformation."
},
"capacity": 1,
"plan": "lora"
}'レスポンス例
output 内の以下の 2 つのパラメーターにご注意ください:
deployed_model:デプロイされたモデルの名前。デプロイステータスの照会およびモデル呼び出しに使用します。status:モデルデプロイステータス。ファインチューニング済みモデルをデプロイすると、初期ステータスは PENDING(デプロイ未開始)になります。
{
...
"output": {
"deployed_model": "xxxx-ft-202511111122-xxxx",
"status": "PENDING",
...
}
}ステップ 3.2:デプロイステータスの照会
デプロイステータスを照会します。以下の API 操作を繰り返し呼び出して、status が RUNNING になるまで待機してください。
この例のファインチューニング済みモデルのデプロイプロセスは、5~10 分程度かかると予想されます。
リクエスト例
<replace_with_deployed_model> を、ステップ 3.1 で返された deployed_model パラメーターの値に置き換えてください。
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments/<replace_with_deployed_model>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' レスポンス例
output フィールド内の以下の 2 つのパラメーターにご注意ください:
status:ステータスが RUNNING になった場合、モデルのデプロイが完了し、呼び出し可能になります。deployed_model:デプロイされたモデルの名前。
{
...
"output": {
"status": "RUNNING",
"deployed_model": "xxxx-ft-202511111122-xxxx",
...
}
}ステップ 4:モデルを呼び出して動画を生成
モデルがデプロイされ(デプロイ status が RUNNING)、呼び出し可能になった後、利用できます。
カスタムデータセットの作成
本トピックで提供されるサンプルデータを使用してファインチューニングの流れを体験するほか、独自のデータセットを構築してファインチューニングを行うこともできます。
データセットにはトレーニングセット(必須)を含める必要があります。また、任意で検証セット(トレーニングセットから自動的に分割可能)を含めることもできます。すべてのファイルを .zip ファイルに圧縮してください。ファイル名には、英字、数字、アンダースコア (_)、ハイフン (-) のみを使用することを推奨します。
データセットフォーマット
トレーニングセット:必須
最初のフレームに基づく画像→動画
トレーニングセットには、最初のフレーム画像、トレーニング動画、およびアノテーションファイル (data.jsonl) が含まれます。
サンプルトレーニングセット: wan-i2v-training-dataset.zip。
ZIP パッケージのディレクトリ構造:
wan-i2v-training-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大サイズは 20 MB ├── image_1.jpeg # 最大画像解像度は 4096×4096。BMP、JPEG、PNG、WEBP 形式をサポート ├── video_1.mp4 # 最大動画解像度は 4096×4096。MP4、MOV 形式をサポート ├── image_2.jpeg └── video_2.mp4アノテーションファイル (data.jsonl):各行はトレーニングデータのエントリを表し、JSON オブジェクトである必要があります。トレーニングデータエントリの構造は以下の通りです:
{ "prompt": "The video begins showing a young woman standing in front of a brick wall covered with ivy. She has long, smooth reddish-brown hair, wearing a white sleeveless dress, a shiny silver necklace, and a smile on her face. The brick wall in the background is covered with green vines, appearing rustic and natural. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she stretches her arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.", "first_frame_path": "image_1.jpg", "video_path": "video_1.mp4" }
最初および最後のフレームに基づく画像→動画
トレーニングセットには、最初のフレーム画像、最後のフレーム画像、トレーニング動画、およびアノテーションファイル (data.jsonl) が含まれます。
サンプルトレーニングセット: wan-kf2v-training-dataset.zip。
ZIP パッケージのディレクトリ構造:
wan-kf2v-training-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大サイズは 20 MB ├── image/ # 最初および最後のフレーム画像を格納 │ ├── image_1_first.jpg # 最大画像解像度は 4096×4096。BMP、JPEG、PNG、WEBP 形式をサポート │ └── image_1_last.png └── video/ # 「トレーニング対象」としての動画ファイルを格納 ├── video_1.mp4 # 最大動画解像度は 4096×4096。MP4、MOV 形式をサポート └── video_2.movアノテーションファイル (data.jsonl):各行はトレーニングデータのエントリを表し、JSON オブジェクトである必要があります。トレーニングデータエントリの構造は以下の通りです:
{ "prompt": "The video begins by showing a young woman in an outdoor setting. She has short, curly dark brown hair, a smile on her face, and looks very friendly. She is wearing a black polo shirt with colorful floral embroidery, with a background of green vegetation and distant mountains. Then she begins the s86b5p transformation.", "first_frame_path": "image/image_1_first.jpg", "last_frame_path": "image/image_1_last.jpg", "video_path": "video/video_1.mp4" }
検証セット:任意
最初のフレームに基づく画像→動画
検証セットには、最初のフレーム画像およびアノテーションファイル (data.jsonl) が含まれます。動画は提供する必要はありません。各評価ノードで、トレーニングジョブは検証セットの画像およびプロンプトを使用して、モデルサービスを自動的に呼び出し、プレビュー動画を生成します。
サンプル検証セット: wan-i2v-valid-dataset.zip。
ZIP パッケージのディレクトリ構造:
wan-i2v-valid-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大サイズは 20 MB ├── image_1.jpeg # 最大画像解像度は 4096×4096。BMP、JPEG、PNG、WEBP 形式をサポート └── image_2.jpegアノテーションファイル (data.jsonl):各行は検証データのエントリを表し、JSON オブジェクトである必要があります。検証データエントリの構造は以下の通りです:
{ "prompt": "The video begins showing a scene of a young man standing in front of a cityscape. He is wearing a black and white checkered jacket over a black hoodie, with a smile on his face and a confident expression. The background is a city skyline at sunset, with a famous domed building and layered roofs visible in the distance, the sky filled with clouds showing warm orange-yellow hues. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding him. The bills continue to fall while the camera slowly zooms in, he stretches his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.", "first_frame_path": "image_1.jpg" }
最初および最後のフレームに基づく画像→動画
検証セットには、最初のフレーム画像、最後のフレーム画像、およびアノテーションファイル (data.jsonl) が含まれます。動画は提供する必要はありません。各評価ノードで、トレーニングジョブは検証セットの画像およびプロンプトを使用して、モデルサービスを自動的に呼び出し、プレビュー動画を生成します。
サンプル検証セット: wan-kf2v-valid-dataset.zip。
ZIP パッケージのディレクトリ構造:
wan-kf2v-valid-dataset.zip ├── data.jsonl # data.jsonl という名前にする必要があります。最大サイズは 20 MB └── image/ # 最初および最後のフレーム画像を格納 ├── image_1_first.jpg # 最大画像解像度は 4096×4096。BMP、JPEG、PNG、WEBP 形式をサポート └── image_1_last.jpgアノテーションファイル (data.jsonl):各行は検証データのエントリを表し、JSON オブジェクトである必要があります。検証データエントリの構造は以下の通りです:
{ "prompt": "The video begins showing a scene of a young man standing in front of a cityscape. He is wearing a black and white checkered jacket over a black hoodie, with a smile on his face and a confident expression. The background is a city skyline at sunset, with a famous domed building and layered roofs visible in the distance, the sky filled with clouds showing warm orange-yellow hues. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding him. The bills continue to fall while the camera slowly zooms in, he stretches his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.", "first_frame_path": "image/image_1_first.jpg", "last_frame_path": "image/image_1_last.jpg", }
データ量および制限事項
データ量:最低でも 10 件のデータエントリを提供してください。トレーニングデータが多いほど、結果は安定します。安定した結果を得るには、20~100 件を推奨します。
ZIP パッケージ:API を使用してアップロードする場合、パッケージの合計サイズは 1 GB 以下である必要があります。
トレーニング画像の要件:
対応形式:BMP、JPEG、PNG、WEBP。
画像解像度:4096×4096 以下。
単一画像ファイルのサイズには厳密な上限はありません。システムが自動的に前処理を行います。
トレーニング動画の要件:
対応形式:MP4、MOV。
動画解像度:4096×4096 以下。
単一動画ファイルのサイズには厳密な上限はありません。システムが自動的に前処理を行います。
単一動画の最大再生時間:wan2.2 モデルは 5 秒、wan2.5 モデルは 10 秒、wan2.6 モデルは 10 秒。
データ収集およびクリーニング
1. ファインチューニングのシナリオを決定
Wan がサポートする画像→動画生成のファインチューニングシナリオは、以下のとおりです:
固定された動画エフェクト:カルーセルや魔法の変身など、特定の視覚的変化をモデルに教える。
固定されたキャラクターの動作:ダンスの動きや武道の形など、特定の身体の動きを再現する能力を向上させる。
固定された動画カメラの動き:パンチルト、サラウンドショットなどの複雑なカメラ言語を再現する。
2. 原材料の取得
AI 生成および選定:Wan の基盤モデルを使用して動画を一括生成し、ターゲットエフェクトに最も適合する高品質なサンプルを手動で選定します。これは最も一般的な方法です。
実写撮影: hugs や handshakes など、高度にリアルなインタラクティブシーンを実現したい場合、実写映像を使用するのが最適です。
3D ソフトウェアによるレンダリング:詳細な制御が必要なエフェクトや抽象的なアニメーションの場合、Blender や C4D などの 3D ソフトウェアを使用して素材を作成することを推奨します。
3. データのクリーニング
次元 | 肯定的な要件 | 否定的な例 |
一貫性 | コア機能は非常に一貫している必要があります。 たとえば、「360 度回転」を学習する場合、すべての動画は概ね一定の速度で時計回りに回転する必要があります。 | 方向が混在。 データセットに時計回りと反時計回りの両方の回転が含まれています。モデルはどちらの方向を学習すべきか判断できません。 |
多様性 | 被写体およびシーンが豊富であるほど良い。 異なる被写体(男性、女性、高齢者、若者、猫、犬、建物)および異なる構図(クローズアップ、ロングショット、ハイアングル、ローアングル)をカバーしてください。また、解像度および縦横比も可能な限り多様にしてください。 | 単一のシーンまたは被写体。 すべての動画が「白い壁の前で赤い服を着た人物が回転している」ことを示しています。モデルは「赤い服」と「白い壁」がエフェクトの一部であると誤認し、服の色が変わると回転しなくなる可能性があります。 |
バランス | 異なるデータタイプの割合はバランスが取れている必要があります。 複数のスタイルが含まれている場合、それらの数量は概ね等しくする必要があります。 | 極端に不均衡な割合。 90% がポートレート動画で、10% がランドスケープ動画です。モデルはランドスケープ動画の生成時にパフォーマンスが低下する可能性があります。 |
純度 | クリーンで明瞭な画像。 干渉のない原材料を使用してください。 | 干渉要素。 動画にキャプション、局ロゴ、ウォーターマーク、目立つ黒枠、またはノイズが含まれています。モデルがウォーターマークをエフェクトの一部として学習してしまう可能性があります。 |
再生時間 | 素材の再生時間 ≤ ターゲット再生時間。 5 秒の動画を生成したい場合、素材は 4~5 秒に切り取るのが望ましいです。 | 素材が長すぎる。 5 秒の動画を生成したいのに 8 秒の素材をモデルに与えると、動作の学習が不完全になり、切断されたような印象を与えます。 |
動画のアノテーション:動画のためのプロンプト作成
データセットのアノテーションファイル (data.jsonl) では、各動画に対応するプロンプトが記述されています。このプロンプトは、動画の視覚的内容を説明します。プロンプトの品質は、モデルが学習する内容を直接決定します。
プロンプトの例 動画は、蔦で覆われたレンガ壁の前に立っている若い女性から始まります。彼女は長くて滑らかな赤褐色の髪をしており、白いノースリーブドレス、輝く銀色のネックレスを身に着け、笑顔を浮かべています。背景は、緑の蔦で覆われたレンガ壁で、素朴で自然な雰囲気です。その後、s86b5p マネーレイン効果が始まり、巨大な米ドル紙幣(ベージュ地に暗緑色の模様)が豪雨のように降り注ぎ、彼女を密集して打ち付け、取り囲みます。紙幣はカメラがゆっくりとズームインする中で降り続け、彼女は腕を上に伸ばし、首をわずかに後ろに傾けて驚いた表情を浮かべ、この野生のマネーレインに完全に没頭しています。 |
プロンプト作成の公式
プロンプト = [被写体の説明] + [背景の説明] + [トリガー語] + [動きの説明]
プロンプトの説明項目 | 説明 | 推奨事項 | 例 |
件名の説明 | シーン内に元々存在する人物または物体を説明します | 必須 | 動画は、若い女性が…から始まります。 |
背景の説明 | 被写体が位置する環境を説明します | 必須 | 背景は、緑の蔦で覆われたレンガ壁です…。 |
トリガー語 | 実際の意味を持たない珍しい単語 | 推奨 | s86b5p または m01aa |
動きの説明 | エフェクト発生時の動画内の動きの変化を詳細に説明します | 推奨 | 巨大な米ドル紙幣(ベージュ地に暗緑色の模様)が豪雨のように降り注ぎ…。 |
優れたプロンプトの作成方法
エフェクトの説明において一貫性の原則に従う
エフェクトを含むすべてのサンプルについて、エフェクトの動きの説明部分は可能な限り一貫している必要があります。このルールは、トレーニングセットおよび検証セットの両方に適用されます。
目的: モデルが
s86b5pの後に常に固定された説明が続き、シーンが常にマネーレインを示すことに気づくと、「s86b5p = マネーレインの視覚的エフェクト」と記憶します。例:「若い女性」でも「スーツを着た男性」でも、マネーレインエフェクトであれば、プロンプトの後半部分は一律に「…その後、s86b5p マネーレイン効果が始まり、巨大な米ドル紙幣が豪雨のように降り注ぎ…」と記述します。
サンプルタイプ
プロンプト内容(下線部の説明の一貫性にご注意ください)
トレーニングセットのサンプル 1
動画は、若い女性がレンガ壁の前に立っているところから始まります…(背景の説明は省略)…その後、s86b5p マネーレイン効果が始まり、巨大な米ドル紙幣(ベージュ地に暗緑色の模様)が豪雨のように降り注ぎ、彼女を密集して打ち付け、取り囲みます。紙幣は降り続け、彼女は腕を上に伸ばし、驚いた表情を浮かべ、この野生のマネーレインに完全に没頭しています。
トレーニングセットのサンプル 2
動画は、高級レストランにいるスーツを着た男性から始まります…(背景の説明は省略)…その後、s86b5p マネーレイン効果が始まり、巨大な米ドル紙幣(ベージュ地に暗緑色の模様)が豪雨のように降り注ぎ、彼を密集して打ち付け、取り囲みます。紙幣は降り続け、彼は腕を上に伸ばし、驚いた表情を浮かべ、この野生のマネーレインに完全に没頭しています。
検証セットのサンプル 1
動画は、都市景観の前にいる若い子供から始まります…(背景の説明は省略)…その後、s86b5p マネーレイン効果が始まり、巨大な米ドル紙幣(ベージュ地に暗緑色の模様)が豪雨のように降り注ぎ、彼を密集して打ち付け、取り囲みます。紙幣はカメラがゆっくりとズームインする中で降り続け、彼は腕を上に伸ばし、首をわずかに後ろに傾けて驚いた表情を浮かべ、この野生のマネーレインに完全に没頭しています。
AI を活用したプロンプト生成
高品質なプロンプトを取得するには、Qwen-VL などのマルチモーダル大規模言語モデル(LLM)を活用してプロンプトの生成を支援することを推奨します。
AI を使用して初期の説明を生成
アイデア出し(インスピレーションの獲得):エフェクトの説明方法が分からない場合、まず AI にアイデア出しを依頼できます。
「
動画のコンテンツを詳細に説明してください」を直接送信し、モデルの出力を確認します。モデルが使用するエフェクトの動きの軌道(例:「豪雨のように降り注ぐ」、「カメラがゆっくりとズームインする」)を説明する言葉に注目してください。これらの言葉は、後の最適化のための素材として使用できます。
固定された文構造(出力の標準化):一般的な考え方が得られた後、アノテーションの公式に基づいて固定された文構造を設計し、AI がフォーマットに準拠したプロンプトを生成するよう誘導できます。
エフェクトテンプレートの洗練
同じエフェクトを持つ複数のサンプルに対してこのプロセスを繰り返し実行し、エフェクトを説明するために使用される共通かつ正確なフレーズを特定することを推奨します。そこから、汎用的な「エフェクトの説明」を抽出してください。
この標準化されたエフェクトの説明を、そのエフェクトのすべてのデータセットにコピー&ペーストしてください。
各サンプルの固有の「被写体」および「背景」の説明は保持しますが、「エフェクトの説明」の部分は統一されたテンプレートに置き換えてください。
手動による確認
AI はハルシネーションを起こしたり、認識エラーを発生させたりする可能性があります。たとえば、被写体と背景の説明が実際のシーンと一致するかどうか、最終的な手動チェックで確認してください。
検証セットを用いたモデル評価
検証セットの指定
ファインチューニングジョブにはトレーニングセットの指定が必須ですが、検証セットの指定は任意です。検証セットをシステムが自動的に分割するか、手動でアップロードするかを選択できます。具体的な方法は以下のとおりです:
方法 1:検証セットをアップロードしない(システムが自動的に分割)
ファインチューニングジョブの作成時に、検証セットを指定する validation_file_ids パラメーターを渡さない場合、システムは以下の 2 つのハイパーパラメーターに基づいて、トレーニングセットの一部を検証セットとして自動的に分割します:
split:トレーニングセットのうちトレーニングに使用する割合。たとえば、0.9 はデータの 90% をトレーニングに使用し、残りの 10% を検証に使用することを意味します。max_split_val_dataset_sample:自動分割される検証セットの最大サンプル数。
検証セットの分割ルール:システムは、データセット全体のサイズ × (1 - split) と max_split_val_dataset_sample のうち小さい方の値を採用します。
例:トレーニングセットのみ 100 件をアップロードし、split=0.9(検証に 10% を使用)および max_split_val_dataset_sample=5 と仮定します。
理論上の分割:100 × 10% = 10 件。
実際の分割:min(10, 5) = 5。したがって、システムは検証セットに5 件のみを採用します。
方法 2:検証セットをアップロード(validation_file_ids を使用して指定)
システムのランダム分割に頼らず、独自に準備したデータを使用してチェックポイントを評価したい場合、カスタム検証セットをアップロードできます。
注:検証セットのアップロードを選択した場合、システムは完全に自動分割ルールを無視し、アップロードしたデータのみを検証に使用します。
デプロイメントに最適なチェックポイントの選択
学習プロセス中、システムは定期的にモデルの「スナップショット」(チェックポイント)を保存します。デフォルトでは、システムは最終チェックポイントを最終的なファインチューニング済みモデルとして出力します。ただし、中間プロセスで生成されたチェックポイントの方が最終バージョンよりも優れた効果を発揮する場合があります。そのようなチェックポイントをデプロイメントに選択できます。
システムは、ハイパーパラメーター eval_epochs で指定された間隔で、チェックポイントを検証セット上で実行し、プレビュー動画を生成します。
評価方法:生成されたプレビュー動画を直接観察して効果を判断します。
選択基準:効果が最も優れており、動作の歪みがないチェックポイントを選択します。
手順
ステップ 1:チェックポイントによって生成されたプレビュー効果の表示
ステップ 2:チェックポイントをエクスポートして、デプロイメント用のモデル名を取得
ステップ 3:モデルのデプロイメントと呼び出し
本番環境に適用
本番環境で、最初に学習したモデルのパフォーマンスが低い場合(例:フレームの破損、エフェクトの不明瞭さ、動作の不正確さ)、以下のディメンションに基づいてファインチューニングできます:
1. データとプロンプトの確認
データの一貫性:データの一貫性が重要です。逆方向の動きや大きく異なるスタイルの「不良サンプル」がないか確認してください。
サンプル数:高品質なデータエントリの数を20 件以上に増やすことを推奨します。
プロンプト:トリガー語が意味のない珍しい単語(例:s86b5p)であることを確認し、干渉を避けるために一般的な単語(例:running)の使用を避けてください。
2. ハイパーパラメーターの調整: パラメーターの説明については、ハイパーパラメーターをご参照ください。
n_epochs(学習エポック数)
デフォルト値:400。デフォルト値の使用を推奨します。調整する場合は、「合計学習ステップ数 ≥ 800」の原則に従ってください。
合計ステップ数の数式:
steps = n_epochs × ceil(トレーニングセットサイズ / batch_size)。したがって、最小 n_epochs の数式は:
n_epochs = 800 / ceil(データセットサイズ / batch_size)。例:トレーニングセットに 5 件のデータエントリがあり、Wan2.5 モデル(batch_size=2)を使用していると仮定します。
エポックあたりの学習ステップ数:5 / 2 = 2.5、切り上げて 3。合計学習エポック数:n_epochs = 800 / 3 ≈ 267。これが推奨される最小値です。ビジネスニーズに応じて、たとえば 300 に増やすことができます。
learning_rate、batch_size:デフォルト値の使用を推奨します。通常、これらを変更する必要はありません。
課金
モデル学習:課金対象。
コスト = 合計学習トークン数 × 単価。詳細については、モデル学習の課金をご参照ください。
学習完了後、ファインチューニングジョブのステータス照会 API の
usageフィールドで、学習中に消費された合計トークン数を確認できます。
モデルデプロイメント:無料。
モデル呼び出し:課金対象。
ファインチューニングされた基盤モデルの標準呼び出し価格で課金されます。詳細については、モデル価格をご参照ください。
API リファレンス
よくある質問
Q:トレーニングセットと検証セットのデータ量はどのように計算しますか?
A:トレーニングセットは必須で、検証セットは任意です。計算方法は以下のとおりです:
検証セットを渡さない場合:アップロードされたトレーニングセットが「データセット全体のサイズ」となります。システムはトレーニングセットの一部を自動的に検証用に分割します。
検証セットのサイズ =
min(データセット全体のサイズ × (1 − split), max_split_val_dataset_sample)。計算例については、検証セットの指定をご参照ください。トレーニングセットのエントリ数 =
データセット全体のサイズ − 検証セットのエントリ数。
検証セットをアップロードする場合:システムはトレーニングデータを検証用に分割しなくなります。
トレーニングセットのエントリ数 = アップロードされたトレーニングセットのデータ量。
検証セットのエントリ数 = アップロードされた検証セットのデータ量。
Q:良いトリガー語を設計するにはどうすればよいですか?
A:ルールは以下のとおりです:
意味のない文字の組み合わせを使用します。例:sksstyle、a8z2_bbb。
一般的な英単語(beautiful、fire、dance など)の使用は避けてください。これは、モデルがこれらの単語に対して元々持っている理解を妨げるためです。
Q:ファインチューニングで動画の解像度や再生時間を変更できますか?
A:いいえ。ファインチューニングはコンテンツと動きを学習するものであり、仕様を学習するものではありません。出力動画のフォーマット(解像度、フレームレート、最大再生時間)は、依然として基盤モデルによって決定されます。


