本文档以通义千问模型的调优操作为例进行说明,通过 API (HTTP)和 命令行(Shell)两种方式,使用阿里云百炼提供的模型调优功能。模型调优包含模型微调(SFT)、继续预训练(CPT)、模型偏好训练(DPO)三种模型训练方式。
本文档仅适用于中国大陆版(北京地域)。
前提条件
上传调优文件
准备调优文件
SFT 训练集
SFT ChatML(Chat Markup Language)格式训练数据,支持多轮对话和多种角色设置,一行训练数据展开后结构如下:
不支持OpenAI 的name、weight参数,所有的 assistant 输出都会被训练。
{"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 格式只支持单轮对话)。
针对深度思考的内容,需要使用<think>标签包裹,训练数据集样例:SFT- 深度思考内容示例.jsonl。
思考标签前后的若干个\n必须要保留。{"role": "assistant", "content": "<think>\n期望的模型思考内容\n</think>\n\n期望的模型输出"} --正常输入深度思考内容
{"role": "assistant", "content": "<think>\n\n</think>\n\n期望的模型输出"} --设置空的深度思考内容,用于告诉模型不要思考SFT 图像理解(千问VL)训练集
SFT图像理解 ChatML 格式训练数据,一行训练数据展开后结构如下:
不支持OpenAI 的name、weight参数,所有的 assistant 输出都会被训练。
system/user/assistant 区别请参见文本生成模型概述。训练数据集样例:。
{"messages":[
{"role":"user",
"content":[
{"text":"用户输入1"},
{"image":"图像文件名1"}]},
{"role":"assistant",
"content":[
{"text":"模型期望输出1"}]},
{"role":"user",
"content":[
{"text":"用户输入2"}]},
{"role":"assistant",
"content":[
{"text":"模型期望输出2"}]},
...
...
...
]}针对深度思考的内容,需要使用<think>标签包裹:
{"role": "assistant", "content": "<think>期望的模型思考内容</think>期望的模型输出"}压缩包要求:
压缩包格式:ZIP。最大支持 2 GB, ZIP 包内文件夹、文件名仅支持 ASCII 字符集中的字母 (a-z, A-Z)、数字 (0-9)、下划线 (_)、连字符 (-)。
训练文本数据固定为 data.jsonl,并且位于压缩包的根目录下,应确保压缩后打开 zip 文件,直接就能看到
data.jsonl文件。图片单张尺寸的宽度和高度均不得超过 1024px,最大不超过10MB,支持
.bmp,.jpeg /.jpg,.png,.tif /.tiff,.webp格式。图片文件的名称不能重复,即使分布在不同的文件夹中。
压缩包目录结构:
单层目录(推荐)
图片文件与
data.jsonl文件均位于压缩包根目录下。Trainingdata_vl.zip |--- data.jsonl #注意:外层不能再包裹文件夹 |--- image1.png |--- image2.jpg多层目录
data.jsonl 必须在压缩包根目录下。
data.jsonl 内只需要声明图像文件名,不需要声明文件路径。例如:
正确示例:
image1.jpg;错误示例:jpg_folder/image1.jpg。图像文件名应在压缩包内全局唯一。
Trainingdata_vl.zip |--- data.jsonl #注意:外层不能再包裹文件夹 |--- jpg_folder | └── image1.jpg |--- png_folder └── image2.png
DPO 数据集
DPO ChatML 格式训练数据,一行训练数据展开后结构如下:
system/user/assistant 区别请参见文本生成模型概述,训练数据集样例:DPO ChatML格式样例.jsonl。
{"messages":[
{"role":"system","content":"系统输入"},
{"role":"user","content":"用户输入1"},
{"role":"assistant","content":"模型输出1"},
{"role":"user","content":"用户输入2"},
{"role":"assistant","content":"模型输出2"},
{"role":"user","content":"用户输入3"}
],
"chosen":
{"role":"assistant","content":"赞同的模型期望输出3"},
"rejected":
{"role":"assistant","content":"反对的模型期望输出3"}}模型将 messages 内的所有内容均作为输入,DPO 用于训练模型对用户输入3的正负反馈。
针对深度思考的内容,需要使用<think>标签包裹:
{"role": "assistant", "content": "<think>期望的模型思考内容</think>期望的模型输出"}CPT 训练集
CPT 纯文本格式训练数据,一行训练数据展开后结构如下:
{"text":"文本内容"}训练数据集样例:CPT-文本生成训练集示例.jsonl
也可以前往阿里云百炼控制台下载数据模板。 |
|
将调优文件上传至阿里云百炼
HTTP
Windows CMD 请将${DASHSCOPE_API_KEY}替换为%DASHSCOPE_API_KEY%,PowerShell 请替换为$env:DASHSCOPE_API_KEY
curl --request POST \
'https://dashscope.aliyuncs.com/api/v1/files' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--form 'files=@"/path/to/your/file.jsonl"' \
--form 'purpose="fine-tune"'\
--form 'descriptions="a sample fine-tune data file for qwen"'返回结果:
{
"request_id":"xx",
"data":{
"uploaded_files":[{
"file_id":"976bd01a-f30b-4414-86fd-50c54486e3ef",
"name":"qwen-fine-tune-sample.jsonl"}],
"failed_uploads":[]}
}Shell
需要安装 DashScope SDK,请参考安装SDK。
一次调用只能上传一个文件
dashscope files.upload -f '{替换为训练数据集的本地文件路径}' -p fine_tune -d 'training dataset'
SFT、DPO、CPT数据集支持.jsonl文件;SFT图像理解训练集支持.zip压缩包。
使用限制:
单个文件大小最大为300MB。
有效文件(未删除)总使用空间配额为5GB。
有效文件(未删除)总数量配额为100个。
返回结果:
Upload success, file id: 976bd01a-f30b-4414-86fd-50c54486e3ef模型调优
创建调优任务
HTTP
Windows CMD 请将${DASHSCOPE_API_KEY}替换为%DASHSCOPE_API_KEY%,PowerShell 请替换为$env:DASHSCOPE_API_KEY
{
"request_id": "1acef94a-687c-4e6a-ab64-ee26214c78ef",
"output":
{
"job_id": "ft-202511121659-dc7c",
"job_name": "ft-202511121659-dc7c",
"status": "PENDING",
"finetuned_output": "qwen2.5-7b-instruct-ft-202511121659-dc7c",
"model": "qwen2.5-7b-instruct",
"base_model": "qwen2.5-7b-instruct",
"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,
"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-12 16:59:23",
"workspace_id": "llm-8v53etv3hwb8orx1",
"user_identity": "1654290265984853",
"modifier": "AssumedRoleUser300311773017004168",
"creator": "AssumedRoleUser300311773017004168",
"group": "llm",
"max_output_cnt": 10
}
}输入参数
字段 | 必选 | 类型 | 传参方式 | 描述 |
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":"8ee17797-028c-43f6-b444-0598d6bfb0f9",
"output":{
"job_id":"ft-202410121111-a590",
"job_name":"ft-202410121111-a590",
"status":"PENDING",
"model":"qwen-turbo",
"base_model":"qwen-turbo",
"training_file_ids":[
"976bd01a-f30b-4414-86fd-50c54486e3ef"],
"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},
"training_type":"sft",
"create_time":"2024-10-12 11:55:45",
"user_identity":"1396993924585947",
"modifier":"1396993924585947",
"creator":"1396993924585947",
"group":"llm"
}
}Shell
dashscope fine_tunes.call -m qwen-turbo -t '<替换为训练数据集的file_id1>' '<替换为训练数据集的file_id2>' \
--mode sft -b 16 -e 1 -l 1.6e-5 \
--hyper_parameters split=0.9 warmup_ratio=0.0 eval_steps=1
调优指令进程将持续监控输出模型调优的日志

