全部產品
Search
文件中心

Alibaba Cloud Model Studio:微調視頻產生模型

更新時間:Feb 26, 2026

當使用萬相進行圖生視頻時,若通過Prompt 最佳化或調用官方視頻特效仍無法滿足對特定動作、特效或風格的定製需求,請使用模型微調

適用範圍

  • 適用部署模式及地區:本文檔僅適用於國際部署模式下的新加坡地區,且必須使用該地區的API Key

  • 支援微調的方式:SFT-LoRA高效微調。

  • 支援微調的模型

    • 圖生視頻-基於首幀:wan2.6-i2v、wan2.5-i2v-preview、wan2.2-i2v-flash。

    • 圖生視頻-基於首尾幀:wan2.2-kf2v-flash。

如何微調模型

圖生視頻-基於首幀

微調目標:訓練一個“金錢雨特效”LoRA模型

預期效果:輸入一張首幀映像,無需提示詞,模型自動產生一段帶有“金錢雨特效”的視頻。

輸入首幀映像

image_3

輸出視頻(微調前)

無法通過提示詞每次產生固定運動的“金錢雨”特效(運動畫面不可控)。

輸出視頻(微調後)

微調後的模型無需提示詞即能穩定複現訓練集中的特定“金錢雨”特效。

圖生視頻-基於首尾幀

微調目標:訓練一個“時尚雜誌特效”LoRA模型。

預期效果:輸入一張首幀和尾幀映像,無需提示詞,模型自動產生一段帶有“時尚雜誌特效”的視頻。

輸入首幀映像

3_first

輸入尾幀映像

3_last

輸出視頻(微調前)

無法通過提示詞每次產生固定運動的“時尚雜誌”特效(運動畫面不可控)。

輸出視頻(微調後)

微調後的模型無需提示詞即能穩定複現訓練集中的特定“時尚雜誌”特效。

運行下述代碼前,請擷取API Key,並配置API Key

步驟1:上傳資料集

將本地的資料集(.zip 格式)上傳到阿里雲百鍊平台,並擷取檔案 ID (id)。

訓練集範例資料:格式請參見訓練集

請求樣本

本樣本使用圖生視頻-基於首幀模型,僅上傳訓練集,系統將自動從訓練集中劃分一部分作為驗證集。上傳資料集耗時約數分鐘,具體時間根據檔案大小而定。
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啟動訓練任務。

說明

不同模型的微調參數的值有所差異,超參數設定請參見超參數,更多調用樣本請參見請求樣本

請求樣本

