All Products
Search
Document Center

Alibaba Cloud Model Studio:Fine-tune image generation models

Last Updated:Jul 11, 2026

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)

7217b6ac-789d-43c3-aaa5-22647532de52_0

Tanpa gambar referensi, model tidak dapat menghasilkan karakter tertentu.

Output image (after fine-tuning)

1_24

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

29_0

Output image (before fine-tuning)

output_0_0

Prompt teks saja tidak dapat menghasilkan efek "post-apocalyptic red-black mech armor" secara konsisten setiap kali.

Output image (after fine-tuning)

29_1

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.

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
    }
}'
Catatan

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.

Catatan

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.

Catatan

Model yang saat ini diterapkan hanya mendukung panggilan asinkron, dan tidak ada field type dalam message.content.

Step 4.1: Create an image generation task and obtain the task_id

Request example

Ganti <replace_with_deployed_model> dengan nilai deployed_model dari langkah sebelumnya.

Text-to-image

Berikan deskripsi teks yang berisi kata pemicu. Model akan menghasilkan gambar yang sesuai dengan gaya yang dilatih.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "<replace_with_deployed_model>",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"text": "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."}
                ]
            }
        ]
    },
    "parameters": {
        "size": "2K",
        "n": 1
    }
}'

Image-to-image

Berikan gambar referensi dan instruksi pengeditan. Model akan menghasilkan gambar berdasarkan gambar referensi dalam gaya yang dilatih.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "<replace_with_deployed_model>",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"image": "<replace_with_reference_image_URL>"},
                    {"text": "s86b5p, Change the background to an elevator with red lighting. Change the character clothing to red tight-fitting mech armor with black stripe decorations."}
                ]
            }
        ]
    },
    "parameters": {
        "size": "2K",
        "n": 1
    }
}'

Response example

Salin dan simpan task_id untuk mengecek hasil pada langkah berikutnya.

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

Input parameters

Catatan

Saat memanggil model LoRA hasil fine-tuning, parameter input sama dengan parameter untuk Wan2.7 - image generation and editing.

Tabel berikut hanya mencantumkan parameter utama untuk pemanggilan model LoRA.

Field

Type

Required

Description

Example

model

string

Yes

Nama model. Anda harus menggunakan model hasil fine-tuning yang telah berhasil diterapkan dengan status RUNNING.

wan2.7-image-pro-xxxxxxxxxxxx

input.messages[].content[].text

string

Yes

Prompt teks. Kami menyarankan menyertakan kata pemicu untuk mengaktifkan gaya LoRA.

s86b5p, A person in a quiet private library on a peaceful afternoon...

parameters.size

string

No

Resolusi gambar output.

  • Opsi 1: Tentukan resolusi output (disarankan)

    • Mendukung 1K, 2K (default), dan 4K

    • Mode yang berlaku:

      • Text-to-image: mendukung 1K, 2K, dan 4K.

      • Image editing: mendukung 1K dan 2K.

    • Total piksel per resolusi: 1K: 1024*1024, 2K: 2048*2048, 4K: 4096*4096

  • Opsi 2: Tentukan nilai piksel lebar dan tinggi

    • Text-to-image: Total piksel harus berada di antara [768*768, 4096*4096], dengan rasio aspek [1:8, 8:1].

    • Image editing: Total piksel harus berada di antara [768*768, 2048*2048], dengan rasio aspek [1:8, 8:1].

2K

parameters.n

integer

No

Jumlah gambar yang akan dihasilkan. Nilai valid: 1–4. Default: 1.

1

Step 4.2: Query results by task_id

Poll status tugas menggunakan task_id hingga task_status berubah menjadi SUCCEEDED. Ambil URL gambar dari output.choices[].message.content[].image.

Request example

Ganti 86ecf553-d340-4e21-xxxxxxxxx dengan task_id Anda yang sebenarnya.
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

URL gambar berlaku selama 24 jam. Unduh gambar segera.
{
    "request_id": "3f2ebb4e-3d47-97b5-xxxx-xxxxxx",
    "output": {
        "task_id": "aeea547c-e24e-4acb-xxxx-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-05-29 17:35:23.826",
        "scheduled_time": "2026-05-29 17:35:23.865",
        "end_time": "2026-05-29 17:36:32.498",
        "finished": true,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-7c2c.oss-accelerate.aliyuncs.com/xxx.png?Expires=xxxxxx"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "size": "2048*2048",
        "total_tokens": 770,
        "image_count": 1,
        "output_tokens": 691,
        "input_tokens": 79
    }
}

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"
    }
Catatan
  • Multi-image-to-image menggunakan input_imgs (array), sedangkan image-to-image tunggal menggunakan input_img (string). Harap perhatikan perbedaannya.

  • Urutan gambar dalam array input_imgs harus konsisten dengan tujuan pelatihan (misalnya gambar pertama sebagai referensi karakter, yang kedua sebagai referensi pose).

  • input_imgs mendukung hingga 9 gambar referensi.

Catatan
  • 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:

  • 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.

