當使用萬相進行映像產生時,若通過Prompt 最佳化仍無法滿足對特定風格、IP形象或畫面效果的定製需求,請使用模型微調。
適用範圍
-
適用地區:本文描述的功能僅在新加坡地區可用,且必須使用該地區的API Key。
-
支援微調的方式:SFT-LoRA高效微調。
-
支援微調的模型:
-
映像產生(文生圖/圖生圖):wan2.7-image-pro、wan2.7-image。
-
如何微調模型
文生圖
微調目標:訓練一個人物LoRA模型。
預期效果:輸入一段提示詞,模型自動產生特定人物在符合提示詞情境下的描述。
|
輸入提示詞 人物在擁擠的早高峰地鐵車廂內,抓著扶手,背景是模糊的乘客和車窗外的隧道燈光,身穿普通的上班族白襯衫和黑色西褲,人物站立面向鏡頭,半身照,寫實抓拍感。 |
輸出映像(微調前-文生圖)
無參考圖無法產生特定人物形象。 |
輸出映像(微調後)
微調後的模型能穩定複現訓練集中的特定人物形象。 |
圖生圖
微調目標:訓練一個"末日廢土紅黑機甲"LoRA模型。
預期效果:輸入一張人物映像,無需提示詞,模型自動產生人物“末日廢土紅黑機甲”風格的映像。
|
輸入映像
|
輸出映像(微調前)
無法通過提示詞每次產生固定風格的“末日廢土紅黑機甲”特效。 |
輸出映像(微調後)
微調後的模型無需提示詞即能複現訓練集中的特定“末日廢土紅黑機甲”特效。 |
步驟1:上傳資料集
將本地的資料集(.zip 格式)上傳到阿里雲百鍊平台,並擷取檔案 ID (id)。
訓練集範例資料:格式請參見訓練集。
-
映像產生-文生圖:wan-image-t2i-training-dataset.zip
-
映像產生-圖生圖:wan-image-i2i-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-image-t2i-training-dataset.zip"' \
--form 'purpose="fine-tune"'
響應樣本
請儲存 id,這是上傳資料集的唯一標識。
{
"id": "file-ft-3c67043a747c-xxxxxx",
"object": "file",
"bytes": 73310369,
"filename": "wan-image-t2i-training-dataset.zip",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1782271893
}
步驟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.7-image-pro",
"training_datasets": [
{
"data_source_type": "file_id",
"file_id": "<替換為訓練資料集的檔案id>"
}
],
"training_type": "efficient_sft",
"hyper_parameters": {
"learning_rate": 3e-5,
"max_steps": 800,
"eval_steps": 200,
"max_token_length": "1k",
"gradient_clip": 0.5,
"weight_decay": 0.02,
"max_pixels": "1k",
"val_img_size": "1k",
"generation_type": "t2i",
"lora_rank": 32,
"save_total_limit": 10
}
}'
除使用步驟 1 擷取的檔案 ID 外,您還可以通過 OSS 掛載方式載入訓練資料集,請求樣本如下:
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.7-image-pro",
"training_datasets": [
{
"data_source_type": "oss_mount",
"mount_storage": {
"region": "ap-southeast-1",
"bucket": "example_bucket",
"file_path": "dataset/data.jsonl"
}
}
],
"training_type": "efficient_sft",
"hyper_parameters": {
"learning_rate": 3e-5,
"max_steps": 800,
"eval_steps": 200,
"max_token_length": "1k",
"gradient_clip": 0.5,
"weight_decay": 0.02,
"max_pixels": "1k",
"val_img_size": "1k",
"generation_type": "t2i",
"lora_rank": 32,
"save_total_limit": 10
}
}'
使用 OSS 掛載方式載入資料集時,需將未經壓縮的資料集檔案夾整體上傳到 OSS Bucket(如 dataset 檔案夾下包含 data.jsonl 及對應的圖片檔案),不支援 zip 檔案;掛載時指定 data.jsonl 的檔案路徑即可,無需單獨指定圖片檔案。OSS Bucket 所屬地區支援北京(cn-beijing)和新加坡(ap-southeast-1)。
訓練耗時(僅供參考):
-
文生圖(t2i):2K,300 步,約 77 分鐘。
-
圖生圖(i2i):2K,300 步,約 110 分鐘。
響應樣本
關注 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>",
"capacity": 1,
"plan": "lora"
}'
響應樣本
關注 output 中的兩個參數:
-
deployed_model:部署的模型名稱,用於查詢部署狀態和調用模型。 -
status:模型部署狀態。部署微調模型後,初始狀態為PENDING,表示部署未開始。
{
...
"output": {
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
"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": "wan2.7-image-pro-xxxxxxxxxxxx",
...
}
}
步驟4:調用模型產生映像
模型部署成功後(即部署狀態status為 RUNNING ),即可發起調用。
當前部署後的映像模型僅支援非同步呼叫,且返迴響應的message.content中無type欄位。
構建自訂資料集
除了使用本文樣本資料體驗微調流程外,您也可以構建自己的資料集進行微調。
資料集應包含 訓練集(必須)和 驗證集(可選,支援從訓練集自動劃分)。所有檔案請打包為.zip 格式,檔案名稱建議僅使用英文、數字、底線或虛線。
資料集格式
訓練集:必須提供
文生圖
訓練集包括訓練靶心圖表像和標註檔案(data.jsonl)。
-
zip包目錄結構:
wan-image-t2i-training-dataset.zip ├── data.jsonl # 必須固定命名為data.jsonl,最大支援 20MB ├── 1_0.png # 訓練靶心圖表像,最大解析度4096*4096,單張≤20MB,支援PNG/JPG/JPEG/WEBP/BMP ├── 1_1.png # 檔案名稱僅支援英文字元,平鋪結構(禁止子目錄) └── 1_2.png -
標註檔案(data.jsonl):每一行代表一條訓練資料,必須為 JSON 對象。
{ "prompt": "s86b5p, The character stands in a quiet private library in the afternoon, with tall dark walnut bookshelves behind, sunlight streaming through blinds casting striped light and shadow, wearing a soft beige cable-knit sweater, the character stands facing the camera, half-body shot, the image has a fine film grain texture.", "img_path": "./1_0.png" }
單圖生圖
訓練集包括參考映像(輸入)、訓練靶心圖表像(輸出)和標註檔案(data.jsonl)。
-
zip包目錄結構:
wan-image-i2i-training-dataset.zip ├── data.jsonl # 必須固定命名為data.jsonl,最大支援 20MB ├── 1_0.jpg # 訓練靶心圖表像(輸出) ├── 1_1.jpg # 參考映像(輸入) ├── 6_0.jpg # 訓練靶心圖表像(輸出) └── 6_1.jpg # 參考映像(輸入) -
標註檔案(data.jsonl):每一行代表一條訓練資料,必須為 JSON 對象。
{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.", "input_img": "./1_1.jpg", "img_path": "./1_0.jpg" }
多圖生圖
訓練集包括多張參考映像(輸入)、訓練靶心圖表像(輸出)和標註檔案(data.jsonl)。與單圖生圖不同,多圖生圖支援同時輸入多張參考映像(如人物照片+姿態圖,最多支援9張參考圖),模型基於多張參考圖的綜合資訊產生靶心圖表像。
-
多圖生圖使用
input_imgs(數組),單圖生圖使用input_img(字串),請注意區分。 -
input_imgs數組中的映像順序應與訓練意圖一致(如第一張為人物參考,第二張為姿態參考)。
-
訓練集範例:
-
zip包目錄結構:
wan-image-multi-i2i-training-dataset.zip ├── data.jsonl # 必須固定命名為data.jsonl,最大支援 20MB ├── 1_0.jpg # 訓練靶心圖表像(輸出) ├── 1_ref.jpg # 參考映像1(如人物照片) ├── 1_pose.jpg # 參考映像2(如姿態圖) ├── 2_0.jpg # 訓練靶心圖表像(輸出) ├── 2_ref.jpg # 參考映像1 └── 2_pose.jpg # 參考映像2 -
標註檔案(data.jsonl):每一行代表一條訓練資料,必須為 JSON 對象。使用
input_imgs欄位傳入多張參考映像路徑。{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Outside the windows, there is a post-apocalyptic scene with red mist. Change the character's clothing to red tight-fitting mech armor with black stripe decorations. Standing with both arms stretched horizontally to form a T-shape.", "input_imgs": ["./1_ref.jpg", "./1_pose.jpg"], "img_path": "./1_0.jpg" }
-
data.jsonl 必須為 Line-delimited JSONL 格式(每行一個獨立 JSON 對象),禁止使用 JSON 數組格式(即檔案首字元不能是
[)。 -
zip 包內檔案必須平鋪放置,禁止使用子目錄。檔案名稱僅支援英文字元(禁止中文、空格、特殊字元)。
驗證集:可選
驗證集包括標註檔案(data.jsonl)和可選的參考映像(圖生圖模式需要),無需提供靶心圖表像。訓練任務會在每個評估節點,自動調用模型服務,使用驗證集的 Prompt(和參考映像)產生預覽映像。
-
驗證集:
-
zip包目錄結構:
wan-image-i2i-valid-dataset.zip ├── data.jsonl # 必須固定命名為data.jsonl,最大支援 20MB ├── input_001.png # 可選,圖生圖模式的參考映像 └── input_002.png -
標註檔案(data.jsonl):每一行代表一條驗證資料,必須為 JSON 對象。
文生圖
{ "prompt": "s86b5p, The character is in a crowded morning rush hour subway car, holding onto a handrail, with blurred passengers in the background and tunnel lights outside the window, wearing a plain white office shirt and black trousers, the character stands facing the camera, half-body shot, realistic candid feel." }圖生圖
{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.", "input_img": "./input_001.png" }多圖生圖
多圖生圖驗證集使用
input_imgs(數組)傳入多張參考映像路徑,最多支援9張。{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Outside the windows, there is a post-apocalyptic scene with red mist. Change the character's clothing to red tight-fitting mech armor with black stripe decorations. Standing with both arms stretched horizontally to form a T-shape.", "input_imgs": ["./input_001.png", "./input_002.png"] }
資料規模與限制
-
資料量:建議至少提供 25張 映像(推薦 50 張以上效果更佳)。要求同一角色/風格,多情境多角度,內容描述一致。
-
Zip壓縮包:通過 API 上傳時,總包大小 ≤ 1GB。
-
訓練映像要求:
-
映像格式支援BMP、JPEG、PNG、WEBP。
-
映像解析度 ≤ 4096×4096。
-
單個影像檔大小 ≤ 20MB。
-
資料收集和清洗
1. 確定微調情境
萬相支援映像產生的微調情境包括:
-
IP角色風格化:讓模型學會特定IP角色的繪畫風格,如二次元人物、吉祥物形象等。
-
固定畫面風格:提升模型對特定藝術風格的複現度,如扁平插畫、水墨畫、像素風等。
-
特定情境產生:複刻特定的構圖模式或情境模板,如商品展示圖、海報版式等。
2. 擷取原始素材
-
AI 產生篩選:利用"萬相"基本模型批量產生映像,再人工挑選出最符合目標效果的優質樣本。這是最常用的方法。
-
真實拍攝:如果您的目標是追求高真實感的情境(如產品實拍、人物攝影等),使用實拍素材是最佳選擇。
-
三維軟體渲染:對於需要控制細節的情境或3D渲染風格,建議使用 3D 軟體(如 Blender、C4D)製作素材。
3. 清洗資料
|
維度 |
正面要求 |
負面案例 |
|
一致性 |
核心特徵必須高度統一。 例如:訓練"扁平插畫風格",所有映像必須都是相同的線條寬度和色彩配置。 |
風格混雜。 資料集中既有厚塗風格,又有扁平風格。模型不知道該學哪種風格。 |
|
多樣性 |
主體與情境越豐富越好。 覆蓋不同主體(男女老少、貓狗建築)和不同構圖(遠景、近景、特寫)。同時,解析度和長寬比應儘可能多樣化。 |
單一情境或主體。 所有映像都是"穿紅衣的人在白牆前"。模型會誤以為"紅衣"和"白牆"是風格的一部分,換了情境就不會產生了。 |
|
均衡性 |
各類型資料比例均衡。 如果包含多種風格,數量應大致相等。 |
比例嚴重失調。 90%是人像映像,10%是風景映像。模型可能在產生風景映像時效果不佳。 |
|
純淨度 |
畫面乾淨清晰。 使用無幹擾的原始素材。 |
有幹擾元素。 映像中帶有浮水印、明顯的黑邊或噪點。模型可能會把浮水印當成風格學進去。 |
|
解析度 |
解析度適中。 建議訓練映像解析度不超過 2048×2048,過大的映像會增加訓練時間。 |
解析度差異過大。 訓練集中既有 256×256 的小圖,又有 4096×4096 的大圖,會影響訓練穩定性。 |
映像標註:為映像編寫Prompt
在資料集的標註檔案(data.jsonl)中,每張映像都有對應的一段 Prompt。Prompt 是用來描述靶心圖表像的畫面內容,Prompt 的品質直接決定模型"學什麼"。
Prompt編寫公式
Prompt = [主體描述] + [背景描述] + [觸發詞] + [風格描述]
|
Prompt描述項 |
說明 |
填寫建議 |
樣本 |
|
主體描述 |
描述畫面中原本存在的人或物 |
必填 |
一位年輕女性身著紅色中式長衫... |
|
背景描述 |
描述畫面中主體所處的環境 |
必填 |
背景是被綠色的藤蔓覆蓋的磚牆... |
|
觸發詞 |
一個無實際意義的稀有詞彙 |
推薦填寫 |
s86b5p 或 m01aa |
|
風格描述 |
詳細描述靶心圖表像的藝術風格和畫面特徵 |
推薦填寫 |
採用扁平化插畫風格,以簡潔流暢的線條、鮮明平塗色彩突出主體立體感與現代設計感。 |
使用驗證集評估模型
指定驗證集
微調任務必須包含訓練集,驗證集則是可選項。您可以選擇由系統自動劃分或手動上傳驗證集,具體指定方式如下:
方式一:未上傳驗證集(系統自動劃分)
在建立微調任務時,如果沒有單獨上傳驗證集(即未傳入validation_datasets參數),系統將根據split從訓練集劃分驗證集,預設 0.9。即 90% 用於訓練,10% 用作驗證。
方式二:主動上傳驗證集(通過 validation_datasets 指定)
如果您希望使用一套自己準備的資料來評估Checkpoint,而不是依賴系統隨機劃分,可以上傳自訂驗證集。
注意:一旦選擇主動上傳,系統將完全忽略上述自動劃分規則,僅使用您上傳的資料進行驗證。
挑選最佳Checkpoint進行部署
在訓練過程中,系統會定期儲存模型的"快照"(即 Checkpoint)。預設情況下,系統會輸出最後一個Checkpoint作為最終的微調模型。但中間過程產出的Checkpoint效果可能優於最終版本,您可以從中挑選出最滿意的一個進行部署。
系統將按照超參數eval_steps設定的間隔,在驗證集上運行Checkpoint並產生預覽映像。
-
如何評估:通過直接觀察產生的預覽映像來判斷效果。
-
挑選標準:找到效果最好、且風格最貼合的那個 Checkpoint 。
操作步驟
步驟1:查看Checkpoint產生的預覽效果
步驟2:匯出Checkpoint,並擷取待部署的模型名稱
步驟3:部署並調用模型
計費說明
-
模型訓練:收費。詳情請參見模型訓練計費。
-
費用 = 訓練 Tokens 總量 × 單價。
-
訓練結束後,在查詢微調任務狀態介面
usage欄位查看訓練消耗的總 Token 數。
下表列出了wan2.7-image、wan2.7-image-pro不同組建類型訓練中常見訓練步數及預估費用。該資料僅供參考,實際訓練效果請以最終交付為準,費用請以正式賬單為準。詳細計費公式請參見模型訓練計費。
generation_type
圖片解析度
常見Step步數
Token消耗預估
費用預估
t2i(文生圖)
1K
500
6,400,000
$96
1000
12,800,000
$192
2000
25,600,000
$384
2K
500
11,610,000
$174.15
1000
23,220,000
$348.3
2000
46,440,000
$696.6
i2i(圖生圖)
1K
500
11,610,000
$174.15
1000
23,220,000
$348.3
2000
46,440,000
$696.6
2K
500
16,000,000
$240
1000
32,000,000
$480
2000
64,000,000
$960
-
-
模型部署與調用:部署免費,調用按微調的基本模型的標準調用價格計費。
模型名稱
Lora部署調用價格
wan2.7-image-pro
$0.075/張
wan2.7-image
$0.03/張
API文檔
常見問題
Q:如何設計一個好的觸發詞?
A: 規則如下:
-
推薦使用無實際語義的稀有字元組合,如 s86b5p、m01aa、EVEAven638123。確保在基模詞表中無語義含義。
-
避免使用常用英語單詞(如 beautiful, fire, dance),否則會汙染模型原本對這些詞的理解。