請將<替換為訓練資料集的檔案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":[
        "<替換為訓練資料集的檔案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":[
        "<替換為訓練資料集的檔案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 中的三個關鍵參數:

  • 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 查詢任務進度,輪詢以下介面直到 status 變為 SUCCEEDED

說明

本文樣本的微調任務訓練需要數小時,具體耗時根據微調模型而定,請耐心等待。

請求樣本

請將 URL 中的 <替換為微調任務job_id> 完整替換為job_id的值。

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<替換為微調任務job_id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'

響應樣本

關注output 欄位的兩個參數:

  • status:當它的值變為 SUCCEEDED 時,表示模型已訓練完畢,可以進行模型部署。

  • usage:模型訓練消耗的總Token數量,用於模型訓練計費。

{
    ...
    "output": {
        "job_id": "ft-202511111122-xxxx",
        "status": "SUCCEEDED",
        "usage": 432000,
        ...
    }
}

步驟3:部署微調後的模型

步驟3.1 部署模型為線上服務

當微調任務的狀態為 SUCCEEDED 後,將模型部署為線上服務。

請求樣本

請將<替換為模型名稱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": "<替換為模型名稱model_name>",
    "aigc_config": {
        "use_input_prompt": false,
        "prompt": "Provide a video description based on the image content. The description must include the phrase “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.“\nOutput Template:\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.\nExample:\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": "<替換為模型名稱model_name>",
    "aigc_config": {
        "use_input_prompt": false,
        "prompt": "Provide a video description based on the image content. The description must include the phrase “Then she/he begins the s86b5p transformation.“\nOutput Template:\nThe video begins with a shot of [subject description]. [Environment description]. Then she/he begins the s86b5p transformation.\nExample:\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 中的兩個參數:

  • deployed_model:部署的模型名稱,用於查詢部署狀態和調用模型。

  • status:模型部署狀態。部署微調模型後,初始狀態為PENDING,表示部署未開始。

{
    ...
    "output": {
        "deployed_model": "xxxx-ft-202511111122-xxxx",
        "status": "PENDING",
        ...
    }
}
步驟3.2 查詢部署狀態

查詢部署狀態,輪詢以下介面直到 status 變為 RUNNING

說明

本文樣本的微調模型,部署過程預計需要 5~10分鐘

請求樣本

請將<替換為deployed_model>完整替換為步驟3.1輸出參數deployed_model的值。

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments/<替換為deployed_model>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

響應樣本

關注output欄位的兩個參數:

  • status:當狀態變為 RUNNING 時,表示模型已部署成功,可以開始調用。

  • deployed_model:部署的模型名稱。

{
    ...
    "output": {
        "status": "RUNNING",
        "deployed_model": "xxxx-ft-202511111122-xxxx",
        ...
    }
}

步驟4:調用模型產生視頻

模型部署成功後(即部署狀態status為 RUNNING ),即可發起調用。

步驟4.1:建立視頻產生任務,並擷取task_id

請求樣本

請將<替換為部署名稱deployed_model>完整替換為上一步輸出的deployed_model值。

圖生視頻-基於首幀

預期效果:輸入一張首幀映像,無需提示詞,模型自動根據映像產生一段帶有“金錢雨特效”的視頻。

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'X-DashScope-Async: enable' \
--data '{
    "model": "<替換為部署名稱deployed_model>",
    "input": {
        "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20251219/xmvyqn/lora.webp"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": false
    }
}'

響應樣本

請複製並儲存task_id,用於下一步結果查詢。

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

輸入參數說明

說明

調用微調後的 LoRA 模型時,輸入參數用法基本與圖生視頻-基於首幀API 一致。

下表僅列出 LoRA 模型特有的參數用法或特定限制。對於未在下表中提及的通用參數(例如 duration),請參照 API 文檔進行設定。

欄位

類型

必選

描述

樣本值

model

string

模型名稱。

必須使用已成功部署且部署狀態為RUNNING的微調模型。

xxxx-ft-202511111122-xxxx

input.prompt

string

文本提示詞。

此參數是否生效,取決於aigc_config.use_input_prompt 的配置:

  • use_input_prompt=true時:此參數生效。系統將根據這段提示詞來產生視頻。

  • use_input_prompt=false時:此參數會被忽略。系統將使用預置模板aigc_config.prompt自動產生提示詞。

-

input.img_url

string

首幀映像URL。

傳入方式請參見img_url參數

https://help-static-aliyun-doc.aliyuncs.com/xxx.jpg

parameters.resolution

string

產生的視頻解析度檔位。

wan2.2和wan2.5模型:480P、720P。預設值為720P。

wan2.6模型:720P、1080P。預設值為720P。

720P

parameters.prompt_extend

boolean

是否開啟prompt智能改寫。

調用微調的LoRA模型時,建議關閉,即設定為false。

false

圖生視頻-基於首尾幀

預期效果:輸入一張首幀和尾幀映像,無需提示詞,模型自動根據映像產生一段帶有“時尚雜誌特效”的視頻。

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image2video/video-synthesis' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'X-DashScope-Async: enable' \
--data '{
    "model": "<替換為部署名稱deployed_model>",
    "input": {
        "first_frame_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260113/typemn/kf2v-first.webp",
        "last_frame_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20260113/ekzmff/kf2v_last.webp"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": false
    }
}'

響應樣本

請複製並儲存task_id,用於下一步結果查詢。

{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}

輸入參數說明

說明

調用微調後的 LoRA 模型時,輸入參數用法基本與圖生視頻-基於首尾幀API一致。

下表僅列出 LoRA 模型特有的參數用法或特定限制。對於未在下表中提及的通用參數(例如 duration),請參照 API 文檔進行設定。

欄位

類型

必選

描述

樣本值

model

string

模型名稱。

必須使用已成功部署且狀態為RUNNING的微調模型。

xxxx-ft-202511111122-xxxx

input.prompt

string

文本提示詞。

此參數是否生效,取決於aigc_config.use_input_prompt 的配置:

  • use_input_prompt=true時:此參數生效。系統將根據這段提示詞來產生視頻。

  • use_input_prompt=false時:此參數會被忽略,無需傳入。系統將使用預置模板aigc_config.prompt自動產生提示詞。

-

input.first_frame_url

string

首幀映像URL。

傳入方式請參見first_frame_url參數

https://help-static-aliyun-doc.aliyuncs.com/xxx.jpg

input.last_frame_url

string

尾幀映像URL。

傳入方式請參見last_frame_url參數

https://help-static-aliyun-doc.aliyuncs.com/xxx.jpg

parameters.resolution

string

產生的視頻解析度檔位。

微調模型支援 480P、720P。預設值為720P。

720P

parameters.prompt_extend

boolean

是否開啟prompt智能改寫。

調用微調的LoRA模型時,建議關閉,即設定為false。

false

步驟4.2:根據task_id查詢結果

使用task_id輪詢任務狀態,直到 task_status 變為 SUCCEEDED,並擷取視頻URL。

請求樣本

請將86ecf553-d340-4e21-xxxxxxxxx替換為真實的task_id。
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

響應樣本

視頻URL有效期間為24小時,請及時下載視頻。
{
    "request_id": "c87415d2-f436-41c3-9fe8-xxxxxx",
    "output": {
        "task_id": "a017e64c-012b-431a-84fd-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-11-12 11:03:33.672",
        "scheduled_time": "2025-11-12 11:03:33.699",
        "end_time": "2025-11-12 11:04:07.088",
        "orig_prompt": "",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=xxxx"
    },
    "usage": {
        "duration": 5,
        "video_count": 1,
        "SR": 480
    }
}

構建自訂資料集

除了使用本文樣本資料體驗微調流程外,您也可以構建自己的資料集進行微調。

資料集應包含 訓練集(必須)和 驗證集(可選,支援從訓練集自動劃分)。所有檔案請打包為.zip 格式,檔案名稱建議僅使用英文、數字、底線或虛線。

資料集格式

訓練集:必須提供

圖生視頻-基於首幀

訓練集包括首幀映像、訓練視頻和標註檔案(data.jsonl)

  • 訓練集範例:wan-i2v-training-dataset.zip

  • zip包目錄結構:

    wan-i2v-training-dataset.zip
    ├── data.jsonl        # 必須固定命名為data.jsonl,最大支援 20MB
    ├── 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,最大支援 20MB
    ├── 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),無需提供視頻。訓練任務會在每個評估節點,自動調用模型服務,使用驗證集的映像和 Prompt 產生預覽視頻。

  • 驗證集範例wan-i2v-valid-dataset.zip

  • zip包目錄結構:

    wan-i2v-valid-dataset.zip
    ├── data.jsonl       # 必須固定命名為data.jsonl,最大支援 20MB
    ├── 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),無需提供視頻。訓練任務會在每個評估節點,自動調用模型服務,使用驗證集的映像和 Prompt 產生預覽視頻。

  • 驗證集範例:wan-kf2v-valid-dataset.zip

  • zip包目錄結構:

    wan-kf2v-valid-dataset.zip
    ├── data.jsonl                 # 必須固定命名為data.jsonl,最大支援 20MB
    └── 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 上傳時,總包大小 ≤ 1GB。

  • 訓練映像要求

    • 映像格式支援BMP、JPEG、PNG、WEBP。

    • 映像解析度 ≤ 4096×4096。

    • 單個影像檔大小無硬性限制(系統將自動預先處理)

  • 訓練視頻要求

    • 視頻格式支援 MP4、MOV。

    • 視頻解析度 ≤ 4096×4096。

    • 單個視頻檔案大小無硬性限制(系統將自動預先處理)。

    • 單個視頻時間長度:wan2.2模型 ≤ 5秒;wan2.5模型 ≤ 10秒;wan2.6模型 ≤ 10秒