调优指令进程即使在调优结束后也不会自动关闭,可以随时终止调优指令进程,不会影响阿里云百炼平台上的模型调优任务。
支持的基础模型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":"c8b1d650-498e-432b-9346-c591e34e9622",
"output":{
"job_id":"ft-202410121111-a590",
"job_name":"ft-202410121111-a590",
"status":"SUCCEEDED",
"finetuned_output":"qwen-turbo-ft-202410121111-a590",
"model":"qwen-turbo",
"base_model":"qwen-turbo",
"training_file_ids":[
"976bd01a-f30b-4414-86fd-50c54486e3ef"],
"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},
"training_type":"sft",
"create_time":"2024-10-12 11:43:09",
"user_identity":"1396993924585947",
"modifier":"1396993924585947",
"creator":"1396993924585947",
"end_time":"2024-10-12 13:20:33",
"group":"llm",
"usage":3518670 #调优消耗的 Token 量
}
}任务状态 | 含义 |
PENDING | 训练待开始。 |
QUEUING | 训练正在排队(同时只有一个训练任务可以进行) |
RUNNING | 训练正在进行中。 |
CANCELING | 训练正在取消中。 |
SUCCEEDED | 训练成功。 |
FAILED | 训练失败。 |
CANCELED | 训练已经取消。 |
训练成功后,finetuned_output指的是调优成功后的模型 ID,可用于模型部署。
Shell
dashscope fine_tunes.get -j {job_id}输入参数
字段 | 类型 | 传参方式 | 必选 | 描述 |
job_id | String | Path Parameter | 是 | 要查询的调优任务的ID。 |
返回成功样例
Fine-tune task success, fine-tuned model : qwen-turbo-ft-202410121111-a590任务状态 | 含义 |
PENDING | 训练待开始。 |
QUEUING | 训练正在排队(同时只有一个训练任务可以进行) |
RUNNING | 训练正在进行中。 |
CANCELING | 训练正在取消中。 |
SUCCEEDED | 训练成功。 |
FAILED | 训练失败。 |
CANCELED | 训练已经取消。 |
qwen-turbo-ft-202410121111-a590为调优成功后的模型 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}",
...
...
...
]
}
}Shell
dashscope fine_tunes.stream -j {job_id}如果调优未完成,指令进程将持续监控输出模型调优的日志。
如果调优已完成,将全量输出模型调优的日志。
查询与发布模型参数快照
仅 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。 |
返回成功样例
{
"request_id": "c11939b5-efa6-4639-97ae-ed4597984647",
"output":
[
{
"create_time": "2025-11-11T16:25:42",
"full_name": "ft-202511111540-0b62-checkpoint-20",
"job_id": "ft-202511111540-0b62",
"checkpoint": "checkpoint-20",
"model_name": "qwen2.5-7b-instruct-ft-202511111540-0b62",
"model_display_name": "ft-202511111540-0b62",
"status": "SUCCEEDED"
}
]
}快照发布状态 | 含义 |
PENDING | 快照(Checkpoint)待导出。 |
PROCESSING | 快照(Checkpoint)导出中。 |
SUCCEEDED | 快照(Checkpoint)导出成功。 |
FAILED | 快照(Checkpoint)导出失败。 |
checkpoint指的是 Checkpoint ID,用于在模型发布 API 中指定要导出的快照;model_name指的是模型 ID,可用于模型部署。(finetuned_output 输出的是最后一个 checkpoint 的 model_name)
模型发布
在百炼平台上,模型调优完成后可以导出参数快照,导出后才能基于此版本的参数快照在百炼上进行模型部署。
导出的参数快照保存在云存储中,暂不支持访问或下载。
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' dashscope fine_tunes.list中止调优任务
智能终止正在训练中的调优任务
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' dashscope fine_tunes.cancel -j {job_id}删除调优任务
无法删除正在训练中的调优任务
curl --request DELETE 'https://dashscope.aliyuncs.com/api/v1/fine-tunes/{job_id}' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' dashscope fine_tunes.delete -j {job_id}API参考
DashScope命令行调用参考已包含在本篇内容中,详细API调用请参考API详情。
模型部署&调用
模型部署
将调优任务成功后的模型 ID 作为创建模型服务的model_name参数。
更多模型部署的相关信息请参考:模型部署-快速开始。
HTTP
Windows CMD 请替换为%DASHSCOPE_API_KEY%,PowerShell 请替换为$env:DASHSCOPE_API_KEY
curl 'https://dashscope.aliyuncs.com/api/v1/deployments' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' \
--data '{ "model_name": "{替换为调优任务成功后的模型 ID}", "capacity":2}'返回结果
{
"request_id":"865d7bd0-3f8f-4937-ad40-66361e6bc617",
"output":{
"deployed_model":"qwen-turbo-ft-202410121142-b631",
"gmt_create":"2024-10-12T15:59:55.494",
"gmt_modified":"2024-10-12T15:59:55.494",
"status":"PENDING",
"model_name":"qwen-turbo-ft-202410121142-b631",
"base_model":"qwen-turbo",
"base_capacity":2,
"capacity":2,
"ready_capacity":0,
"workspace_id":"llm-3z7uw7fwz0ve65pt",
"charge_type":"post_paid",
"creator":"1396993924585947",
"modifier":"1396993924585947"
}
}其中deployed_model为部署的模型实例ID。
Shell
dashscope deployments.call -c 2 -m {替换为调优任务成功后的模型 ID}部署指令进程将持续监控输出模型部署的日志
部署指令进程即使在调优结束后也不会自动关闭,可以随时终止部署指令进程,这不会影响阿里云百炼平台上的模型部署任务。

红框内为部署的模型实例 ID。可以使用后续介绍的命令或前往控制台查看当前部署任务状态。
查询模型部署的状态
当部署状态为RUNNING时,表示该模型当前可供调用。
curl 'https://dashscope.aliyuncs.com/api/v1/deployments/{替换为部署任务成功后的模型实例 ID}' \
--header 'Authorization: Bearer '${DASHSCOPE_API_KEY} \
--header 'Content-Type: application/json' dashscope deployments.get -d {替换为部署任务成功后的模型实例 ID}更多模型部署相关的操作,如扩缩容、下线等请参见:模型部署-API详情。
模型调用
当模型部署状态为RUNNING时,可以像调用其他模型一样使用调优后的模型。
更多使用方法和参数设置请前往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"
}
}'dashscope generation.call -m {替换为部署任务成功后的模型实例 ID} -p '你是谁?'模型评测
阿里云百炼的模型评测功能必须使用控制台,请前往阿里云百炼的模型评测 页面,评估模型训练效果。
相关信息请参见模型评测。
