主要步骤:数据管理(上传数据集) > 模型调优 > 模型部署 > AP调用。
一、基础概念
1、三种训练方式
阿里云百炼提供了三种训练方式,每种训练方式需要的数据集内容格式不一样。
1. SFT 微调训练
有监督微调,增强模型指令跟随的能力,提供全参或少量参数(如LoRA)的训练方式。
**核心逻辑:**给模型看"问题和标准答案"的组合,让它模仿学习。
注:教模型做事(学会输出格式和逻辑)
作用
让模型学会遵循指令(不再是一般的对话模型,而是能听懂"帮我关灯"这种具体指令)
让模型学会特定的输出格式(例如JSON格式)
将通用模型适配到垂直领域(从通用助手变成智能家居专家)
2. DPO 偏好训练
引入负反馈,降低幻觉,使得模型输出更符合人类偏好。
**核心逻辑:**给模型看"好回答"和"坏回答"的对比,让它学会偏好排序。
注:教模型选最优(学会输出什么叫好)
作用
引入负反馈:明确告诉模型什么是不好的回答,
降低幻觉:减少模型编造内容(比如明明没关灯,却说"关了")
对齐人类偏好:让模型输出更符合用户期望(更友好、更完整、更安全)
3. CPT 继续预训练
通过无标注数据进行无监督继续预训练,强化或新增模型特定能力。
**核心逻辑:**用无标注数据(纯文本,没有问答对)继续训练模型的基础能力。
注:扩充模型知识能力(学会新领域的知识)
作用:
强化特定能力:比如大量阅读医学文献,增强模型的医疗知识
新增知识领域:比如模型原本不懂智能家居协议(Zigbee、MQTT),通过CPT让它学会这些术语和概
适应新语料风格:比如学习技术文档、法律条文、古诗词等特殊文体
2、三者关系与使用流程
原始通用模型
↓
【CPT 继续预训练】 ← 学习新知识(纯文本数据,例如系统操作手册)↓
领域增强模型
↓
【SFT 微调训练】 ← 学会指令理解用户指令,并按期望的格式(自然语言、JSON等)↓
指令跟随模型
↓
【DPO 偏好训练】 ← 优化回答质量(对比数据,如好回答 vs 坏回答)↓
高质量对齐模型
3、【家具控制场景】的大模型微调方案(案例):
| 阶段 | 训练方式 | 数据需求 | 数据量建议 | 目标 |
|---|---|---|---|---|
| 第一阶段 | CPT | 智能家居说明书、用户手册 | 100MB~1GB 纯文本 | 让模型学会"亮度20%"、"色温5000K"等术语 |
| 第二阶段 | SFT | 问答对 | 500~5000条 | 让模型学会"指令→执行确认"的格式 |
| 第三阶段(可选) | DPO | 对比数据(chosen + rejected) | 100~1000对 | 让模型回答更友好、更完整、更主动 |
3.1、如何选择训练方式?
- 只有几百条标注问答,预算有限 → 只做 SFT(LoRA)
- 模型已经能执行,但回答生硬、偶尔幻觉 → 做 DPO
- 模型完全不懂智能家居术语(如不知道"色温"是什么) → 先做 CPT
- 追求最佳效果 → CPT → SFT → DPO 全套流程
二、实操
以灯具智能语音训练为例,使用 SFT 微调训练。
仅 SFT 方式支持选择按量付费的方式部署,SFT 微调 被定义为「业务适配型微调」。
要便宜、按量、好用 → 只做 Qwen 基座的 SFT-LoRA 微调,别碰 DPO 和 OPT。
1、数据管理(训练集)
点击"数据格式说明",可以查看需要上传的数据集格式;然后让大模型生成用于测试的数据集。
或者在第三方平台,如modelscope魔塔下载相关数据集。

2、模型调优
训练方式的选择取决于第一步上传的数据集格式;否则无法添加训练集(不同的训练方式有不同格式的训练集格式)。
按照步骤选择训练集,参数配置采用默认即可。最后点击"开始训练"。


3、模型部署(使用)
等训练完成后,就可以进行最后的部署了。
路径:[模型部署] >> [部署新模型] >> 选择模型 >> 选择按量付费 >> 开始部署。


3.1. 费用说明(SFT 按量部署)
微调后的模型按量部署,费用与基座大模型的调用价格一致。
对基础模型(如 Qwen3-8B、Qwen2.5-7B 等)完成 SFT 微调后,部署为自定义模型并按 Token 使用量计费时,其输入/输出单价完全沿用所选基座模型的标准价格。
例如,以上案例基于 Qwen3-8B 微调,则调用费用为:
- 输入:¥0.0005 / 千 Token
- 输出(非思考模式):¥0.002 / 千Token
💡 注意:此计费方式仅适用于支持"按 Token 计费"的基础模型微调场景;部署本身不额外收取模型调用费,仅按实际 Token 消耗计费。
3.2. 点击"立刻体验"测试微调效果

3.3. 代码中使用微调后的模型
python
# 代码中替换为微调后的模型
response = dashscope.Generation.call(
model="qwen3-8b-01d1xxx", # 替换为实际部署后的模型 code
messages=messages,
...
)