資料收集和清洗

1. 確定微調情境

萬相支援圖生視頻的微調情境包括:

  • 固定視頻特效:讓模型學會某種特定的視覺變化,如旋轉木馬、魔法換裝等。

  • 固定人物動作:提升模型對特定肢體動作的複現度,如特定的舞蹈動作、武術招式。

  • 固定視頻運鏡:複刻複雜的鏡頭語言,如推拉搖移、環繞拍攝等固定模板。

2. 擷取原始素材
  • AI 產生篩選:利用“萬相”基本模型批量產生視頻,再人工挑選出最符合目標效果的優質樣本。這是最常用的方法。

  • 真實拍攝:如果您的目標是追求高真實感的互動情境(如擁抱、握手等),使用實拍素材是最佳選擇。

  • 三維軟體渲染:對於需要控制細節的特效或抽象動畫,建議使用 3D 軟體(如 Blender、C4D)製作素材。

3. 清洗資料

維度

正面要求

負面案例

一致性

核心特徵必須高度統一

例如:訓練“360度旋轉”,所有視頻必須都是順時針旋轉,且旋轉速度基本一致。

方向混雜

資料集中既有順時針,又有逆時針。模型不知道該學哪個方向。

多樣性

主體與情境越豐富越好

覆蓋不同主體(男女老少、貓狗建築)和不同構圖(遠近景、俯仰拍)。同時,解析度和長寬比應儘可能多樣化。