About trigger words
  • Apa itu kata pemicu?

    Berfungsi sebagai "jangkar visual". Karena banyak gaya visual kompleks (seperti tekstur gambar unik atau skema warna tertentu) sulit dijelaskan secara tepat dalam teks, kata pemicu secara eksplisit memberi tahu model: saat Anda melihat s86b5p, Anda harus menghasilkan gaya visual spesifik ini.

  • Mengapa menggunakannya?

    Fine-tuning model membentuk pemetaan antara "teks" dan "fitur gambar". Kata pemicu mengikat "gaya yang tidak dapat dijelaskan" ke kata unik, sehingga model dapat mengunci target tersebut.

  • Jika kita sudah memiliki kata pemicu, mengapa tetap perlu menjelaskan gayanya secara detail?

    Keduanya memiliki tujuan berbeda dan bekerja lebih baik bersama.

    • Deskripsi gaya: Menjelaskan "seperti apa tampilan gambar". Memberi tahu model gaya seni dasar dan karakteristik visual. Deskripsi gaya biasanya konsisten di berbagai sampel.

    • Kata pemicu: Menjelaskan "seperti apa tampilan spesifik gaya tersebut". Mewakili karakteristik visual unik yang tidak dapat dijelaskan secara tepat dalam teks.

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.

Prosedur: Mengunggah set validasi secara manual

  1. Siapkan set validasi: Kemas data validasi ke dalam file .zip terpisah. Lihat Validation set format.

  2. Unggah set validasi: Panggil API Video and image generation model fine-tuning API untuk mengunggah file .zip set validasi ini dan peroleh ID file khusus.

  3. Tentukan set validasi saat membuat pekerjaan: Saat memanggil API Video and image generation model fine-tuning API, isi ID file ini dalam parameter validation_file_ids.

    {
        "model":"wan2.7-image-pro",
        "training_file_ids":[ "<training_set_file_id>" ],
        "validation_file_ids": [ "<custom_validation_set_file_id>" ],
        ...
    }

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 1.1: Query the list of validated checkpoints

API ini hanya mengembalikan checkpoint yang telah lolos validasi dan berhasil menghasilkan gambar pratinjau. Checkpoint yang gagal validasi tidak tercantum.

Request example

curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>/validation-results' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' 

Response example

API ini mengembalikan daftar yang hanya berisi nama checkpoint yang berhasil lolos validasi.

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

Step 1.2: Query the validation set results for a checkpoint

Pilih checkpoint dari daftar yang dikembalikan pada langkah sebelumnya (misalnya, "checkpoint-160") dan lihat hasil gambar yang dihasilkan.

Request example

  • <replace_with_fine_tuning_job_id>: Ganti sepenuhnya dengan nilai job_id dari output Create a fine-tuning job.

  • <replace_with_checkpoint_to_export>: Ganti sepenuhnya dengan nilai checkpoint, misalnya "checkpoint-160".

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>/validation-details/<replace_with_checkpoint_to_export>?page_no=1&page_size=10' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

URL gambar pratinjau berada di field img_path dan berlaku selama 24 jam. Unduh gambar segera untuk meninjau hasilnya. Ulangi langkah ini untuk membandingkan hasil beberapa checkpoint dan temukan yang paling memuaskan.

{
    "request_id": "375b3ad0-d3fa-451f-b629-xxxxxxx",
    "output": {
        "page_no": 1,
        "page_size": 10,
        "total": 5,
        "list": [
            {
                "img_path": "https://finetune-result.oss-cn-wulanchabu.aliyuncs.com/xxx.png?Expires=xxxxxx",
                "prompt": "s86b5p, Change the background to an elevator equipped with a white ceiling lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.",
                "input_img": "https://finetune-result.oss-cn-wulanchabu.aliyuncs.com/val_dataset/input_001.png?Expires=xxxxxx"
            },
            ...
        ]
    }
}

Step 2: Export the checkpoint and obtain the model name for deployment
Step 2.1: Export the model

Asumsikan "checkpoint-160" memiliki hasil terbaik, langkah selanjutnya adalah mengekspornya.

Request example

  • <replace_with_fine_tuning_job_id>: Ganti sepenuhnya dengan nilai job_id dari output Create a fine-tuning job.

  • <replace_with_checkpoint_to_export>: Ganti sepenuhnya dengan nilai checkpoint, misalnya "checkpoint-160".

  • <replace_with_exported_model_display_name>: Ganti sepenuhnya dengan nama model kustom yang hanya digunakan untuk tampilan konsol, misalnya "wan2.5-checkpoint-160". Nama ini harus unik secara global. Mengekspor dengan nama duplikat tidak didukung. Untuk detail parameter, lihat 3. Export a checkpoint.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>/export/<replace_with_checkpoint_to_export>?model_name=<replace_with_exported_model_display_name>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

Parameter respons output=true menunjukkan bahwa permintaan ekspor telah berhasil dibuat.

{
    "request_id": "0817d1ed-b6b6-4383-9650-xxxxx",
    "output": true
}
Step 2.2: Query the new model name for deployment

Query status semua checkpoint, konfirmasi bahwa ekspor telah selesai, dan peroleh nama model baru khusus (model_name) untuk penerapan.

Request example

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>/checkpoints' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Response example

Temukan checkpoint yang diekspor (seperti checkpoint-160) dalam daftar yang dikembalikan. Ketika status-nya berubah menjadi SUCCEEDED, ekspor berhasil. Field model_name yang dikembalikan pada titik ini adalah nama model baru setelah ekspor.

{
    "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", // Field penting, digunakan untuk penerapan dan pemanggilan model
            "model_display_name": "xxxx-ft-202511111122-xxxx",
            "status": "SUCCEEDED" // Checkpoint berhasil diekspor
        },
        ...

    ]
}
Step 3: Deploy and invoke the model

Setelah berhasil mengekspor checkpoint dan memperoleh model_name, ikuti langkah-langkah berikut untuk operasi selanjutnya:

  • Model deployment: Isi parameter input model_name dengan nilai spesifik yang diperoleh setelah ekspor.

  • Model invocation: Ikuti dokumentasi API untuk memanggil model yang diterapkan.

Billing

  • Model training: Charged.

    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

Video and image generation model fine-tuning API

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.