Pelajari cara melakukan fine-tuning model Qwen di Alibaba Cloud Model Studio menggunakan API (HTTP) dan command line (shell). Fine-tuning model mencakup tiga metode: supervised fine-tuning (SFT), continual pre-training (CPT), dan direct preference optimization (DPO).
Prasyarat
Tinjau Pengantar fine-tuning model untuk memahami konsep, proses, dan persyaratan datanya.
Aktifkan layanan dan peroleh Kunci API. Untuk petunjuknya, lihat Dapatkan Kunci API.
Berikan kepada RAM user (RAM user) izin yang diperlukan untuk pemanggilan, pelatihan, dan penerapan permissions.
API hanya mendukung penagihan berbasis token untuk pekerjaan pelatihan. Untuk menggunakan unit pelatihan model (prabayar atau pascabayar), buat pekerjaan tersebut di konsol.
Unggah file fine-tuning
Menyiapkan file fine-tuning
Set pelatihan SFT
Data pelatihan dalam format SFT ChatML (Chat Markup Language) mendukung percakapan multi-putaran dan berbagai pengaturan role.
Parameter OpenAInamedanweighttidak didukung. Semua output assistant akan dilatih.
# Satu baris data pelatihan (dalam format JSON) memiliki struktur khas berikut saat diekspansi:
{"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 informasi tentang perbedaan antara system, user, dan assistant, lihat Ikhtisar. Contoh set data pelatihan: SFT-ChatML_format_example.jsonl, SFT-ChatML_format_example.xlsx. Format XLS dan XLSX hanya mendukung percakapan satu putaran.
Semua baris assistant dalam satu entri data pelatihan mendukung parameter "loss_weight", yang mengatur tingkat kepentingan relatif baris tersebut selama pelatihan. (Rentang: 0,0 hingga `1,0`. Nilai yang lebih besar menunjukkan kepentingan yang lebih tinggi.)
Parameter ini tersedia untuk pratinjau undangan. Untuk menggunakannya, hubungi 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}Anda juga dapat mengunduh templat data dari konsol Model Studio. |
|
Unggah file fine-tuning ke Model Studio
API Files kompatibel OpenAI
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
# Jika Anda belum mengonfigurasi variabel lingkungan, ganti baris berikut dengan api_key="sk-xxx" dan gunakan Kunci API Model Studio Anda.
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan layanan di wilayah China (Beijing), ganti URL dengan: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
# test.jsonl adalah file contoh lokal.
file_object = client.files.create(file=Path("test.jsonl"), purpose="fine-tune")
print(file_object.model_dump_json())import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.files.*;
import java.nio.file.Path;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) {
// Buat klien dan gunakan kunci API dari variabel lingkungan.
OpenAIClient client = OpenAIOkHttpClient.builder()
// Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan layanan di wilayah China (Beijing), ganti URL dengan: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1
.baseUrl("https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1")
.build();
// Atur jalur file. Ubah jalur dan nama file sesuai kebutuhan.
Path filePath = Paths.get("src/main/java/org/example/test.txt");
// Buat parameter unggah file.
FileCreateParams params = FileCreateParams.builder()
.file(filePath)
.purpose(FilePurpose.of("fine-tune"))
.build();
// Unggah file.
FileObject fileObject = client.files().create(params);
System.out.println(fileObject);
}
}# ======= Penting =======
# Kunci API untuk wilayah Singapura dan China (Beijing) berbeda. Dapatkan Kunci API: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# Berikut ini adalah URL untuk wilayah Singapura. Jika Anda menggunakan layanan di wilayah China (Beijing), ganti URL dengan: https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/files
# === Hapus komentar ini sebelum menjalankan ===
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"test.jsonl"' \
--form 'purpose="fine-tune"'Batasan:
Ukuran maksimum satu file adalah 300 MB.
Ukuran total semua file yang tidak dihapus dibatasi hingga 5 GB.
Anda dapat menyimpan maksimal 100 file yang tidak dihapus.
File disimpan tanpa batas waktu.
Fine-tuning model
Buat pekerjaan fine-tuning
HTTP
Untuk Windows CMD, ganti${DASHSCOPE_API_KEY}dengan%DASHSCOPE_API_KEY%. Untuk PowerShell, gunakan$env:DASHSCOPE_API_KEY.
curl --location "https://dashscope.aliyuncs.com/api/v1/fine-tunes" \
--header "Authorization: Bearer ${DASHSCOPE_API_KEY}" \
--header 'Content-Type: application/json' \
--data '{
"model":"qwen3-8b",
"training_file_ids":[
"<your_training_file_id_1>",
"<your_training_file_id_2>"
],
"hyper_parameters":
{
"n_epochs": 3,
"batch_size": 16,
"max_length": 8192,
"learning_rate": "1.6e-5",
"lr_scheduler_type": "linear",
"split": 0.9,
"warmup_ratio": 0.05,
"eval_steps": 50,
"data_augmentation": true,
"augmentation_ratio": "0.1,0.05,0.15",
"augmentation_types": "dialogue_CN,general_purpose_CN,NLP",
"save_strategy": "epoch",
"save_total_limit": 10
},
"training_type":"sft"
}'Parameter
Parameter | Required | Type | Location | Description |
training_file_ids | Yes | Array | Body | Daftar ID file untuk set pelatihan. |
validation_file_ids | No | Array | Body | Daftar ID file untuk set validasi. |
model | Yes | String | Body | ID model dasar untuk fine-tuning, atau ID model yang sebelumnya telah difine-tune. |
hyper_parameters | No | Map | Body | Hiperparameter untuk pekerjaan fine-tuning. Parameter yang didukung dan nilai defaultnya bervariasi tergantung model. Untuk melihat nilai default, buka konsol dan pilih model serta metode fine-tuning yang sama. Parameter berikut wajib karena memengaruhi biaya pelatihan: |
training_type | No | String | Body | Menentukan metode fine-tuning. Nilai yang valid adalah:
|
job_name | No | String | Body | Menentukan nama pekerjaan fine-tuning. |
model_name | No | String | Body | Menentukan nama model hasil fine-tuning. Ini bukan ID model, yang dihasilkan oleh sistem. |
Respons
{
"request_id": "635f7047-003e-4be3-b1db-6f98e239f57b",
"output":
{
"job_id": "ft-202511272033-8ae7",
"job_name": "ft-202511272033-8ae7",
"status": "PENDING",
"finetuned_output": "qwen3-8b-ft-202511272033-8ae7",
"model": "qwen3-8b",
"base_model": "qwen3-8b",
"training_file_ids":
[
"9e9ffdfa-c3bf-436e-9613-6f053c66aa6e"
],
"validation_file_ids":
[],
"hyper_parameters":
{
"n_epochs": 3,
"batch_size": 16,
"max_length": 8192,
"learning_rate": "1.6e-5",
"lr_scheduler_type": "linear",
"split": 0.9,
"warmup_ratio": 0.05,
"eval_steps": 50,
"data_augmentation": true,
"augmentation_ratio": "0.1,0.05,0.15",
"augmentation_types": "dialogue_CN,general_purpose_CN,NLP",
"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
}
}Model dasar (model) dan jenis pelatihan (training_type)
hyper_parameters: Pengaturan yang didukung
Ambil pekerjaan fine-tuning
Untuk mengambil detail pekerjaan fine-tuning, gunakan job_id yang dikembalikan saat Anda membuat pekerjaan tersebut.
HTTP
curl 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'Parameter permintaan
Parameter | Type | Location | Required | Description |
job_id | String | Path | Yes | ID pekerjaan fine-tuning. |
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-8b-ft-202511272033-8ae7",
"model": "qwen3-8b",
"base_model": "qwen3-8b",
"training_file_ids":
[
"9e9ffdfa-c3bf-436e-9613-6f053c66aa6e"
],
"validation_file_ids":
[],
"hyper_parameters":
{
"n_epochs": 3,
"batch_size": 16,
"max_length": 8192,
"learning_rate": "1.6e-5",
"lr_scheduler_type": "linear",
"split": 0.9,
"warmup_ratio": 0.05,
"eval_steps": 50,
"data_augmentation": true,
"augmentation_ratio": "0.1,0.05,0.15",
"augmentation_types": "dialogue_CN,general_purpose_CN,NLP",
"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 | Description |
PENDING | Pekerjaan sedang menunggu untuk dimulai. |
QUEUING | Pekerjaan sedang dalam antrian. Hanya satu pekerjaan fine-tuning yang dapat berjalan pada satu waktu. |
RUNNING | Pekerjaan sedang berjalan. |
CANCELING | Pekerjaan sedang dibatalkan. |
SUCCEEDED | Pekerjaan berhasil. |
FAILED | Pekerjaan gagal. |
CANCELED | Pekerjaan dibatalkan. |
Setelah pekerjaan fine-tuning berhasil, field finetuned_output menyediakan ID model hasilnya. Gunakan ID ini untuk penerapan model.
Dapatkan log pekerjaan fine-tuning
HTTP
curl 'https://dashscope.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 parameteroffsetdanlineuntuk mengambil rentang baris log. Parameteroffsetmenentukan baris awal, dan parameterlinemenentukan jumlah maksimum baris yang dikembalikan.
Contoh respons:
{
"request_id":"1100d073-4673-47df-aed8-c35b3108e968",
"output":{
"total":57,
"logs":[
"{Log fine-tuning 1}",
"{Log fine-tuning 2}",
...
...
...
]
}
}Kueri dan publikasikan checkpoint model
Hanya fine-tuning SFT (efficient_sftdansft) yang mendukung penyimpanan dan penerbitan checkpoint dari status pelatihan antara.
Daftar checkpoint untuk pekerjaan fine-tuning
curl 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>/checkpoints' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'Parameter permintaan
Parameter | Type | Lokasi parameter | Required | Description |
job_id | String | Path Parameter | Yes | ID pekerjaan fine-tuning. |
Contoh respons
Field checkpoint berisi ID checkpoint yang menentukan checkpoint yang akan diterbitkan dalam API Penerbitan model (opsional). Field model_name berisi ID model yang digunakan untuk penerapan model. Field finetuned_output dalam respons pekerjaan fine-tuning asli berisi model_name dari checkpoint terakhir.
{
"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-8b-instruct-ft-202511272033-8ae7",
"status": "SUCCEEDED"
}
]
}Status | Description |
PENDING | Checkpoint menunggu penerbitan. Anda harus menerbitkannya menggunakan API Penerbitan model sebelum dapat menggunakannya untuk penerapan dan pemanggilan model. |
PROCESSING | Checkpoint sedang dalam proses penerbitan. |
SUCCEEDED | Checkpoint berhasil diterbitkan. Anda kini dapat menggunakannya untuk penerapan dan pemanggilan model. |
FAILED | Checkpoint gagal diterbitkan. |
Penerbitan model (opsional)
Di Model Studio, setelah pekerjaan fine-tuning selesai, Anda harus mengekspor checkpoint sebelum dapat menerapkan model.
Checkpoint yang diekspor disimpan di penyimpanan cloud. Anda tidak dapat mengakses atau mengunduhnya saat ini.
curl --request GET 'https://dashscope.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 permintaan
Parameter | Type | Lokasi Parameter | Required | Description |
job_id | String | Path Parameter | Yes | ID pekerjaan fine-tuning. |
checkpoint_id | String | Path Parameter | Yes | ID checkpoint yang akan diterbitkan. |
model_name | String | Path Parameter | Yes | ID model kustom yang akan diberikan kepada model yang diterbitkan. |
Contoh respons
{
"request_id": "ed3faa41-6be3-4271-9b83-941b23680537",
"output": true
}Tugas penerbitan bersifat asinkron. Gunakan API Daftar checkpoint untuk pekerjaan fine-tuning untuk memantau status penerbitan checkpoint.
Operasi fine-tuning lainnya
Daftar pekerjaan fine-tuning
curl 'https://dashscope.aliyuncs.com/api/v1/fine-tunes' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Batalkan pekerjaan fine-tuning
Membatalkan pekerjaan fine-tuning yang sedang berjalan.
curl --request POST 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>/cancel' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Hapus pekerjaan fine-tuning
Anda tidak dapat menghapus pekerjaan fine-tuning yang sedang berjalan.
curl --request DELETE 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' Penerapan dan pemanggilan model
Penerapan model
Untuk menerapkan model, buka konsol penerapan model.
Pemanggilan model
Setelah status penerapan model menjadi RUNNING, Anda dapat memanggil model hasil fine-tuning seperti model lainnya.
Anda juga dapat memperoleh Model Code dari konsol penerapan model.
Untuk detail penggunaan dan parameter, lihat Referensi API DashScope.
curl 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' \
--data '{
"model": "<your_model_instance_id>",
"input":{
"messages":[
{
"role": "user",
"content": "Siapa kamu?"
}
]
},
"parameters": {
"result_format": "message"
}
}'