單一情境或主體

所有視頻都是“穿紅衣的人在白牆前旋轉”。模型會誤以為“紅衣”和“白牆”是特效的一部分,換了衣服就不會轉了。

均衡性

各類型資料比例均衡

如果包含多種風格,數量應大致相等。

比例嚴重失調

90%是人像視頻,10%是風景視頻。模型可能在產生風景視頻時效果不佳。

純淨度

畫面乾淨清晰

使用無幹擾的原始素材。

有幹擾元素

視頻中帶有字幕、台標、浮水印、明顯的黑邊或噪點。模型可能會把浮水印當成特效學進去

時間長度

素材時間長度 ≤ 目標時間長度

若期望產生5秒視頻,素材最好裁剪為4-5秒。

素材過長

期望產生5秒,卻餵給模型8秒的素材,會導致動作學習不完整,產生截斷感。

視頻標註:為視頻編寫Prompt

在資料集的標註檔案(data.jsonl)中,每個視頻都有對應的一段 Prompt。Prompt 是用來描述視頻的畫面內容,Prompt 的品質直接決定模型“學什麼”。

Prompt樣本

視頻開頭展示了一位年輕女性站在一堵爬滿常春藤的磚牆前。她有著一頭柔順的紅棕色長發,穿著一件白色的無袖連衣裙,佩戴著一條閃亮的銀色項鏈,面帶微笑。背景是被綠色的藤蔓覆蓋的磚牆,顯得古樸而自然。然後開始展示s86b5p金錢雨特效,無數巨大尺寸的美元鈔票(米黃底/深綠圖案)如暴雨般傾瀉而下,密集地砸向並環繞她。鈔票持續落下,她雙臂舒展上揚,脖頸微仰,表情驚喜,完全沉浸在這場狂野的金錢雨中。

Prompt編寫公式

Prompt = [主體描述] + [背景描述] + [觸發詞] + [運動描述]

Prompt描述項

說明

填寫建議

樣本

主體描述

描述畫面中原本存在的人或物

必填

視頻開頭展示了一位年輕女性...

背景描述

描述畫面中主體所處的環境

必填

背景是被綠色的藤蔓覆蓋的磚牆...

觸發詞

一個無實際意義的稀有詞彙

推薦填寫

s86b5p 或 m01aa

運動描述

詳細描述視頻中特效發生的運動變化

推薦填寫

