本文檔以千問模型的調優操作為例進行說明,通過 API (HTTP)和 命令列(Shell)兩種方式,使用阿里雲百鍊提供的模型調優功能。模型調優包含模型微調(SFT)、繼續預訓練(CPT)、模型偏好訓練(DPO)三種模型訓練方式。
前提條件
- 已經完整閱讀了模型調優簡介,瞭解模型調優的基本概念、流程及資料格式要求。
- 已開通服務並獲得API-KEY, 請參考擷取API Key。
- 阿里雲子帳號(RAM使用者)需被授予必要的調用、訓練和部署許可權。
上傳調優檔案
準備調優檔案
- SFT 訓練集
不支援OpenAI 的name、weight參數,所有的 assistant 輸出都會被訓練。
"loss_weight"參數,用於設定該行在訓練時的相對重要性。(設定範圍0.0 ~ 1.0,數值越大,重要性越高)該參數屬於邀測參數,如需使用,請聯絡您的商務經理。
也可以前往百鍊控制台下載資料範本。 | 在新增資料集頁面的上傳檔案地區下方,可找到資料範本下載連結。 |
將調優檔案上傳至阿里雲百鍊
- OpenAI 相容 - FIle 介面
- 單個檔案大小最大為300MB
- 所有的有效檔案(未刪除)總使用空間配額為100GB
- 所有的有效檔案(未刪除)總數量配額為10000個
- 檔案儲存體沒有時間限制
模型調優
建立調優任務
- HTTP
Windows CMD 請將${DASHSCOPE_API_KEY}替換為%DASHSCOPE_API_KEY%,PowerShell 請替換為$env:DASHSCOPE_API_KEY
輸入參數
欄位 | 必選 | 類型 | 傳參方式 | 描述 |
|---|---|---|---|---|
training_datasets | 是 | Array of Dataset | Body | 訓練資料集列表。 |
validation_datasets | 否 | Array of Dataset | Body | 測試資料集列表。 |
model | 是 | String | Body | 用於調優的基本模型 ID,或其他調優任務產出的模型 ID。 |
hyper_parameters | 否 | Map | Body | 用於調優模型的超參數。不同模型支援的參數及其預設值不同,請在控制台選擇相同的模型和訓練方式查看實際預設值。 以下參數影響訓練費用,必須填寫: |
training_type | 否 | String | Body | 調優方法,可選值為:
|
job_name | 否 | String | Body | 調優任務名稱 |
model_name | 否 | String | Body | 調優產生的模型名稱(並非模型 ID,模型 ID 由系統產生) |
返回範例
支援的基本模型ID( model )列表與訓練類型( training_type )支援情況:
支援的基本模型ID( model )列表與訓練類型( training_type )支援情況:
支援的模型
- 新加坡
- 華北二(北京)
- 文本產生
- 視覺理解(千問VL)
模型名稱 | 模型代碼 | SFT全參訓練(sft) | SFT高效訓練(efficient_sft) |
|---|---|---|---|
Qwen3.5-27B | qwen3.5-27b | 支援 | 支援 |
Qwen3.5-9B | qwen3.5-9b | 支援 | 支援 |
Qwen3-14B | qwen3-14b | × | 支援 |
調優方法對比
特性 | CPT(持續預訓練) | SFT (監督微調) | DPO (直接偏好最佳化) |
|---|---|---|---|
一句話總結 | 補知識(注入領域知識) | 學做事(學會遵循指令) | 做得更好(對齊人類偏好) |
輸入資料 | 1000萬+ Token 無標籤的領域文本 | 1000+ 條 高品質的“問-答”對 | 100+ 組 同一指令下的“更好-更差”回答對 |
核心目標 | 領域適應,學習專業詞彙和事實 | 教會模型對話格式和任務執行能力 | 使模型輸出更符合人類價值觀和偏好 |
學習方式 | 自監督學習(預測下一個詞) | 監督學習(模仿標準答案) | 直接偏好學習(增大好答案機率,降低壞答案機率) |
模型階段 | 通常在 SFT 之前 | CPT 之後,DPO 之前 | 通常在 SFT 之後,作為對齊的最後一步 |
訓練模式對比
全參訓練 | 高效訓練 (LoRA,推薦) | |
|---|---|---|
適用情境 | • 需要模型學習新能力 • 追求全域效果最優 | • 最佳化模型特定情境下的效果 • 對訓練時間和成本敏感的情境 |
訓練時間 | 較長,收斂速度較慢。 | 較短,收斂速度快。 |
hyper_parameters 內 支援的設定
hyper_parameters 內 支援的設定
不同模型支援的參數及其預設值不同,請前往控制台選擇相同的模型和訓練方式查看實際預設值。
| 參數名稱 | 推薦設定 | 類型 | 超參作用 |
|---|---|---|---|
n_epochs(迴圈次數)【必填】 | 資料量 < 10,000, 3~5次資料量 > 10,000, 1~2次 | Integer | 模型遍曆訓練的次數,請根據模型調優實際使用經驗進行調整。模型訓練迴圈次數越多,訓練時間越長,訓練費用越高。 |
learning_rate(學習率) | 使用百鍊推薦的預設值 | Float | 控制模型修正權重的強度。
|
freeze_vit(是否凍結視覺主幹網路) | 根據需求調整 | Boolean | 用於凍結視覺主幹網路的參數,使其在訓練過程中不更新權重。僅適用於 千問-VL(視覺理解)模型。 |
batch_size(批次大小)【必填】 | 使用百鍊推薦的預設值 | Integer | 一次性送入模型進行訓練的資料條數,參數過小會顯著延長訓練時間。不同模型的預設值不同,請前往控制台查看。 |
eval_steps(驗證步數) | 根據需求調整 | Integer | 訓練階段針對模型的驗證間隔步長,用於階段性評估模型訓練準確率、訓練損失。該參數影響模型調優進行時的 Validation Loss 和 Validation Token Accuracy 的顯示頻率。 |
logging_steps(日誌顯示步數) | 根據需求調整 | Integer | 調優日誌列印的步數。 |
lr_scheduler_type(學習率調整策略) | 推薦linear/Inverse_sqrt | String | 在模型訓練中動態調整學習率的策略。各策略詳情請參考在控制台進行模型調優。 |
max_length(序列長度)【必填】 | 8192 | Integer | 指的是單條訓練資料 token 支援的最大長度。如果單條資料 token 長度超過設定值,調優會直接丟棄該條資料,不進行訓練。字元與 token 之間的關係請參考Token和字串之間怎麼換算 |
max_split_val_dataset_sample(驗證集資料最大數量) | 使用百鍊推薦的預設值 | Integer | 當不設定"validation_datasets"時,阿里雲百鍊自動分割的驗證集最多隻有1000條。當設定了"validation_datasets"時,該參數無效。 |
split(訓練集在訓練檔案中佔比) | 使用百鍊推薦的預設值 | Float | 當不設定"validation_datasets"時,阿里雲百鍊會自動把訓練檔案中的80%作為訓練集,20%作為驗證集。當設定了"validation_datasets"時,該參數無效。 |
warmup_ratio(學習率預熱比例) | 使用百鍊推薦的預設值 | Float | 學習率預熱佔用總的訓練過程的比例。學習率預熱是指學習率在訓練開始後由一個較小值線性遞增至學習率設定值。該參數主要是限制模型參數在訓練初始階段的變化幅度,從而協助模型更穩定地進行訓練。比例過大效果與過低的學習率相同,會導致調優後的模型表現不會有太大變化。比例過小效果與過高的學習率相同,可能導致調優後的模型表現不一定更好,甚至變差。該參數僅對學習率調整策略“Constant”無效。 |
weight_decay(權重衰減) | 使用百鍊推薦的預設值 | Float | L2正則化強度。L2正則化能在一定程度上保持模型的通用能力。數值過大會導致模型調優效果不明顯。 |
高效微調(支援efficient_sft、dpo_lora)參數當對一個已經高效微調後的模型進行二次高效微調時, lora_rank、lora_alpha、lora_dropout三個參數必須保持一致。 | |||
lora_rank(LoRA秩值) | 64 | Integer | LoRA訓練中的低秩矩陣的秩大小。秩越大調優效果越好,但訓練會略慢。 |
lora_alpha(LoRA阿爾法) | 使用百鍊推薦的預設值 | Integer | 用於控制原模型權重與LoRA的低秩修正項之間的結合縮放係數。較大的Alpha值會給予LoRA修正項更多權重,使得模型更加依賴於微調任務的特定資訊;而較小的Alpha值則會讓模型更傾向於保留原始預訓練模型的知識。 |
lora_dropout(LoRA丟棄率) | 使用百鍊推薦的預設值 | Float | LoRA訓練中的低秩矩陣值的丟棄率。使用推薦數值能增強模型通用化能力。數值過大會導致模型微調效果不明顯。 |
模型參數快照發布(僅支援efficient_sft、sft)參數 | |||
save_strategy(快照儲存策略) | 可以設定為 epoch或steps。
| String | 設定調優過程中,儲存模型參數快照(Checkpoint)的儲存間隔和儲存數量上限。 |
save_steps(儲存步數) | 如果需要手動修改,建議設定為eval_steps參數的整數倍。 | Integer | 設定每訓練多少步儲存一次模型參數快照(Checkpoint)。 |
save_total_limit(快照儲存數量上限) | 10 | Integer | 限制最多儲存多少個模型參數快照(Checkpoint)用於發布。 |
查詢調優任務詳情
使用建立任務時返回的job_id來查詢任務狀態。
- HTTP
輸入參數
欄位 | 類型 | 傳參方式 | 必選 | 描述 |
|---|---|---|---|---|
job_id | String | Path Parameter | 是 | 要查詢的調優任務的ID。 |
返回成功範例
任務狀態 | 含義 |
|---|---|
PENDING | 訓練待開始。 |
QUEUING | 訓練正在排隊(同時只有一個訓練任務可以進行) |
RUNNING | 訓練進行中中。 |
CANCELING | 訓練正在取消中。 |
SUCCEEDED | 訓練成功。 |
FAILED | 訓練失敗。 |
CANCELED | 訓練已經取消。 |
finetuned_output指的是調優成功後的模型 ID,可用於模型部署。擷取調優任務日誌
- HTTP
可通過 offset 和 line 兩個參數擷取特定行數區間的日誌。 Offset 用於設定日誌輸出開始的位置;line 用於設定日誌最多輸出多少行。返回結果範例:
查詢與發布模型參數快照
僅 SFT微調訓練(efficient_sft、sft)支援儲存和發布其中間狀態的模型參數快照(Checkpoint)。
查詢調優任務的參數快照列表
欄位 | 類型 | 傳參方式 | 必選 | 描述 |
|---|---|---|---|---|
job_id | String | Path Parameter | 是 | 要查詢的調優任務的ID。 |
checkpoint指的是 Checkpoint ID,用於在模型發布(可選) API 中指定要發布的快照;model_name指的是模型 ID,可用於模型部署。(finetuned_output 輸出的是最後一個 checkpoint 的 model_name)快照發布狀態 (status) | 含義 |
|---|---|
PENDING | |
PROCESSING | 快照(Checkpoint)發布中。 |
SUCCEEDED | 快照(Checkpoint)發布成功。可直接進行模型部署&調用。 |
FAILED | 快照(Checkpoint)發布失敗。 |
模型發布(可選)
<checkpoint_id> 取值來自上一步查詢快照列表介面返回的 checkpoint 欄位(如 checkpoint-20),而非 full_name 或其他含 job_id 首碼的欄位值。欄位 | 類型 | 傳參方式 | 必選 | 描述 |
|---|---|---|---|---|
job_id | String | Path Parameter | 是 | 要查詢的調優任務的 ID。 |
checkpoint_id | String | Path Parameter | 是 | 要發布的 Checkpoint ID。取值為查詢快照列表介面返回的 |
model_name | String | Path Parameter | 是 | 發布後期望的模型 ID。 |
模型調優的更多操作
列舉調優工作清單
中止調優任務
智能終止正在訓練中的調優任務
刪除調優任務
無法刪除正在訓練中的調優任務
模型部署&調用
模型部署
請前往模型部署控制台部署模型。
模型調用
當模型部署狀態為RUNNING時,可以像調用其他模型一樣使用調優後的模型。
也可以前往模型部署控制台介面擷取模型code。
更多使用方法和參數設定請前往DashScope API 參考。