本文檔以千問模型的調優操作為例進行說明,通過 API (HTTP)和 命令列(Shell)兩種方式,使用阿里雲百鍊提供的模型調優功能。模型調優包含模型微調(SFT)、繼續預訓練(CPT)、模型偏好訓練(DPO)三種模型訓練方式。
前提條件
通過 API 建立的訓練任務僅支援按 Token 計費,暫不支援使用模型訓練單元(預付費或後付費)。如需使用訓練單元,請通過控制台建立任務。
上傳調優檔案
準備調優檔案
SFT 訓練集
SFT ChatML(Chat Markup Language)格式訓練資料,支援多輪對話和多種角色設定。
不支援OpenAI 的name、weight參數,所有的 assistant 輸出都會被訓練。
# 一行訓練資料(json 格式),展開後典型結構如下:
{"messages": [
{"role": "system", "content": "系統輸入1"},
{"role": "user", "content": "使用者輸入1"},
{"role": "assistant", "content": "期望的模型輸出1"},
{"role": "user", "content": "使用者輸入2"},
{"role": "assistant", "content": "期望的模型輸出2"}
...
]}system/user/assistant 區別請參見概述,訓練資料集範例:SFT-ChatML格式樣本.jsonl、SFT-ChatML格式樣本.xlsx(xls、xlsx 格式只支援單輪對話)。
單條訓練資料的所有 assistant 行都支援"loss_weight"參數,用於設定該行在訓練時的相對重要性。(設定範圍0.0 ~ 1.0,數值越大,重要性越高)
該參數屬於邀測參數,如需使用,請聯絡您的商務經理。
{"role": "assistant", "content": "期望的模型輸出1", "loss_weight": 1.0},
{"role": "assistant", "content": "期望的模型輸出2", "loss_weight": 0.5}也可以前往百鍊控制台下載資料範本。 |
|
將調優檔案上傳至阿里雲百鍊
OpenAI 相容 - FIle 介面
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
# 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下為新加坡地區url,若使用北京地區的服務,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
# test.jsonl 是一個本地樣本檔案
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) {
// 建立用戶端,使用環境變數中的API密鑰
OpenAIClient client = OpenAIOkHttpClient.builder()
// 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// 以下為新加坡地區url,若使用北京地區的服務,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1
.baseUrl("https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1")
.build();
// 設定檔案路徑,請根據實際需求修改路徑與檔案名稱
Path filePath = Paths.get("src/main/java/org/example/test.txt");
// 建立檔案上傳參數
FileCreateParams params = FileCreateParams.builder()
.file(filePath)
.purpose(FilePurpose.of("fine-tune"))
.build();
// 上傳檔案
FileObject fileObject = client.files().create(params);
System.out.println(fileObject);
}
}# ======= 重要提示 =======
# 新加坡和北京地區的API Key不同。擷取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 以下為新加坡地區url,若使用北京地區的服務,需將url替換為:https://dashscope.aliyuncs.com/compatible-mode/v1/files
# === 執行時請刪除該注釋 ===
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"'使用限制:
單個檔案大小最大為300MB
所有的有效檔案(未刪除)總使用空間配額為5GB
所有的有效檔案(未刪除)總數量配額為100個
檔案儲存體沒有時間限制
模型調優
建立調優任務
HTTP
Windows CMD 請將${DASHSCOPE_API_KEY}替換為%DASHSCOPE_API_KEY%,PowerShell 請替換為$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":[
"<替換為訓練資料集的file_id1>",
"<替換為訓練資料集的file_id2>"
],
"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"
}'輸入參數
欄位 | 必選 | 類型 | 傳參方式 | 描述 |
training_file_ids | 是 | Array | Body | 訓練集檔案清單。 |
validation_file_ids | 否 | Array | Body | 驗證集檔案清單。 |
model | 是 | String | Body | 用於調優的基本模型 ID,或其他調優任務產出的模型 ID。 |
hyper_parameters | 否 | Map | Body | 用於調優模型的超參數。不同模型支援的參數及其預設值不同,請在控制台選擇相同的模型和訓練方式查看實際預設值。 以下參數影響訓練費用,必須填寫: |
training_type | 否 | String | Body | 調優方法,可選值為:
|
job_name | 否 | String | Body | 調優任務名稱 |
model_name | 否 | String | Body | 調優產生的模型名稱(並非模型 ID,模型 ID 由系統產生) |
返回範例
{
"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
}
}支援的基本模型ID(model)列表與訓練類型(training_type)支援情況:
hyper_parameters內支援的設定
查詢調優任務詳情
使用建立任務時返回的job_id來查詢任務狀態。
HTTP
curl 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'輸入參數
欄位 | 類型 | 傳參方式 | 必選 | 描述 |
job_id | String | Path Parameter | 是 | 要查詢的調優任務的ID。 |
返回成功範例
{
"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
}
}任務狀態 | 含義 |
PENDING | 訓練待開始。 |
QUEUING | 訓練正在排隊(同時只有一個訓練任務可以進行) |
RUNNING | 訓練進行中中。 |
CANCELING | 訓練正在取消中。 |
SUCCEEDED | 訓練成功。 |
FAILED | 訓練失敗。 |
CANCELED | 訓練已經取消。 |
訓練成功後,finetuned_output指的是調優成功後的模型 ID,可用於模型部署。
擷取調優任務日誌
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' 可通過 offset 和 line 兩個參數擷取特定行數區間的日誌。 Offset 用於設定日誌輸出開始的位置;line 用於設定日誌最多輸出多少行。
返回結果範例:
{
"request_id":"1100d073-4673-47df-aed8-c35b3108e968",
"output":{
"total":57,
"logs":[
"{輸出調優日誌1}",
"{輸出調優日誌2}",
...
...
...
]
}
}查詢與發布模型參數快照
僅 SFT微調訓練(efficient_sft、sft)支援儲存和發布其中間狀態的模型參數快照(Checkpoint)。
查詢調優任務的參數快照列表
curl 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>/checkpoints' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json'輸入參數
欄位 | 類型 | 傳參方式 | 必選 | 描述 |
job_id | String | Path Parameter | 是 | 要查詢的調優任務的ID。 |
返回成功範例
checkpoint指的是 Checkpoint ID,用於在模型發布(可選) API 中指定要發布的快照;model_name指的是模型 ID,可用於模型部署。(finetuned_output 輸出的是最後一個 checkpoint 的 model_name)
{
"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) | 含義 |
PENDING | |
PROCESSING | 快照(Checkpoint)發布中。 |
SUCCEEDED | 快照(Checkpoint)發布成功。可直接進行模型部署&調用。 |
FAILED | 快照(Checkpoint)發布失敗。 |
模型發布(可選)
在百鍊平台上,模型調優完成後可以匯出參數快照,匯出後才能基於此版本的參數快照在百鍊上進行模型部署。
匯出的參數快照儲存在雲端儲存中,暫不支援訪問或下載。
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'輸入參數
欄位 | 類型 | 傳參方式 | 必選 | 描述 |
job_id | String | Path Parameter | 是 | 要查詢的調優任務的 ID。 |
checkpoint_id | String | Path Parameter | 是 | 要發布的 Checkpoint ID。 |
model_name | String | Path Parameter | 是 | 發布後期望的模型 ID。 |
發布任務成功返回範例
{
"request_id": "ed3faa41-6be3-4271-9b83-941b23680537",
"output": true
}由於發布任務是非同步執行的,請使用查詢快照列表 API 觀察快照發布狀態。
模型調優的更多操作
列舉調優工作清單
curl 'https://dashscope.aliyuncs.com/api/v1/fine-tunes' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' 中止調優任務
智能終止正在訓練中的調優任務
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' 刪除調優任務
無法刪除正在訓練中的調優任務
curl --request DELETE 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/<job_id>' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' 模型部署&調用
模型部署
請前往模型部署控制台部署模型。
模型調用
當模型部署狀態為RUNNING時,可以像調用其他模型一樣使用調優後的模型。
也可以前往模型部署控制台介面擷取模型code。
更多使用方法和參數設定請前往DashScope API 參考。
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": "<替換為部署任務成功後的模型執行個體 ID>",
"input":{
"messages":[
{
"role": "user",
"content": "你是誰?"
}
]
},
"parameters": {
"result_format": "message"
}
}'