無數巨大尺寸的美元鈔票(米黃底/深綠圖案)如暴雨般傾瀉而下...

關於“觸發詞”
  • 觸發詞是什嗎?

    它相當於一個 "視覺錨點" 。因為很多複雜的動態(如某種特殊的舞蹈軌跡、獨創的光影變化)很難用文字描述,所以用這個詞強制告訴模型:當你看到 s86b5p 時,就必鬚生成這種特定的視覺效果。

  • 為什麼要使用它?

    模型微調是建立“文本”與“視頻特徵”的映射關係。觸發詞就是那個把“難以言傳的特效”綁定到一個獨一無二的詞上,讓模型能夠鎖定目標。

  • 既然有了觸發詞,為什麼還要詳細描述運動?

    兩者分工不同,配合使用效果更好。

    • 運動描述:負責解釋 “畫面在發生什麼”。它告訴模型基礎的物理動作和邏輯,通常多個樣本的運動描述是一致的。

    • 觸發詞:負責解釋 “動作具體是什麼樣”。它代表了那些文字無法描述的獨特變化和特徵。

如何寫好Prompt

遵循特效描述的一致性原則

所有包含該特效的樣本,其特效的運動描述部分應盡量保持一致。訓練集和驗證集均遵守此規則。

  • 目的:當模型發現 s86b5p 出現時,後面總是跟著一段固定的描述,且畫面總是出現金錢雨,它就能記住:s86b5p = 金錢雨視覺效果。

  • 樣本:無論是“年輕女性”還是“西裝男性”,只要是金錢雨特效,Prompt 後半段都統一寫為:“...然後開始展示 s86b5p 金錢雨特效,無數美元鈔票如暴雨般傾瀉而下...

    樣本類型

    Prompt 內容(注意底線部分的描述一致性)

    訓練集樣本1

    視頻開頭展示了一位年輕女性站在磚牆前...(省略環境描述)...然後開始展示 s86b5p 金錢雨特效,無數巨大尺寸的美元鈔票(米黃底/深綠圖案)如暴雨般傾瀉而下,密集地砸向並環繞她。鈔票持續落下,她雙臂舒展上揚,表情驚喜,完全沉浸在這場狂野的金錢雨中。

    訓練集樣本2

    視頻開頭展示了一位西裝男性在高檔餐廳內...(省略環境描述)...然後開始展示 s86b5p 金錢雨特效,無數巨大尺寸的美元鈔票(米黃底/深綠圖案)如暴雨般傾瀉而下,密集地砸向並環繞他。鈔票持續落下,他雙臂舒展上揚,表情驚喜,完全沉浸在這場狂野的金錢雨中。

    驗證集樣本1

    視頻開頭展示了一位年輕小孩站在城市景觀前...(省略環境描述)...然後開始展示s86b5p金錢雨特效,無數巨大尺寸的美元鈔票(米黃底/深綠圖案)如暴雨般傾瀉而下,密集地砸向並環繞他。鈔票持續落下,同時鏡頭緩緩拉進,他雙臂舒展上揚,脖頸微仰,表情驚喜,完全沉浸在這場狂野的金錢雨中。

藉助 AI 產生  Prompt

