Saat menggunakan Wan untuk image generation, jika Text-to-video/image-to-video prompt guide tidak dapat memenuhi kebutuhan kustomisasi Anda untuk gaya tertentu, karakter IP, atau efek visual, gunakan model fine-tuning.
Scope
-
Supported region: Dokumen ini hanya berlaku untuk wilayah Singapura. Anda harus menggunakan API key dari wilayah ini.
-
Supported fine-tuning method: Fine-tuning efisien SFT-LoRA.
-
Supported models:
-
Image generation (text-to-image/image-to-image): wan2.7-image-pro, wan2.7-image.
-
How to fine-tune a model
Text-to-image
Fine-tuning objective: Train a character LoRA model.
Hasil yang diharapkan: Diberikan prompt teks, model menghasilkan gambar karakter tertentu dalam adegan yang dijelaskan oleh prompt tersebut.
|
Input prompt A person in a crowded morning rush hour subway car, holding onto the handrail, with blurred passengers in the background and tunnel lights visible through the windows, wearing an ordinary office worker white shirt and black trousers, standing facing the camera, half-body shot, realistic candid feel. |
Output image (before fine-tuning - text-to-image)
Tanpa gambar referensi, model tidak dapat menghasilkan karakter tertentu. |
Output image (after fine-tuning)
Setelah fine-tuning, model dapat mereproduksi karakter tertentu dari set pelatihan secara konsisten. |
Image-to-image
Fine-tuning objective: Train a "post-apocalyptic red-black mech armor" LoRA model.
Hasil yang diharapkan: Diberikan gambar karakter, model menghasilkan versi bergaya "post-apocalyptic red-black mech armor" dari karakter tersebut tanpa memerlukan prompt teks.
|
Input image
|
Output image (before fine-tuning)
Prompt teks saja tidak dapat menghasilkan efek "post-apocalyptic red-black mech armor" secara konsisten setiap kali. |
Output image (after fine-tuning)
Setelah fine-tuning, model dapat mereproduksi efek "post-apocalyptic red-black mech armor" dari set pelatihan tanpa memerlukan prompt teks. |
Sebelum menjalankan kode berikut, Dapatkan Kunci API dan Konfigurasikan Kunci API sebagai variabel lingkungan.
Step 1: Upload the dataset
Unggah dataset lokal Anda (dalam format .zip) ke platform Alibaba Cloud Model Studio dan peroleh ID file (id).
Data sampel pelatihan: Untuk formatnya, lihat Training set.
-
Image generation - text-to-image: wan-image-t2i-training-dataset.zip
-
Image generation - image-to-image: wan-image-i2i-training-dataset.zip
Request example
Contoh ini menggunakan text-to-image dan hanya mengunggah set pelatihan. Sistem secara otomatis membagi sebagian dari set pelatihan sebagai set validasi.
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"'
Response example
Simpan id. Ini adalah pengenal unik untuk dataset yang diunggah.
{
"id": "file-ft-3c67043a747c-xxxxxx",
"object": "file",
"bytes": 73310369,
"filename": "wan-image-t2i-training-dataset.zip",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1782271893
}
Step 2: Fine-tune the model
Step 2.1: Create a fine-tuning job
Gunakan ID file dari Langkah 1 untuk memulai pekerjaan pelatihan.
Request example
Ganti <replace_with_training_dataset_file_id> dengan id yang diperoleh pada langkah sebelumnya. Untuk referensi parameter lengkap dan batasan format, lihat Hyperparameters.
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": "<replace_with_training_dataset_file_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
}
}'
Referensi durasi pelatihan:
-
Text-to-image (t2i): sekitar 77 menit untuk 300 langkah.
-
Image-to-image (i2i): sekitar 110 menit untuk 300 langkah.
Response example
Perhatikan tiga parameter utama dalam field output:
-
job_id: ID pekerjaan, digunakan untuk mengecek progres. -
finetuned_output: Nama model hasil fine-tuning. Anda harus menggunakan nama ini untuk penerapan dan pemanggilan selanjutnya. -
status: Status pelatihan. Setelah membuat pekerjaan fine-tuning, status awalnya adalah PENDING, yang menandakan bahwa pelatihan belum dimulai.
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "PENDING",
"finetuned_output": "xxxx-ft-202511111122-xxxx",
...
}
}
Step 2.2: Query the fine-tuning job status
Gunakan job_id yang diperoleh di Langkah 2.1 untuk mengecek progres pekerjaan. Poll API berikut hingga status berubah menjadi SUCCEEDED.
Request example
Ganti <replace_with_fine_tuning_job_id> di URL dengan nilai 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'
Response example
Perhatikan dua parameter dalam field output:
-
status: Ketika nilainya berubah menjadi SUCCEEDED, pelatihan model selesai dan Anda dapat melanjutkan ke penerapan model. -
usage: Total jumlah token yang dikonsumsi selama pelatihan model, digunakan untuk penagihan.
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "SUCCEEDED",
"usage": 432000,
...
}
}
Step 3: Deploy the fine-tuned model
Step 3.1: Deploy the model as an online service
Setelah status pekerjaan fine-tuning berubah menjadi SUCCEEDED, terapkan model sebagai layanan online.
Request example
Ganti <replace_with_model_name> dengan nilai finetuned_output dari output Create a fine-tuning job.
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>",
"capacity": 1,
"plan": "lora"
}'
Response example
Perhatikan dua parameter dalam field output:
-
deployed_model: Nama model yang diterapkan, digunakan untuk mengecek status penerapan dan memanggil model. -
status: Status penerapan model. Setelah menerapkan model hasil fine-tuning, status awalnya adalah PENDING, yang menandakan bahwa penerapan belum dimulai.
{
...
"output": {
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
"status": "PENDING",
...
}
}
Step 3.2: Query the deployment status
Cek status penerapan. Poll API berikut hingga status berubah menjadi RUNNING.
Untuk model hasil fine-tuning dalam contoh ini, proses penerapan memakan waktu sekitar 5–10 menit.
Request example
Ganti <replace_with_deployed_model> dengan nilai deployed_model dari output Langkah 3.1.
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'
Response example
Perhatikan dua parameter dalam field output:
-
status: Ketika status berubah menjadi RUNNING, model telah berhasil diterapkan dan Anda dapat mulai memanggilnya. -
deployed_model: Nama model yang diterapkan.
{
...
"output": {
"status": "RUNNING",
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
...
}
}
Step 4: Invoke the model to generate images
Setelah model berhasil diterapkan (status penerapan status adalah RUNNING), Anda dapat mulai melakukan pemanggilan.
Model yang saat ini diterapkan hanya mendukung panggilan asinkron, dan tidak ada field type dalam message.content.
Build custom datasets
Selain menggunakan data sampel dalam dokumen ini untuk mencoba alur kerja fine-tuning, Anda juga dapat membuat dataset sendiri untuk fine-tuning.
Dataset harus berisi set pelatihan (wajib) dan set validasi (opsional; mendukung pemisahan otomatis dari set pelatihan). Kemas semua file dalam format .zip . Nama file hanya boleh berisi karakter Inggris, angka, garis bawah, atau tanda hubung.
Dataset format
Training set: Required
Text-to-image
Set pelatihan mencakup gambar target pelatihan dan file anotasi (data.jsonl).
-
Set pelatihan sampel: wan-image-t2i-training-dataset.zip
-
Struktur direktori paket zip:
wan-image-t2i-training-dataset.zip ├── data.jsonl # Harus bernama data.jsonl, maksimal 20MB ├── 1_0.png # Gambar target pelatihan, resolusi maks 4096*4096, maks 20MB per gambar, mendukung PNG/JPG/JPEG/WEBP/BMP ├── 1_1.png # Nama file hanya mendukung karakter Inggris, struktur datar (tanpa subdirektori) └── 1_2.png -
File anotasi (data.jsonl): Setiap baris merepresentasikan satu sampel pelatihan dan harus berupa objek JSON.
{ "prompt": "s86b5p, A person in a quiet private library on a peaceful afternoon, with tall dark walnut bookshelves behind them, sunlight streaming through venetian blinds casting striped shadows, wearing a soft beige cable-knit sweater, standing facing the camera, half-body shot, the image has a delicate film grain texture.", "img_path": "./1_0.png" }
Image-to-image
Set pelatihan mencakup gambar referensi (input), gambar target pelatihan (output), dan file anotasi (data.jsonl).
-
Set pelatihan sampel: wan-image-i2i-training-dataset.zip
-
Struktur direktori paket zip:
wan-image-i2i-training-dataset.zip ├── data.jsonl # Harus bernama data.jsonl, maksimal 20MB ├── 1_0.jpg # Gambar target pelatihan (output) ├── 1_1.jpg # Gambar referensi (input) ├── 6_0.jpg # Gambar target pelatihan (output) └── 6_1.jpg # Gambar referensi (input) -
File anotasi (data.jsonl): Setiap baris merepresentasikan satu sampel pelatihan dan harus berupa objek 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" }
Multi-image-to-image
Set pelatihan mencakup beberapa gambar referensi (input), gambar target pelatihan (output), dan file anotasi (data.jsonl). Berbeda dengan image-to-image tunggal, multi-image-to-image mendukung input beberapa gambar referensi sekaligus (misalnya foto karakter + gambar pose, hingga 9 gambar referensi). Model menghasilkan gambar target berdasarkan informasi gabungan dari semua gambar referensi.
-
Set pelatihan sampel:
-
Struktur direktori paket zip:
wan-image-multi-i2i-training-dataset.zip ├── data.jsonl # Harus bernama data.jsonl, maksimal 20MB ├── 1_0.jpg # Gambar target pelatihan (output) ├── 1_ref.jpg # Gambar referensi 1 (misalnya foto karakter) ├── 1_pose.jpg # Gambar referensi 2 (misalnya gambar pose) ├── 6_0.jpg # Gambar target pelatihan (output) ├── 6_ref.jpg # Gambar referensi 1 └── 6_pose.jpg # Gambar referensi 2 -
File anotasi (data.jsonl): Setiap baris merepresentasikan satu sampel pelatihan dan harus berupa objek JSON. Gunakan field
input_imgs(tipe array) untuk mengirimkan beberapa path gambar referensi.{ "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" }
-
Multi-image-to-image menggunakan
input_imgs(array), sedangkan image-to-image tunggal menggunakaninput_img(string). Harap perhatikan perbedaannya. -
Urutan gambar dalam array
input_imgsharus konsisten dengan tujuan pelatihan (misalnya gambar pertama sebagai referensi karakter, yang kedua sebagai referensi pose). -
input_imgsmendukung hingga 9 gambar referensi.
-
data.jsonl harus dalam format JSONL berbasis baris (satu objek JSON independen per baris). Menggunakan format array JSON (di mana karakter pertama file adalah
[) tidak diperbolehkan. -
File dalam paket zip harus ditempatkan dalam struktur datar. Subdirektori tidak diperbolehkan. Nama file hanya mendukung karakter Inggris (karakter Cina, spasi, dan karakter khusus tidak diperbolehkan).
Validation set: Optional
Set validasi mencakup file anotasi (data.jsonl) dan gambar referensi opsional (wajib untuk mode image-to-image). Gambar target tidak diperlukan. Pada setiap checkpoint evaluasi, pekerjaan pelatihan secara otomatis memanggil layanan model untuk menghasilkan gambar pratinjau menggunakan prompt (dan gambar referensi) dari set validasi.
-
Set validasi:
-
Text-to-image: wan-image-t2i-valid-dataset.zip
-
Image-to-image: wan-image-i2i-valid-dataset.zip
-
-
Struktur direktori paket zip:
wan-image-i2i-valid-dataset.zip ├── data.jsonl # Harus bernama data.jsonl, maksimal 20MB ├── input_001.png # Opsional, gambar referensi untuk mode image-to-image └── input_002.png -
File anotasi (data.jsonl): Setiap baris merepresentasikan satu sampel validasi dan harus berupa objek JSON.
Text-to-image
{ "prompt": "s86b5p, A person in a crowded morning rush hour subway car, holding onto the handrail, with blurred passengers in the background and tunnel lights visible through the windows, wearing an ordinary office worker white shirt and black trousers, standing facing the camera, half-body shot, realistic candid feel." }Image-to-image
{ "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" }Multi-image-to-image
Set validasi multi-image-to-image menggunakan
input_imgs(array) untuk mengirimkan beberapa path gambar referensi, mendukung hingga 9 gambar.{ "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"] }
Data scale and limits
-
Data volume: Kami menyarankan menyediakan minimal 25 gambar (50 atau lebih direkomendasikan untuk hasil yang lebih baik). Gunakan karakter atau gaya yang sama di berbagai adegan dan sudut pandang dengan deskripsi konten yang konsisten.
-
Zip package: Saat mengunggah melalui API, ukuran total paket tidak boleh melebihi 1 GB.
-
Training image requirements:
-
Format gambar yang didukung: BMP, JPEG, PNG, dan WEBP.
-
Resolusi gambar tidak boleh melebihi 4096×4096.
-
Ukuran file gambar individual tidak boleh melebihi 20 MB.
-
Data collection and cleaning
1. Determine the fine-tuning scenario
Wan mendukung skenario fine-tuning berikut untuk image generation:
-
IP character stylization: Latih model untuk mempelajari gaya menggambar karakter IP tertentu, seperti karakter anime atau gambar maskot.
-
Fixed visual style: Tingkatkan kemampuan model untuk mereproduksi gaya seni tertentu, seperti ilustrasi datar, lukisan tinta, atau seni piksel.
-
Specific scene generation: Replikasi pola komposisi atau templat adegan tertentu, seperti gambar tampilan produk atau tata letak poster.
2. Obtain raw materials
-
Generasi AI dan seleksi: Gunakan model dasar Wan untuk menghasilkan gambar secara massal, lalu pilih secara manual sampel berkualitas tinggi yang paling sesuai dengan efek target. Ini adalah metode yang paling umum digunakan.
-
Fotografi nyata: Jika tujuan Anda adalah mencapai adegan yang sangat realistis (seperti foto produk nyata atau potret fotografi), menggunakan rekaman hasil jepretan nyata adalah pilihan terbaik.
-
Rendering perangkat lunak 3D: Untuk adegan yang memerlukan kontrol detail halus atau gaya rendering 3D, kami menyarankan menggunakan perangkat lunak 3D (seperti Blender atau C4D) untuk membuat materi sumber.
3. Clean the data
|
Dimension |
Best practice |
Anti-pattern |
|
Consistency |
Fitur inti harus sangat konsisten. Contoh: Saat melatih "gaya ilustrasi datar", semua gambar harus memiliki ketebalan garis dan skema warna yang sama. |
Gaya campuran. Dataset berisi gambar bergaya impasto dan bergaya datar. Model tidak dapat menentukan gaya mana yang harus dipelajari. |
|
Diversity |
Semakin beragam subjek dan adegan, semakin baik. Cakup berbagai subjek (pria, wanita, lansia, anak-anak, kucing, anjing, bangunan) dan komposisi berbeda (long shot, close-up, extreme close-up). Resolusi dan rasio aspek juga harus bervariasi sebanyak mungkin. |
Adegan atau subjek tunggal. Semua gambar menunjukkan "seseorang berpakaian merah di depan dinding putih". Model mungkin salah mengira bahwa "pakaian merah" dan "dinding putih" adalah bagian dari gaya, sehingga gagal menghasilkan dengan benar di adegan berbeda. |
|
Balance |
Proporsi seimbang di seluruh jenis data. Jika mencakup beberapa gaya, jumlahnya harus kira-kira sama. |
Proporsi sangat tidak seimbang. 90% adalah gambar potret dan 10% adalah gambar lanskap. Model mungkin berkinerja buruk saat menghasilkan gambar lanskap. |
|
Cleanliness |
Gambar bersih dan jelas. Gunakan materi asli tanpa gangguan. |
Berisi elemen gangguan. Gambar berisi watermark, batas hitam jelas, atau noise. Model mungkin mempelajari watermark sebagai bagian dari gaya. |
|
Resolution |
Resolusi moderat. Kami menyarankan resolusi gambar pelatihan tidak melebihi 2048×2048. Gambar yang terlalu besar meningkatkan waktu pelatihan. |
Resolusi sangat bervariasi. Memiliki gambar kecil 256×256 dan gambar besar 4096×4096 dalam set pelatihan memengaruhi stabilitas pelatihan. |
Image annotation: Writing prompts for images
Dalam file anotasi dataset (data.jsonl), setiap gambar memiliki prompt yang sesuai. Prompt tersebut menggambarkan konten gambar target. Kualitas prompt secara langsung menentukan apa yang dipelajari model.
Prompt writing formula
Prompt = [Deskripsi subjek] + [Deskripsi latar belakang] + [Kata pemicu] + [Deskripsi gaya]
|
Prompt component |
Description |
Recommendation |
Example |
|
Subject description |
Menggambarkan orang atau objek dalam gambar |
Required |
A young woman wearing a red Chinese-style long shirt... |
|
Background description |
Menggambarkan lingkungan tempat subjek berada |
Required |
The background is a brick wall covered with green vines... |
|
Trigger word |
Kata langka yang tidak memiliki makna sebenarnya |
Recommended |
s86b5p or m01aa |
|
Style description |
Menggambarkan gaya seni dan karakteristik visual gambar target secara detail |
Recommended |
Rendered in flat illustration style with clean flowing lines and vivid flat colors to emphasize three-dimensionality and modern design aesthetics. |
Evaluate models with validation sets
Specify the validation set
Pekerjaan fine-tuning harus mencakup set pelatihan, sedangkan set validasi bersifat opsional. Anda dapat memilih agar sistem secara otomatis membagi atau mengunggah secara manual set validasi. Metode spesifiknya sebagai berikut:
Metode 1: Tidak mengunggah set validasi (pembagian otomatis sistem)
Saat Video and image generation model fine-tuning API, jika tidak mengunggah set validasi secara terpisah (yaitu parameter validation_file_ids tidak disediakan), sistem membagi set validasi dari set pelatihan berdasarkan split, yang default-nya 0,9. Artinya 90% digunakan untuk pelatihan dan 10% untuk validasi.
Metode 2: Mengunggah set validasi secara manual (ditentukan melalui validation_file_ids)
Jika Anda ingin menggunakan data yang telah Anda siapkan sendiri untuk mengevaluasi checkpoint alih-alih mengandalkan pembagian acak sistem, Anda dapat mengunggah set validasi kustom.
Catatan: Setelah Anda memilih untuk mengunggah secara manual, sistem sepenuhnya mengabaikan aturan pembagian otomatis di atas dan hanya menggunakan data yang Anda unggah untuk validasi.
Select the best checkpoint for deployment
Selama pelatihan, sistem secara berkala menyimpan "snapshot" model (yaitu checkpoint). Secara default, sistem mengeluarkan checkpoint terakhir sebagai model hasil fine-tuning akhir. Namun, checkpoint yang dihasilkan selama tahap antara mungkin berkinerja lebih baik daripada versi akhir. Anda dapat memilih yang paling memuaskan untuk diterapkan.
Sistem menjalankan checkpoint pada set validasi dan menghasilkan gambar pratinjau pada interval yang ditetapkan oleh Hyperparameters (hyper_parameters) eval_steps.
-
Cara mengevaluasi: Nilai hasilnya dengan langsung mengamati gambar pratinjau yang dihasilkan.
-
Kriteria pemilihan: Temukan checkpoint dengan hasil terbaik dan gaya yang paling sesuai.
Procedure
Step 1: View preview results generated by checkpoints
Step 2: Export the checkpoint and obtain the model name for deployment
Step 3: Deploy and invoke the model
Billing
-
Model training: Charged.
-
Biaya = Total token pelatihan × Harga satuan. Lihat Training and deployment pricing.
-
Setelah pelatihan selesai, periksa total jumlah token yang dikonsumsi selama pelatihan di field
usagedari API Retrieve a fine-tuning job.
Tabel berikut mencantumkan jumlah langkah pelatihan dan perkiraan biaya untuk wan2.7-image, wan2.7-image-pro. Data ini hanya untuk referensi. Hasil pelatihan aktual mengikuti pengiriman akhir, dan biaya mengikuti tagihan resmi. Untuk rumus penagihan detail, lihat Training and deployment pricing.
generation_type
Image Resolution
Common Step Count
Estimated Token Consumption
Estimated Cost
t2i (text-to-image)
1K
500
6.400.000
$96
1.000
12.800.000
$192
2.000
25.600.000
$384
2K
500
11.610.000
$174,15
1.000
23.220.000
$348,3
2.000
46.440.000
$696,6
i2i (image-to-image)
1K
500
11.610.000
$174,15
1.000
23.220.000
$348,3
2.000
46.440.000
$696,6
2K
500
16.000.000
$240
1.000
32.000.000
$480
2.000
64.000.000
$960
-
-
Model deployment and invocation: Penerapan gratis. Pemanggilan dikenai biaya sesuai tarif standar model dasar hasil fine-tuning.
Model ID
LoRA Deployment & Invocation Price
wan2.7-image-pro
$0,075/image
wan2.7-image
$0,03/image
API reference
FAQ
Q: How do I design a good trigger word?
A: Aturannya sebagai berikut:
-
Kami menyarankan menggunakan kombinasi karakter langka yang tidak memiliki makna semantik sebenarnya, seperti s86b5p, m01aa, atau EVEAven638123. Pastikan tidak ada makna semantik dalam kosakata model dasar.
-
Hindari penggunaan kata bahasa Inggris umum (seperti beautiful, fire, atau dance), karena hal ini akan mencemari pemahaman asli model terhadap kata-kata tersebut.




