本文档以千问模型的调优操作为例进行说明,通过 API (HTTP)和 命令行(Shell)两种方式,使用阿里云百炼提供的模型调优功能。模型调优包含模型微调(SFT)、继续预训练(CPT)、模型偏好训练(DPO)三种模型训练方式。
前提条件
- 已经完整阅读了模型调优简介,了解模型调优的基本概念、流程及数据格式要求。
- 已开通服务并获得API-KEY, 请参考获取与配置 API Key。
- 阿里云子账号(RAM用户)需被授予必要的调用、训练和部署权限。
说明通过 API 创建的训练任务仅支持按 Token 计费,暂不支持使用模型训练单元(预付费或后付费)。如需使用训练单元,请通过控制台创建任务。
上传调优文件
准备调优文件
SFT/DPO/CPT 各训练方式的数据格式规格、打包规则、大小与数量限制、API 上传配额详见调优数据上传规则。各训练方式支持的文件格式概览:
训练方式 | 文件格式 |
|---|---|
SFT 文本生成 | jsonl(ChatML messages 多轮结构) |
SFT 多模态(图片/视频) | zip(data.jsonl + 图片/视频文件) |
DPO | jsonl(chosen/rejected 偏好对比) |
CPT | jsonl(纯文本 {text}) |
评测集 | xlsx |
也可以前往百炼控制台下载数据模板。 | 在新增数据集页面的上传文件区域下方,可找到数据模板下载链接。 |
将调优文件上传至阿里云百炼
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/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下为新加坡地域url,若使用北京地域的服务,需将url替换为:https://dashscope.aliyuncs.com/compatible-mode/v1
base_url="https://dashscope-intl.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/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
// 以下为新加坡地域url,若使用北京地域的服务,需将url替换为:https://dashscope.aliyuncs.com/compatible-mode/v1
.baseUrl("https://dashscope-intl.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/model-studio/get-api-key
# 以下为新加坡地域url,若使用北京地域的服务,需将url替换为:https://dashscope.aliyuncs.com/compatible-mode/v1/files
# === 执行时请删除该注释 ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"test.jsonl"' \
--form 'purpose="fine-tune"'
说明使用限制:
- 单个文件大小最大为300MB
- 所有的有效文件(未删除)总使用空间配额为100GB
- 所有的有效文件(未删除)总数量配额为10000个
- 文件存储没有时间限制
通过 API 上传的调优文件,在百炼控制台模型调优页面与 API 调用中均可见可用。
模型调优
调优任务的创建、查询、日志、快照管理及列举/中止/删除等操作均通过 API 完成,各接口的完整请求/响应参数与示例见对应接口页,本节仅梳理操作流程。
创建调优任务
调用创建调优任务接口(POST /api/v1/fine-tunes)发起训练,请求体(model / training_datasets / hyper_parameters / training_type 等)与响应示例见该接口页。
查询调优任务详情
使用 job_id 查询任务状态,详见查询调优任务状态。
获取调优任务日志
训练日志通过查询调优任务日志接口获取(GET /api/v1/fine-tunes/{job_id}/logs)。
查询与发布模型参数快照
调优产出的 Checkpoint 可列举与导出(发布):
- 列举快照见列举 Checkpoint(
GET /api/v1/fine-tunes/{job_id}/checkpoints)。 - 导出(发布)指定快照见导出 Checkpoint(
GET /api/v1/fine-tunes/{job_id}/export/{checkpoint}?model_name=...),异步执行,用列举接口轮询状态。
模型调优的更多操作
模型部署&调用
模型部署
请前往专属部署控制台部署模型。
模型调用
当模型部署状态为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"
}
}'