為了獲得品質較高的Prompt,推薦使用Qwen-VL等多模態大模型來輔助產生視頻的Prompt。

  1. 使用 AI 輔助產生初始描述

    1. 自由發散(尋找靈感):如果不知道該如何描述特效,可以先讓 AI 自由發揮。

      • 直接發送“詳細描述視頻內容”,觀察模型輸出了什麼。

      • 重點看模型用了哪些詞彙來形容特效的運動軌跡(如“暴雨般傾瀉而下”、“鏡頭緩緩拉進”),這些詞彙可以作為後續最佳化的素材。

    2. 固定句式(規範輸出):當有了大概思路後,可基於標註公式設計一套固定句式,引導 AI 產生符合格式的 Prompt。

      範例程式碼

      代碼調用詳見映像與視頻理解
      import os
      from openai import OpenAI
      
      client = OpenAI(
          # 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
          # 若沒有配置環境變數,請用百鍊API Key將下行替換為:api_key="sk-xxx",
          api_key=os.getenv("DASHSCOPE_API_KEY"),
          # 以下為新加坡地區base_url,若使用北京地區的模型,需將base_url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
          base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
      )
      completion = client.chat.completions.create(
          model="qwen3-vl-plus",
          messages=[
              {"role": "user","content": [{
                  # 直接傳入的視訊檔案時,請將type的值設定為video_url
                  # 使用OpenAI SDK時,視頻檔案預設每間隔0.5秒抽取一幀,且不支援修改,如需自訂抽幀頻率,請使用DashScope SDK.
                  "type": "video_url",            
                  "video_url": {"url": "https://cloud.video.taobao.com/vod/Tm1s_RpnvdXfarR12RekQtR66lbYXj1uziPzMmJoPmI.mp4"}},
                  {"type": "text", "text": "請仔細分析視頻,並按照以下固定句式產生一段詳細的視頻描述"
                                          "句式模板:視頻開頭展示了[主體描述]。背景是[背景描述]。然後開始展示s86b5p融化特效,[詳細的運動描述]。"
                                          "要求:"
                                          "1.[主體描述]:詳細描述畫面中原本存在的人或物,包含人物/物體的外貌、衣著、表情等細節。"
                                          "2.[背景描述]:詳細描述主體所處的環境,包含環境、光影、天氣等細節。"
                                          "3.[運動描述]:詳細描述特效發生時的動態變化過程(如物體如何移動、光影如何變化、鏡頭如何變化)。"
                                          "4.所有內容必須自然融入句式中,不得保留“[ ]”符號,也不得添加任何與描述無關的文字。"}]
               }]
      )
      print(completion.choices[0].message.content)

  1. 提煉特效模板

    1. 建議對多個包含相同特效的樣本重複運行,找出描述特效時共同使用的高頻、準確片語,從中提煉出一段通用的“特效描述”。

    2. 將這段標準化的特效描述複製粘貼到該特效的所有資料集中。

    3. 保留每個樣本獨特的“主體”和“背景”描述,僅將“特效描述”部分替換為統一模板。

  1. 人工檢查

    AI 可能會產生幻覺或識別錯誤,最後請進行人工檢查,例如:確認主體和背景的描述是否符合畫面真實情況等。

使用驗證集評估模型

指定驗證集

微調任務必須包含訓練集,驗證集則是可選項。您可以選擇由系統自動劃分手動上傳驗證集,具體指定方式如下:

方式一:未上傳驗證集(系統自動劃分)

建立微調任務時,如果沒有單獨上傳驗證集,即未傳入validation_file_ids參數,系統將根據以下兩個超參數,自動從訓練集中劃分出一部分作為驗證集:

  • 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 條作為驗證集。

方式二:主動上傳驗證集(通過 validation_file_ids 指定)

如果您希望使用一套自己準備的資料來評估Checkpoint,而不是依賴系統隨機劃分,可以上傳自訂驗證集。

注意:一旦選擇主動上傳,系統將完全忽略上述自動劃分規則,僅使用您上傳的資料進行驗證。

操作步驟:主動上傳驗證集

  1. 準備驗證集:將驗證資料打包成一個獨立的 .zip 檔案,請參見驗證集格式

  2. 上傳驗證集:調用上傳資料集介面,上傳這個驗證集 .zip 檔案,獲得一個專屬的檔案ID。

  3. 建立任務時指定驗證集:在調用建立微調任務介面時,將這個檔案ID填入 validation_file_ids 參數中。

    {
        "model":"wan2.5-i2v-preview",
        "training_file_ids":[ "<訓練集的檔案id>" ],
        "validation_file_ids": [ "<自訂驗證集的檔案id>" ],
        ...
    }

挑選最佳Checkpoint進行部署

在訓練過程中,系統會定期儲存模型的“快照”(即 Checkpoint)。預設情況下,系統會輸出最後一個Checkpoint作為最終的微調模型。但中間過程產出的Checkpoint效果可能優於最終版本,您可以從中挑選出最滿意的一個進行部署。

