创建模型精调任务
更新时间:2024-09-05
功能介绍
本接口用于创建模型精调任务。
SDK调用
使用说明
本文API支持通过千帆Python SDK、Go SDK、Java SDK 和 Node.js SDK调用,调用流程请参考SDK安装及使用流程。
调用示例
import os
from qianfan import resources
# 使用安全认证AK/SK鉴权,通过环境变量方式初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.environ["QIANFAN_ACCESS_KEY"] = "your_iam_ak"
os.environ["QIANFAN_SECRET_KEY"] = "your_iam_sk"
resp = resources.FineTune.V2.create_task(
job_id="job-6ucxxxck8q0",
params_scale="FullFineTuning",
hyper_params={
"epoch": 1,
"learningRate": 0.00003,
"maxSeqLen": 4096
},
dataset_config={
"sourceType": "Platform",
"versions": [{
"versionId": "ds-xxxxxxx"
}],
"splitRatio": 20
},
)
print(resp)
package main
import (
"context"
"fmt"
"os"
"github.com/baidubce/bce-qianfan-sdk/go/qianfan"
)
func main() {
// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
os.Setenv("QIANFAN_ACCESS_KEY", "your_iam_ak")
os.Setenv("QIANFAN_SECRET_KEY", "your_iam_sk")
ca := qianfan.NewConsoleAction()
res, err := ca.Call(context.TODO(), "/v2/finetuning", "CreateFineTuningTask", map[string]interface{}{
"jobId": "job-1xzycis4jm3b",
"parameterScale": "FullFineTuning",
"hyperParameterConfig": map[string]any{
"epoch": 1,
"learningRate": 0.00003,
"maxSeqLen": 4096
},
"datasetConfig": map[string]any{
"sourceType": "Platform",
"versions": []map[string]any{{
"versionId": "ds-he8srs01ym0b8fh7",
}},
"splitRatio": 20,
},
})
if err != nil {
panic(err)
}
fmt.Println(string(res.Body))
}
import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.model.console.ConsoleResponse;
import com.baidubce.qianfan.util.CollUtils;
import com.baidubce.qianfan.util.Json;
import java.util.Map;
public class Dome {
public static void main(String args[]){
// 使用安全认证AK/SK鉴权,替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
Qianfan qianfan = new Qianfan("your_iam_ak", "your_iam_sk");
ConsoleResponse<Map<String, Object>> response = qianfan.console()
// 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求地址的后缀
.route("/v2/finetuning")
// 调用本文API,该参数值为固定值,无需修改;对应本文HTTP调用-请求说明-请求参数-Query参数的Action
.action("CreateFineTuningTask")
// 需要传入参数的场景,可以自行封装请求类,或者使用Map.of()来构建请求Body
// Java 8可以使用SDK提供的CollUtils.mapOf()来替代Map.of()
// 对应本文HTTP调用-请求说明-请求参数-Body参数,具体使用请查看Body参数说明,根据实际使用选择参数
.body(CollUtils.mapOf(
"jobId", "job-1xzycis4jm3b",
"parameterScale", "FullFineTuning",
"hyperParameterConfig", CollUtils.mapOf(
"epoch", 1,
"learningRate", 0.00003,
"maxSeqLen", 4096
),
"datasetConfig", CollUtils.mapOf(
"sourceType", "Platform",
"versions",new Map[]{CollUtils.mapOf(
"versionId", "ds-he8srs01ym0b8fh7"
)},
"splitRatio", 20
)
))
.execute();
System.out.println(Json.serialize(response));
}
}
import {consoleAction, setEnvVariable} from "@baiducloud/qianfan";
// 使用安全认证AK/SK鉴权,通过环境变量初始化;替换下列示例中参数,安全认证Access Key替换your_iam_ak,Secret Key替换your_iam_sk
setEnvVariable('QIANFAN_ACCESS_KEY','your_iam_ak');
setEnvVariable('QIANFAN_SECRET_KEY','your_iam_sk');
async function main() {
const res = await consoleAction({base_api_route: 'v2/finetuning', action: 'CreateFineTuningTask', data: {
"jobId": "job-1xzycis4jm3b",
"parameterScale": "FullFineTuning",
"hyperParameterConfig": {
"epoch": 1,
"learningRate": 0.00003,
"maxSeqLen": 4096
},
"datasetConfig": {
"sourceType": "Platform",
"versions": [{
"versionId": "ds-he8srs01ym0b8fh7"
}],
"splitRatio": 20
}
}
});
console.log(res);
}
main();
返回示例
QfResponse(
code=200,
headers={...},
body={
"requestId": "81067d4d-c36b-49b2-b2df-87dc9f0b019e",
"result": {"jobId": "job-6ucxxxck8q0", "taskId": "task-2js67xxxi9a"},
},
)
{
"requestId":"1bef3f87-c5b2-4419-936b-50f9884f10d4",
"result":{
"jobId":"job-n50985crhqq3",
"taskId":"task-nycp7bycjjn7"
}
}
{
"requestId":"1bef3f87-c5b2-4419-936b-50f9884f10d4",
"result":{
"jobId":"job-n50985crhqq3",
"taskId":"task-nycp7bycjjn7"
}
}
{
requestId:'1bef3f87-c5b2-4419-936b-50f9884f10d4',
result:{
jobId:'job-n50985crhqq3',
taskId:'task-nycp7bycjjn7'
}
}
请求参数
注意:以下为Python SDK参数说明,Go SDK、Java SDK、Node.js SDK参数说明请参考本文HTTP调用-请求说明。
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
jobId | string | 是 | 作业ID,说明: (1)该参数只支持Post-pretrain、SFT 下的训练任务 (2)可以通过以下方式获取该参数值,以SFT为例,在千帆控制台-模型精调页面,查看ID,如下图所示: |
incrementTaskId | string | 否 | 基础任务ID,说明: (1)如果是增量训练,该字段必传 (2)传了该字段,默认走增量训练 (3)基础任务的模型类型要和作业一致 (4)自定义模型作业不支持增量训练 |
increment_checkpoint_step | int | 否 | 基础任务Step,说明:如果基础任务是多checkpoint任务,该字段必传 |
params_scale | string | 否 | 调优的参数规模,该字段取值详情参考模型支持情况 |
hyper_params | Dict[str, Any] | 是 | 超参数配置,该字段请查看本文hyper_params说明,也可以参考模型支持情况 |
dataset_config | Dict[str, Any] | 是 | 数据集配置 |
modelConfig | Dict | 否 | 模型配置,说明:只支持自定义模型作业,此时该参数必传 |
datasetConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
sourceType | string | 是 | 数据来源,可选值: · Platform · Bos |
versions | List<datasetVersion> | 是 | 数据集版本列表,说明:可以通过以下方法获取该数据版本值: 在千帆控制台-数据集管理页面,查看某数据集版本,如下图所以: |
splitRatio | double | 是 | 数据拆分比例,取值范围:[0,20] |
corpusProportion | string | 否 | 混合训练,通用语料库:用户数据 说明: (1)仅对话续写类型支持 (2)可选值: · 1:5 · 1:2 · 1:1 · 2:1 · 5:1 |
datasetVersion说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
versionId | string | 否 | 数据集版本ID,说明: (1) 当sourceType为Platform时,该字段必传 (2) 数据集必须是已发布的数据集 (3)可以通过以下方法获取该字段值,在千帆控制台-数据集管理页面,查看某数据集版本ID,如下图所示: |
samplingRate | float | 否 | 数据集采样率,说明: (1)sourceType为Platform时,该字段有效 (2)取值范围:[0.01-10],默认值1 |
versionBosUri | string | 否 | 数据集版本bos地址,说明: (1) 当sourceType为Bos时,该字段必传 |
modelConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
modelId | string | 是 | 模型ID |
modelVersionId | string | 是 | 模型版本ID |
hyper_params说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
epoch | int | 否 | 迭代轮次,说明:该字段取值详情参考模型支持情况 |
learningRate | float | 否 | 学习率,说明:该字段取值详情参考模型支持情况 |
batchSize | int | 否 | 批处理大小,说明:该字段取值更多详情参考模型支持情况 |
maxSeqLen | int | 否 | 序列长度,说明:该字段取值更多详情参考模型支持情况 |
loggingSteps | int | 否 | 保存日志间隔,说明:该字段取值更多详情参考模型支持情况 |
warmupRatio | float | 否 | 预热比例,说明:该字段取值更多详情参考模型支持情况 |
weightDecay | float | 否 | 正则化系数,说明:该字段取值更多详情参考模型支持情况 |
loraRank | int | 否 | LoRA 策略中的秩,说明:该字段取值更多详情参考模型支持情况 |
loraAlpha | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
loraAllLinear | bool | 否 | LoRA 所有线性层,说明:该字段取值更多详情参考模型支持情况 |
loraTargetModules | string[] | 否 | 说明:该字段取值更多详情参考模型支持情况 |
loraDropout | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
schedulerName | string | 否 | 说明:该字段取值更多详情参考模型支持情况 |
Packing | string | 否 | 可选值:true、false 或 auto,默认值auto,说明:该字段取值更多详情参考模型支持情况 |
gradientAccumulationSteps | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
pseudoSamplingProb | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
checkpointCount | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
saveStep | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
dpoBeta | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
seed | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
lrSchedulerType | string | 否 | 说明:该字段取值更多详情参考模型支持情况 |
lrEnd | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
power | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
validationStep | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
earlyStopping | bool | 否 | 说明:该字段取值更多详情参考模型支持情况 |
earlyStopMetric | string | 否 | 说明:该字段取值更多详情参考模型支持情况 |
early_stopping_threshold | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
early_stopping_patience | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
返回参数
请参考本文HTTP调用-响应说明。
HTTP调用
鉴权说明
调用本文API,使用“基于安全认证AK/SK”进行签名计算鉴权,即使用安全认证中的Access Key ID 和 Secret Access Key进行鉴权,具体鉴权认证机制参考HTTP调用鉴权说明。
请求说明
- 基本信息
请求地址: https://qianfan.baidubce.com/v2/finetuning
请求方式: POST
- Header参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Query参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Action | string | 是 | 方法名称,固定值CreateFineTuningTask |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
jobId | string | 是 | 作业ID,说明: (1)该参数只支持Post-pretrain、SFT 下的训练任务 (2)可以通过以下方式获取该参数值,以SFT为例,在千帆控制台-模型精调页面,查看ID,如下图所示: |
incrementTaskId | string | 否 | 基础任务ID,说明: (1)如果是增量训练,该字段必传 (2)传了该字段,默认走增量训练 (3)基础任务的模型类型要和作业一致 (4)自定义模型作业不支持增量训练 |
incrementCheckpointStep | int | 否 | 基础任务Step,说明:如果基础任务是多checkpoint任务,该字段必传 |
parameterScale | string | 否 | 调优的参数规模,该字段取值详情参考模型支持情况 |
hyperParameterConfig | object | 是 | 超参数配置,说明:该字段请查看本文hyperParameterConfig说明,也可以参考模型支持情况 |
datasetConfig | object | 是 | 数据集配置 |
modelConfig | object | 否 | 模型配置,说明:只支持自定义模型作业,此时该参数必传 |
resourceConfig | object | 否 | 资源池配置 |
resourceConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
idleResource | bool | 否 | 是否开启潮汐调度任务,说明: 目前只有SFT的任务,支持潮汐任务调度 |
datasetConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
sourceType | string | 是 | 数据来源,可选值: · Platform · Bos |
versions | List<datasetVersion> | 是 | 数据集版本列表,说明:可以通过以下方法获取该数据版本值: 在千帆控制台-数据集管理页面,查看某数据集版本,如下图所以: |
splitRatio | double | 是 | 数据拆分比例,取值范围:[0,20] |
corpusProportion | string | 否 | 说明:此参数调整,建议使用最新内容: (1)新内容说明:表示混合训练混入比例,单位:百分比,例如:0.03%: · 仅文本生成类型支持 · 取值范围[0-100]% (2)历史使用说明:表示混合训练,通用语料库:用户数据 |
datasetVersion说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
versionId | string | 否 | 数据集版本ID,说明: (1) 当sourceType为Platform时,该字段必传 (2) 数据集必须是已发布的数据集 (3)可以通过以下方法获取该字段值,在千帆控制台-数据集管理页面,查看某数据集版本ID,如下图所示: |
samplingRate | float | 否 | 数据集采样率,说明: (1)sourceType为Platform时,该字段有效 (2)取值范围:[0.01-10],默认值1 |
versionBosUri | string | 否 | 数据集版本bos地址,说明: (1)当sourceType为Bos时,该字段必传 |
modelConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
modelId | string | 是 | 模型ID |
modelVersionId | string | 是 | 模型版本ID |
hyperParameterConfig说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
epoch | int | 否 | 迭代轮次,说明:该字段取值详情参考模型支持情况 |
learningRate | float | 否 | 学习率,说明:该字段取值详情参考模型支持情况 |
batchSize | int | 否 | 批处理大小,说明:该字段取值更多详情参考模型支持情况 |
maxSeqLen | int | 否 | 序列长度,说明:该字段取值更多详情参考模型支持情况 |
loggingSteps | int | 否 | 保存日志间隔,说明:该字段取值更多详情参考模型支持情况 |
warmupRatio | float | 否 | 预热比例,说明:该字段取值更多详情参考模型支持情况 |
weightDecay | float | 否 | 正则化系数,说明:该字段取值更多详情参考模型支持情况 |
loraRank | int | 否 | LoRA 策略中的秩,说明:该字段取值更多详情参考模型支持情况 |
loraAlpha | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
loraAllLinear | true | 否 | LoRA 所有线性层,说明:该字段取值更多详情参考模型支持情况 |
loraTargetModules | string[] | 否 | 说明:该字段取值更多详情参考模型支持情况 |
loraDropout | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
schedulerName | string | 否 | 说明:该字段取值更多详情参考模型支持情况 |
Packing | string | 否 | 可选值:true、false 或 auto,默认值auto,说明:该字段取值更多详情参考模型支持情况 |
gradientAccumulationSteps | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
pseudoSamplingProb | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
checkpointCount | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
saveStep | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
dpoBeta | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
seed | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
lrSchedulerType | string | 否 | 说明:该字段取值更多详情参考模型支持情况 |
lrEnd | float | 否 | 说明:该字段取值更多详情参考模型支持情况 |
power | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
validationStep | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
earlyStopping | bool | 否 | 说明:该字段取值更多详情参考模型支持情况 |
earlyStopMetric | string | 否 | 说明:该字段取值更多详情参考模型支持情况 |
early_stopping_threshold | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
early_stopping_patience | int | 否 | 说明:该字段取值更多详情参考模型支持情况 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
requestId | string | 请求ID |
result | object | 请求结果 |
result说明
名称 | 类型 | 描述 |
---|---|---|
jobId | string | 作业ID |
taskId | string | 任务ID |
请求示例
curl --location 'https://qianfan.baidubce.com/v2/finetuning?Action=CreateFineTuningTask' \
--header 'Authorization: bce-auth-v1/f0ee7xxx8079702c13/2023-09-19T13:42:13Z/180000/host;x-bce-date/9a8cfb8ee58a8f44xxx' \
--header 'x-bce-date: 2023-09-19T13:37:10Z' \
--header 'Content-Type: application/json' \
--data '{
"jobId": "job-1xzycis4jm3b",
"parameterScale": "FullFineTuning",
"hyperParameterConfig": {
"epoch": 1,
"learningRate": 0.00003,
"maxSeqLen": 4096
},
"datasetConfig": {
"sourceType": "Platform",
"versions": [{
"versionId": "ds-he8srs01ym0b8fh7"
}],
"splitRatio": 20
}
}'
响应示例
{
"requestId":"1bef3f87-c5b2-4419-936b-50f9884f10d4",
"result":{
"jobId":"job-n50985crhqq3",
"taskId":"task-nycp7bycjjn7"
}
}
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如Access Token失效返回:
{
"error_code": 110,
"error_msg": "Access token invalid or no longer valid"
}
更多千帆大模型平台其他错误码,也可以查看错误码说明。