Lakukan penyempurnaan (fine-tune) Qwen di Alibaba Cloud Model Studio menggunakan API HTTP.
Topik ini hanya berlaku untuk Edisi Internasional (Wilayah Singapura).
Prasyarat
Anda memahami konsep, prosedur, dan persyaratan format data penyempurnaan model.
Anda telah mengaktifkan Model Studio dan mendapatkan Kunci API. Lihat Dapatkan Kunci API.
Ikhtisar penyempurnaan model
Penyempurnaan model meningkatkan performa model:
Meningkatkan performa untuk industri atau bisnis tertentu
Mengurangi latensi output
Menekan halusinasi
Menyelaraskan output dengan nilai atau preferensi manusia
Menggantikan model besar dengan model ringan yang telah disempurnakan
Selama penyempurnaan, model belajar fitur-fitur spesifik bisnis dan skenario dari data pelatihan Anda, seperti pengetahuan domain, nada bicara, gaya komunikasi, dan kesadaran diri. Karena model telah mempelajari banyak contoh spesifik industri atau skenario selama pre-training, performa zero-shot atau one-shot setelah penyempurnaan melampaui performa few-shot model dasar. Hal ini mengurangi jumlah token input dan menurunkan latensi output.
Prosedur umum
Model yang didukung
Generasi teks
Nama | Kode model | Full-parameter SFT (sft) | SFT efisien (efficient_sft) |
Qwen3-32B | qwen3-32b | ||
Qwen3-14B | qwen3-14b | ||
Qwen3-VL-8B-Instruct | qwen3-vl-8b-instruct | ||
Qwen3-VL-8B-Thinking | qwen3-vl-8b-thinking |
Bandingkan mode pelatihan
Pelatihan parameter penuh | Pelatihan efisien (LoRA, direkomendasikan) | |
Skenario | • Mempelajari kemampuan baru. • Mencapai performa optimal secara keseluruhan. | • Mengoptimalkan performa dalam skenario tertentu. • Sensitif terhadap waktu dan biaya. |
Durasi pelatihan | Lebih lama, dengan konvergensi lebih lambat. | Lebih singkat, dengan konvergensi lebih cepat. |
Penagihan
Metode | Ditagih berdasarkan volume data pelatihan. |
Rumus | Biaya pelatihan model = (Total token dalam data pelatihan + Total token dalam data pelatihan campuran) × Jumlah epoch × Harga satuan pelatihan (Unit penagihan minimum: 1 token) |
Tips dataset
Persyaratan ukuran
Dataset SFT memerlukan minimal 1.000 entri berkualitas tinggi. Jika hasil evaluasi tidak memuaskan, kumpulkan lebih banyak data pelatihan.
Jika Anda tidak memiliki cukup data, pertimbangkan untuk membuat aplikasi agen dengan basis pengetahuan. Dalam banyak skenario bisnis kompleks, penyempurnaan model dan pengambilan dari basis pengetahuan bekerja paling baik secara bersamaan.
Sebagai contoh, dalam skenario layanan pelanggan, sempurnakan model untuk menyesuaikan nada bicara, kebiasaan ekspresi, dan kesadaran dirinya, lalu gunakan basis pengetahuan untuk menyuntikkan pengetahuan domain secara dinamis ke dalam konteks.
Coba dulu Generasi yang Diperkaya dengan Pengambilan Data (RAG). Setelah mengumpulkan cukup data, gunakan penyempurnaan untuk meningkatkan performa lebih lanjut.
Anda dapat memperluas dataset Anda menggunakan strategi berikut:
Gunakan model yang lebih besar dan berperforma tinggi untuk menghasilkan konten untuk bisnis atau skenario tertentu.
Kumpulkan data secara manual dari berbagai sumber, seperti skenario aplikasi, web scraping, media sosial, forum, dataset publik, mitra, sumber daya industri, dan kontribusi pengguna.
Keragaman dan keseimbangan data
Untuk kasus penggunaan spesifik domain, keahlian domain adalah faktor terpenting. Untuk skenario tanya-jawab, generalisasi lebih penting. Rancang sampel data berdasarkan modul atau skenario bisnis Anda. Kualitas pelatihan bergantung pada volume data, spesifikasi domain, dan keragaman.
Sebagai contoh, dalam skenario asisten AI, dataset profesional dan beragam harus mencakup hal-hal berikut:
Bisnis | Skenario dan kasus penggunaan beragam |
Layanan pelanggan E-dagang | Dorongan promosi, konsultasi pra-penjualan, panduan saat penjualan, layanan purna jual, kunjungan tindak lanjut, penanganan keluhan, dan lainnya. |
Layanan keuangan | Konsultasi pinjaman, saran investasi dan keuangan, layanan kartu kredit, manajemen rekening bank, dan lainnya. |
Layanan kesehatan daring | Konsultasi gejala, penjadwalan janji temu, petunjuk kunjungan, kueri informasi obat, tips kesehatan, dan lainnya. |
Sekretaris AI | Informasi TI, informasi administratif, informasi SDM, tanya jawab tunjangan karyawan, kueri kalender perusahaan, dan lainnya. |
Asisten perjalanan | Perencanaan perjalanan, panduan masuk dan keluar, konsultasi asuransi perjalanan, pengenalan adat dan budaya destinasi, dan lainnya. |
Penasihat hukum perusahaan | Tinjauan kontrak, perlindungan kekayaan intelektual, pemeriksaan kepatuhan, tanya jawab hukum ketenagakerjaan, konsultasi transaksi lintas batas, analisis hukum kasus spesifik, dan lainnya. |
Seimbangkan volume data di seluruh skenario agar sesuai dengan rasio penggunaan aktual. Hal ini mencegah bias terhadap satu jenis fitur tertentu dan meningkatkan generalisasi.
Unggah dataset pelatihan
Persiapkan dataset
Set data pelatihan SFT
SFT menggunakan data pelatihan dalam format Chat Markup Language (ChatML), yang mendukung percakapan multi-putaran dan beberapa pengaturan role.
Parameter OpenAInamedanweighttidak didukung. Semua output assistant dilatih.
# Satu baris data pelatihan (format JSON), struktur tipikalnya sebagai berikut saat diperluas:
{"messages": [
{"role": "system", "content": "Input sistem 1"},
{"role": "user", "content": "Input pengguna 1"},
{"role": "assistant", "content": "Output model yang diharapkan 1"},
{"role": "user", "content": "Input pengguna 2"},
{"role": "assistant", "content": "Output model yang diharapkan 2"}
...
]}Untuk detail tentang role system, user, dan assistant, lihat Ikhtisar model generasi teks. Contoh set data pelatihan: SFT-ChatML_format_example.jsonl dan SFT-ChatML_format_example.xlsx. Format XLS dan XLSX hanya mendukung percakapan satu putaran.
Untuk satu entri pelatihan, semua baris assistant mendukung parameter "loss_weight", yang mengatur tingkat kepentingan relatif selama pelatihan. Nilai valid berkisar dari 0,0 hingga 1,0. Nilai yang lebih tinggi menunjukkan kepentingan yang lebih besar.
Parameter ini sedang dalam pratinjau undangan. Untuk menggunakannya, Anda dapat menghubungi account manager Anda.
{"role": "assistant", "content": "Output model yang diharapkan 1", "loss_weight": 1.0},
{"role": "assistant", "content": "Output model yang diharapkan 2", "loss_weight": 0.5}SFT untuk model thinking
Data pelatihan mendukung percakapan multi-putaran dan beberapa pengaturan role, tetapi hanya output assistant terakhir yang dilatih.
Karakter \n sebelum dan sesudah tag think harus dipertahankan.# Satu baris data pelatihan (format JSON), struktur tipikalnya sebagai berikut saat diperluas:
{"messages": [
{"role": "system", "content": "Input sistem 1"},
{"role": "user", "content": "Input pengguna 1"},
{"role": "assistant", "content": "Output model 1"}, --Output assistant antara tidak boleh memiliki tag <think>
...
{"role": "user", "content": "Input pengguna 2"},
{"role": "assistant", "content": "<think>\nKonten pemikiran yang diharapkan 2\n</think>\n\nOutput yang diharapkan 2"} --Konten pemikiran hanya boleh dimasukkan dalam output assistant terakhir.
]}Untuk detail tentang role system, user, dan assistant, lihat Ikhtisar model generasi teks. Contoh set data pelatihan: SFT-deep_thinking_content_example.jsonl.
Anda dapat mengonfigurasi model untuk menghilangkan tag <think> dalam sampel pelatihan. Jika Anda menggunakan metode output ini, jangan aktifkan mode thinking untuk panggilan setelah model dilatih.
{"role": "assistant", "content": "Output model yang diharapkan 2"} --Memberi tahu model untuk tidak mengaktifkan pemikiranBaris assistant terakhir dari satu entri pelatihan mendukung parameter "loss_weight", yang mengatur tingkat kepentingan relatif selama pelatihan. Nilai valid berkisar dari 0,0 hingga 1,0. Nilai yang lebih tinggi menunjukkan kepentingan yang lebih besar.
Parameter ini sedang dalam pratinjau undangan. Untuk menggunakannya, Anda dapat menghubungi account manager Anda.
{"role": "assistant", "content": "<think>\nKonten pemikiran yang diharapkan 2\n</think>\n\nOutput yang diharapkan 2", "loss_weight": 1.0}SFT untuk pemahaman gambar (Qwen-VL)
Parameter OpenAInamedanweighttidak didukung. Semua output assistant dilatih.
Untuk informasi lebih lanjut tentang perbedaan antara role system, user, dan assistant, lihat Ikhtisar model generasi teks. Contoh data pelatihan dalam format ChatML:
# Satu baris data pelatihan (format JSON), struktur tipikalnya sebagai berikut saat diperluas:
{"messages":[
{"role":"user",
"content":[
{"text":"Input pengguna 1"},
{"image":"Nama file gambar 1"}]},
{"role":"assistant",
"content":[
{"text":"Output model yang diharapkan 1"}]},
{"role":"user",
"content":[
{"text":"Input pengguna 2"}]},
{"role":"assistant",
"content":[
{"text":"Output model yang diharapkan 2"}]},
...
...
...
]}Jika Anda melatih model thinking, Anda harus mengikuti persyaratan format data untuk SFT untuk model thinking.
Berikut adalah persyaratan untuk file ZIP:
Format: ZIP. Ukuran maksimum: 2 GB. Nama folder dan file di dalam file ZIP hanya boleh berisi huruf ASCII (a–z, A–Z), angka (0–9), garis bawah (_), dan tanda hubung (-).
File data teks pelatihan harus diberi nama
data.jsonldan ditempatkan di direktori root file ZIP. Pastikan bahwa file data.jsonl langsung muncul ketika Anda membuka file ZIP.Satu gambar tidak boleh melebihi 1.024 piksel lebar atau tingginya. Ukuran maksimum adalah 10 MB. Format yang didukung:
.bmp,.jpeg /.jpg,.png,.tif /.tiff, dan.webp.Nama file gambar tidak boleh duplikat, bahkan jika file tersebut disimpan di folder berbeda.
Struktur direktori file ZIP:
Direktori tingkat tunggal (direkomendasikan)
File gambar dan file
data.jsonlberada di direktori root file ZIP.Trainingdata_vl.zip |--- data.jsonl # Catatan: Jangan dibungkus dalam folder luar |--- image1.png |--- image2.jpgDirektori multi-level
File data.jsonl harus berada di direktori root file ZIP.
Dalam file data.jsonl, Anda hanya boleh mendeklarasikan nama file gambar, bukan path filenya. Contoh:
Benar:
image1.jpg. Salah:jpg_folder/image1.jpg.Nama file gambar harus unik secara global di dalam file ZIP.
Trainingdata_vl.zip |--- data.jsonl # Catatan: Jangan dibungkus dalam folder luar |--- jpg_folder | └── image1.jpg |--- png_folder └── image2.png
Unggah file pelatihan
HTTP
Untuk Windows CMD, Anda dapat mengganti${DASHSCOPE_API_KEY}dengan%DASHSCOPE_API_KEY%. Untuk PowerShell, Anda dapat menggantinya dengan$env:DASHSCOPE_API_KEY
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"path/to/your/sample.jsonl"' \
--form 'purpose="fine-tune"'Batasan:
Ukuran file maksimum adalah 1 GB.
Kuota penyimpanan total untuk semua file aktif (tidak dihapus) adalah 5 GB.
Jumlah maksimum file aktif (tidak dihapus) adalah 100.
Tidak ada batas waktu penyimpanan file.
Respons:
{
"id": "file-ft-e73cafa11cef43a0ab75fb8e",
"object": "file",
"bytes": 23149,
"filename": "qwen-fine-tune-sample.jsonl",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1769138847
}Penyempurnaan model
Buat pekerjaan penyempurnaan
HTTP
Untuk Windows CMD, Anda dapat mengganti${DASHSCOPE_API_KEY}dengan%DASHSCOPE_API_KEY%. Untuk PowerShell, Anda dapat menggantinya dengan$env:DASHSCOPE_API_KEY
curl --location "https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes" \
--header "Authorization: Bearer ${DASHSCOPE_API_KEY}" \
--header 'Content-Type: application/json' \
--data '{
"model":"qwen3-14b",
"training_file_ids":[
"<Ganti dengan ID file dataset pelatihan 1>",
"<Ganti dengan ID file dataset pelatihan 2>"
],
"hyper_parameters":
{
"n_epochs": 1,
"batch_size": 16,
"learning_rate": "1.6e-5",
"split": 0.9,
"warmup_ratio": 0.0,
"eval_steps": 1,
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type":"sft"
}'Parameter input
Field | Wajib | Tipe | Lokasi | Deskripsi |
training_file_ids | Ya | Array | Body | ID file set pelatihan. |
validation_file_ids | Tidak | Array | Body | ID file set validasi. |
model | Ya | String | Body | ID model dasar, atau ID model yang dihasilkan oleh pekerjaan penyempurnaan sebelumnya. |
hyper_parameters | Tidak | Map | Body | Hiperparameter untuk penyempurnaan. Nilai default digunakan jika diabaikan. |
training_type | Tidak | String | Body | Metode penyempurnaan. Nilai valid:
|
job_name | Tidak | String | Body | Nama pekerjaan. |
model_name | Tidak | String | Body | Nama model yang telah disempurnakan. ID model dihasilkan oleh sistem. |
Contoh respons
{
"request_id": "635f7047-003e-4be3-b1db-6f98e239f57b",
"output":
{
"job_id": "ft-202511272033-8ae7",
"job_name": "ft-202511272033-8ae7",
"status": "PENDING",
"finetuned_output": "qwen3-14b-ft-202511272033-8ae7",
"model": "qwen3-14b",
"base_model": "qwen3-14b",
"training_file_ids":
[
"9e9ffdfa-c3bf-436e-9613-6f053c66aa6e"
],
"validation_file_ids":
[],
"hyper_parameters":
{
"n_epochs": 1,
"batch_size": 16,
"learning_rate": "1.6e-5",
"split": 0.9,
"warmup_ratio": 0.0,
"eval_steps": 1,
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type": "sft",
"create_time": "2025-11-27 20:33:15",
"workspace_id": "llm-8v53etv3hwb8orx1",
"user_identity": "1654290265984853",
"modifier": "1654290265984853",
"creator": "1654290265984853",
"group": "llm",
"max_output_cnt": 10
}
}hyper_parameters pengaturan yang didukung
Kueri detail pekerjaan
Gunakan job_id yang dikembalikan untuk menanyakan status pekerjaan.
HTTP
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'Parameter input
Field | Tipe | Lokasi | Wajib | Deskripsi |
job_id | String | Path Parameter | Ya | ID pekerjaan. |
Contoh respons sukses
{
"request_id": "d100cddb-ac85-4c82-bd5c-9b5421c5e94d",
"output":
{
"job_id": "ft-202511272033-8ae7",
"job_name": "ft-202511272033-8ae7",
"status": "RUNNING",
"finetuned_output": "qwen3-14b-ft-202511272033-8ae7",
"model": "qwen3-14b",
"base_model": "qwen3-14b",
"training_file_ids":
[
"9e9ffdfa-c3bf-436e-9613-6f053c66aa6e"
],
"validation_file_ids":
[],
"hyper_parameters":
{
"n_epochs": 1,
"batch_size": 16,
"learning_rate": "1.6e-5",
"split": 0.9,
"warmup_ratio": 0.0,
"eval_steps": 1,
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type": "sft",
"create_time": "2025-11-27 20:33:15",
"workspace_id": "llm-8v53etv3hwb8orx1",
"user_identity": "1654290265984853",
"modifier": "1654290265984853",
"creator": "1654290265984853",
"group": "llm",
"max_output_cnt": 10
}
}Status pekerjaan | Makna |
PENDING | Pelatihan akan segera dimulai. |
QUEUING | Pekerjaan sedang dalam antrian. Hanya satu pekerjaan yang dapat dijalankan dalam satu waktu. |
RUNNING | Pekerjaan sedang berjalan. |
CANCELING | Pekerjaan sedang dibatalkan. |
SUCCEEDED | Pekerjaan berhasil. |
FAILED | Pekerjaan gagal. |
CANCELED | Pekerjaan dibatalkan. |
Setelah pelatihan berhasil, finetuned_output berisi ID model yang telah disempurnakan, yang dapat Anda gunakan untuk penerapan model.
Ambil log pekerjaan
HTTP
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/logs?offset=0&line=1000' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Gunakan parameter offset dan line untuk mengambil rentang log tertentu. Parameter offset menentukan posisi awal dan line menentukan jumlah maksimum entri log.
Contoh respons:
{
"request_id":"1100d073-4673-47df-aed8-c35b3108e968",
"output":{
"total":57,
"logs":[
"{Log output 1}",
"{Log output 2}",
...
...
...
]
}
}Kueri dan terbitkan checkpoint
Hanya penyempurnaan SFT (efficient_sftdansft) yang mendukung penyimpanan dan penerbitan checkpoint dari status antara.
Kueri checkpoint
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/checkpoints' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'Parameter input
Field | Tipe | Lokasi | Wajib | Deskripsi |
job_id | String | Path Parameter | Ya | ID pekerjaan. |
Contoh respons sukses
{
"request_id": "c11939b5-efa6-4639-97ae-ed4597984647",
"output": [
{
"create_time": "2025-11-11T16:25:42",
"full_name": "ft-202511272033-8ae7-checkpoint-20",
"job_id": "ft-202511272033-8ae7",
"checkpoint": "checkpoint-20",
"model_name": "qwen3-14b-instruct-ft-202511272033-8ae7",
"status": "SUCCEEDED"
}
]
}Status penerbitan snapshot | Deskripsi |
PENDING | Checkpoint sedang menunggu ekspor. |
PROCESSING | Checkpoint sedang dalam proses ekspor. |
SUCCEEDED | Checkpoint berhasil diekspor. |
FAILED | Checkpoint gagal diekspor. |
Parameter checkpoint merujuk pada ID checkpoint, yang digunakan untuk menentukan checkpoint yang akan diekspor dalam API penerbitan model. Parameter model_name merujuk pada ID model, yang dapat digunakan untuk penerapan model. Parameter finetuned_output mengembalikan model_name dari checkpoint terakhir.
Terbitkan model
Anda dapat mengekspor checkpoint setelah penyempurnaan selesai. Ekspor checkpoint sebelum menerapkan model di Model Studio.
Checkpoint yang diekspor disimpan di penyimpanan cloud dan tidak dapat diakses atau diunduh.
curl --request GET 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/export/<checkpoint_id>?model_name=<model_name>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'Parameter input
Field | Tipe | Lokasi | Wajib | Deskripsi |
job_id | String | Path Parameter | Ya | ID pekerjaan. |
checkpoint_id | String | Path Parameter | Ya | ID checkpoint. |
model_name | String | Path Parameter | Ya | ID model yang diharapkan setelah ekspor. |
Contoh respons sukses
{
"request_id": "ed3faa41-6be3-4271-9b83-941b23680537",
"output": true
}Ekspor bersifat asinkron. Pantau status ekspor dengan menanyakan daftar checkpoint.
Operasi tambahan
Daftar pekerjaan
curl 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Batalkan pekerjaan
Hentikan pekerjaan penyempurnaan yang sedang berjalan.
curl --request POST 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>/cancel' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Hapus pekerjaan
Pekerjaan yang sedang berjalan tidak dapat dihapus.
curl --request DELETE 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Penerapan model
Model yang telah disempurnakan hanya mendukung penerapan Model Unit.
Buka Konsol Penerapan Model (Singapura) untuk menerapkan model. Untuk informasi lebih lanjut tentang penagihan dan detail lainnya, lihat Penagihan berdasarkan durasi penggunaan (Model Unit).
Panggil model
Setelah menerapkan model, panggil model tersebut menggunakan API Kompatibel dengan OpenAI, Dashscope, atau Assistant SDK.
Atur parameter model ke code model tersebut. Buka Konsol Penerapan Model (Singapura) untuk melihat Model Code.
curl 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' \
--data '{
"model": "<Ganti dengan Kode instans model setelah penerapan berhasil>",
"input":{
"messages":[
{
"role": "user",
"content": "Siapa kamu?"
}
]
},
"parameters": {
"result_format": "message"
}
}'FAQ
Bisakah saya mengunggah dan menerapkan model saya sendiri?
Mengunggah dan menerapkan model Anda sendiri saat ini belum didukung. Ikuti pembaruan terbaru dari Alibaba Cloud Model Studio.
Namun, Platform for AI (PAI) mendukung penerapan model Anda sendiri. Lihat Terapkan model bahasa besar di PAI-LLM.