系統將按照超參數eval_epochs設定的間隔,在驗證集上運行Checkpoint並產生預覽視頻。

  • 如何評估:通過直接觀察產生的預覽視頻來判斷效果。

  • 挑選標準:找到效果最好、且沒有動作變形的那個 Checkpoint 。

操作步驟

步驟1:查看Checkpoint產生的預覽效果
步驟1.1 查詢已通過驗證的Checkpoint列表

該介面僅返回通過驗證集驗證、且成功產生預覽視頻的 Checkpoint,驗證失敗的不會列出。

請求樣本

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<替換為微調任務job_id>/validation-results' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

響應樣本

此介面返回一個僅包含成功通過驗證的Checkpoint名稱的列表。

{
    "request_id": "da1310f5-5a21-4e29-99d4-xxxxxx",
    "output": [
        {
            "checkpoint": "checkpoint-160"
        },
        ...
    ]
}

步驟1.2 查詢Checkpoint對應的驗證集結果

從上一步返回的 Checkpoint 列表中選擇一個(例如“checkpoint-160”),查看其產生的視頻效果。

請求樣本

  • <替換為微調任務job_id>: 完整替換為建立微調任務輸出參數job_id的值。

  • <替換為待匯出的checkpoint>:完整替換為checkpoint的值,例如“checkpoint-160”。

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<替換為微調任務job_id>/validation-details/<替換為選擇的checkpoint>?page_no=1&page_size=10' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

響應樣本

預覽視頻URL為video_path,有效期間為24小時,請及時下載視頻並查看效果。重複此步驟,比較多個Checkpoint的效果,找出最滿意的一個。

{
    "request_id": "375b3ad0-d3fa-451f-b629-xxxxxxx",
    "output": {
        "page_no": 1,
        "page_size": 10,
        "total": 1,
        "list": [
            {
                "video_path": "https://finetune-swap-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?Expires=xxxx",
                "prompt": "視頻開頭展示了一位年輕男性坐在咖啡館的情境。他穿著一件米色的Polo衫,神情專註且略顯沉思,手指輕輕托著下巴。他的面前擺放著一杯熱氣騰騰的咖啡,背景是木質條紋的牆壁和一個裝飾牌。然後開始展示s86b5p金錢雨特效,無數巨大尺寸的美元鈔票(米黃底/深綠圖案)如暴雨般傾瀉而下,密集地砸向並環繞他。鈔票持續落下,他雙臂舒展上揚,脖頸微仰,表情驚喜,完全沉浸在這場狂野的金錢雨中。",
                "first_frame_path": "https://finetune-swap-wulanchabu.oss-cn-wulanchabu.aliyuncs.com/xxx.jpeg"
            }
        ]
    }
}

步驟2:匯出Checkpoint,並擷取待部署的模型名稱
步驟2.1 匯出模型

假設“checkpoint-160”的效果最佳,接下來是將其匯出。

請求樣本

  • <替換為微調任務job_id>: 完整替換為建立微調任務輸出參數job_id的值。

  • <替換為待匯出的checkpoint>:完整替換為checkpoint的值,例如“checkpoint-160”。

  • <替換為控制台展示的匯出模型名稱>:完整替換為自訂的模型名稱,僅用於控制台展示,例如“wan2.5-checkpoint-160”。該名稱必須全域唯一,不支援重複名稱多次匯出,參數填寫請參見匯出Checkpoint

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<替換為微調任務job_id>/export/<替換為待匯出的checkpoint>?model_name=<替換為控制台展示的匯出模型名稱>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

響應樣本

響應參數output=true,表示匯出請求已成功建立。

{
    "request_id": "0817d1ed-b6b6-4383-9650-xxxxx",
    "output": true
}
步驟2.2 查詢部署後的新模型名稱

查詢所有Checkpoint的狀態,確認匯出已完成,並擷取它專屬的、用於部署的新模型名稱(model_name)。

請求樣本

  • <替換為微調任務job_id> :完整替換為建立微調任務輸出參數job_id的值。

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<替換為微調任務job_id>/checkpoints' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

響應樣本

在返回列表中定位匯出的 Checkpoint(如 checkpoint-160)。當其 status 變為 SUCCEEDED 時,表示匯出成功;此時返回的 model_name 欄位即為匯出後的新模型名稱。

{
    "request_id": "b0e33c6e-404b-4524-87ac-xxxxxx",
    "output": [
         ...,
        {
            "create_time": "2025-11-11T13:27:29",
            "full_name": "ft-202511111122-496e-checkpoint-160",
            "job_id": "ft-202511111122-496e",
            "checkpoint": "checkpoint-160",                             
            "model_name": "xxxx-ft-202511111122-xxxx-c160", // 重要欄位,將用於模型部署和調用
            "model_display_name": "xxxx-ft-202511111122-xxxx", 
            "status": "SUCCEEDED" // 成功匯出的checkpoint
        },
        ...
        
    ]
}
步驟3:部署並調用模型

在成功匯出 Checkpoint 並擷取 model_name 後,請按照以下步驟執行後續操作:

  • 模型部署:在輸入參數 model_name,填入匯出後擷取到的具體值。

  • 模型調用:參照介面說明,調用已部署模型。

應用於生產環境

在實際生產中,如果初次訓練的模型效果不佳(如畫面崩壞、特效不明顯、動作不準確),可參考以下維度調優:

1. 檢查資料與Prompt

  • 資料一致性:資料一致性是核心。檢查是否有方向相反、風格差異過大的“差樣本”。

  • 樣本數量:建議將高品質資料增加至 20條以上

  • Prompt:確保觸發詞為無意義稀有詞(如 s86b5p),避免使用常用詞(如 running)造成幹擾。

2. 調整超參數:參數說明請參見超參數

  • n_epochs (訓練輪數)

    • 預設值:400,推薦使用預設值。若需調整,請遵循 “總訓練步數 (Steps) ≥ 800” 的原則。

    • 總步數計算公式: steps = n_epochs × 向上取整(訓練集大小 / batch_size)。

    • 因此,n_epochs最小值計算公式:n_epochs = 800 / 向上取整(資料集大小 / batch_size)

    • 樣本:假設訓練集有5條資料,使用Wan2.5模型(batch_size=2)。

      • 每輪訓練步數:5 / 2 = 2.5,向上取整為3。總的訓練輪數: n_epochs = 800 / 3 ≈ 267。此值為推薦的最小值,可根據實際業務適當調高,比如300。

  • learning_rate (學習率)、batch_size (批次大小)推薦使用預設值,通常無需修改。

計費說明

  • 模型訓練:收費。

  • 模型部署免費

  • 模型調用:收費。

    • 按微調的基本模型的標準調用價格計費,請參見模型價格

API文檔

視頻產生模型微調API參考

常見問題

Q:如何計算訓練集和驗證集的資料量?

A: 訓練集必須提供,驗證集可選。具體計算方式如下:

  • 當未傳入驗證集時:上傳的訓練集即為“資料集總數”,系統會自動從訓練集中划出一部分資料用於驗證。

    • 驗證集數量 = min(資料集總數 × (1 − split), max_split_val_dataset_sample)。計算樣本請參見指定驗證集

    • 訓練集數量 = 資料集總數 − 驗證集數量

  • 當主動上傳驗證集時:系統不再從訓練資料中劃分驗證集。

    • 訓練集數量 = 上傳的訓練集資料量。

    • 驗證集數量 = 上傳的驗證集資料量。

Q:如何設計一個好的觸發詞?

A: 規則如下:

  • 使用無意義的字母組合,如 sksstyle, a8z2_bbb。

  • 避免使用常用英語單詞(如 beautiful, fire, dance),否則會汙染模型原本對這些詞的理解。

Q:微調能改變視頻的解析度或時間長度嗎?

A: 不能。微調是學習“內容”和“動態”,不是改變“規格”。輸出視頻的格式(解析度、幀率、時間長度上限)依然由基本模型決定。