训练任务发布为模型
更新时间:2024-09-23
注意:
- 为提升开发者使用体验,推荐使用模型管理V2版本接口,功能更全面、且接口更规范,详见模型管理API列表。
- 模型管理V1版本接口功能不再升级,本文档于2024年8月5日下线;由于V1版本接口后续可能下线停止服务,为避免影响使用,建议接入模型管理V2版本接口。
功能介绍
本接口用于将训练任务的产出发布为模型管理中具体某个模型的版本,支持发布为新建模型的新版本或已有模型新版本。
注意事项
调用本文API实现发布已有模型新版本时,需要校验训练模型和已有模型的基础模型是否匹配;只有校验通过,调用本接口,才能实现将训练任务发布为模型。校验步骤:
(1)调用获取任务运行详情接口,获取trainType字段。
(2)调用获取模型详情接口,获取trainType字段。
(3)判断步骤(1)和步骤(2)获取的trainType字段是否匹配。通过下表进行判断:
(1)获取任务运行详情接口返回trainType值 | (2)获取模型详情接口返回trainType值 | 校验是否通过 |
---|---|---|
trainType | newTrainType | 通过 |
ernieBotLite | ernieBotLite | 通过 |
ernieBotLite-v201-8k | ernieBotLite | 通过 |
ernieBotLite-v201-8k | ernieBotLite | 通过 |
ernieBotLite-v202-postPretrain | ernieBotLite | 通过 |
ernieBotLite-v202-fuse-postPretrain | ernieBotLite | 通过 |
ernieBotLite-v202-fuse | ernieBotLite | 通过 |
ernieBotLite-v201-4k | ernieBotLite | 通过 |
ernieBotLite-v200 | ernieBotLite | 通过 |
ernieBotLite-v202 | ernieBotLite | 通过 |
ernieBotLite-v202 | ernieBotLite | 通过 |
ernieBotLite-v201-4k | ernieBotLite | 通过 |
ernieBotLite-v200 | ernieBotLite | 通过 |
ernieBotLite-v202-fuse | ernieBotLite | 通过 |
ernieBotLite-v200-lora | ernieBotLite | 通过 |
chatglm2-6b | chatglm2-6b | 通过 |
chatglm2-6b-32k | chatglm2-6b | 通过 |
任意值 | 空 | 通过,说明: 当步骤(2)获取模型详情接口返回trainType值为空时,无需对比步骤(1)的trainType值,校验通过 |
其他值 | 其他值 | 只有当trainType字段值相同时,校验通过 |
SDK调用
使用说明
调用本文API,需使用安全认证AK/SK鉴权,调用流程及鉴权介绍详见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.Model.publish(
is_new=True,
model_name="sdk_test_1",
version_meta={"taskId": "job-i5qndhxxxx", "iterationId": "task-3ukxxxx"},
)
print(resp)
返回示例
QfResponse(code=200, headers={
...
},
body={
"log_id": "1212121",
"result": {
"modelId": 1,
"modelIDStr": "am-5sxpxxxn25uw",
"versionId": 2,
"versionIdStr": "amv-21qxxxxxz8fp"
"version": "1"
}
})
请求参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
is_new | bool | 是 | 是否创建新模型,默认false,可选值如下: true:是 false:否 |
version_meta | dict | 是 | 待发布的新模型版本元数据信息 |
model_name | string | 否 | 模型名称。说明: (1)如果字段isNewModel为true,即发布为新建模型的版本时,该字段必填 (2)模型名称需符合以下:中文或大小写字母数字组成,以中文或大小写字母数字作为字符串开头,字符串长度最大为20个字符 |
model_id | string | 否 | 已存在模型的ID。示例:am-gh0azfeb9adu,说明: (1)如果字段isNewModel为false,即发布为已有模型新版本时,该字段必填 (2)该字段值通过控制台-我的模型查看,如下图所示 (3)该字段新增支持string类型,如果之前使用的是int类型,建议变更为string类型,后续可能将逐步废弃int类型 |
tags | list[string] | 否 | 模型业务标签列表,说明: (1)如果isNewModel为false,即发布为已有模型新版本,使用该字段会更新模型业务标签列表;如果isNewModel为true,即发布为新建模型的版本,使用该字段会新建模型业务标签 (2)业务标签数量限制最大不超过5个 (3)业务标签格式需符合以下:中文或大小写字母数字组成,每个标签不超过10个字符 |
version_meta说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
iterationId | string | 是 | 训练任务运行ID,示例:task-3ukxxxx,说明: (1)通过以下方法获取该字段值:在控制台-模型调优-模型精调,点击某个训练任务详情,在任务详情页面查看运行ID,如下图所示: (2)该字段新增支持string类型,如改之前使用的是int类型,建议变更为string类型;int类型即之前通过以下方式获取的值 |
taskId | string | 是 | 训练任务ID,示例值:job-i5qndhxxxx,说明: (1)通过以下方法获取该字段值:在控制台-模型精调列表页面查看,如下图所示 (2)该字段新增支持string类型,如果之前使用的是int类型,建议变更为string类型;int类型即之前通过以下方式获取的值 |
description | string | 否 | 模型版本描述,字符串长度最大为300个字符 |
step | int | 否 | 说明: (1)训练任务配置了多checkpoint保存参数,训练产出多个step训练结果进行发布,该字段必填,且字段值为对应的step数字 (2)如果训练任务未配置多checkpoint保存参数,可以不传该字段 |
返回参数
名称 | 类型 | 描述 |
---|---|---|
log_id | string | 请求ID |
result | dict | 请求结果 |
result说明
名称 | 类型 | 描述 |
---|---|---|
modelId | int | 模型ID,注意:该字段后续可能废弃,如需使用模型ID,请使用modelIDStr |
modelIDStr | string | 模型ID |
versionId | int | 模型版本ID,注意:该字段后续可能废弃,如需使用模型版本ID,请使用versionIdStr |
versionIdStr | string | 模型版本ID |
version | string | 模型版本号 |
HTTP调用说明
鉴权说明
调用本文API,使用“基于安全认证AK/SK”进行签名计算鉴权,即使用安全认证中的Access Key ID 和 Secret Access Key进行鉴权,具体鉴权认证机制参考HTTP调用鉴权说明。
请求说明
- 基本信息
请求地址: https://qianfan.baidubce.com/wenxinworkshop/modelrepo/publishTrainModel
请求方式: POST
- Header参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值:application/json |
x-bce-date | string | 否 | 当前时间,遵循ISO8601规范,格式如2016-04-06T08:23:49Z |
Authorization | string | 是 | 用于验证请求合法性的认证信息,更多内容请参考鉴权认证机制,签名工具可参考IAM签名工具 |
- Body参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
isNewModel | boolean | 是 | 是否创建新模型,默认false,可选值如下: true:是 false:否 |
modelName | string | 否 | 模型名称。说明: (1)如果字段isNewModel为true,即发布为新建模型的版本时,该字段必填 (2)模型名称需符合以下:中文或大小写字母数字组成,以中文或大小写字母数字作为字符串开头,字符串长度最大为20个字符 |
modelId | string | 否 | 已存在模型的ID,示例:am-gh0azfeb9adu,说明: (1)如果字段isNewModel为false,即发布为已有模型新版本时,该字段必填 (2)该字段值通过控制台-我的模型查看,如下图所示 (3)该字段新增支持string类型,如果之前使用的是int类型,建议变更为string类型,后续可能将逐步废弃int类型 |
tags | List |
否 | 模型业务标签列表,说明: (1)如果isNewModel为false,即发布为已有模型新版本,使用该字段会更新模型业务标签列表;如果isNewModel为true,即发布为新建模型的版本,使用该字段会新建模型业务标签 (2)业务标签数量限制最大不超过5个 (3)业务标签格式需符合以下:中文或大小写字母数字组成,每个标签不超过10个字符 |
versionMeta | object | 是 | 待发布的新模型版本元数据信息 |
versionMeta结构说明
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
description | string | 否 | 模型版本描述,字符串长度最大为300个字符 |
iterationId | string | 是 | 训练任务运行ID,示例:task-3ukxxxx,说明: (1)通过以下方法获取该字段值:在控制台-模型调优-模型精调,点击某个训练任务详情,在任务详情页面查看运行ID,如下图所示: (2)该字段新增支持string类型,如改之前使用的是int类型,建议变更为string类型;int类型即之前通过以下方式获取的值 |
taskId | string | 是 | 训练任务ID,示例值:job-i5qndhxxxx,说明: (1)通过以下方法获取该字段值:在控制台-模型精调列表页面查看,如下图所示 (2)该字段新增支持string类型,如果之前使用的是int类型,建议变更为string类型;int类型即之前通过以下方式获取的值 |
step | int | 否 | 说明: (1)训练任务配置了多checkpoint保存参数,训练产出多个step训练结果进行发布,该字段必填,且字段值为对应的step数字 (2)如果训练任务未配置多checkpoint保存参数,可以不传该字段 |
响应说明
名称 | 类型 | 描述 |
---|---|---|
log_id | string | 请求ID |
result | object | 请求结果 |
result说明
名称 | 类型 | 描述 |
---|---|---|
modelId | int | 模型ID,注意:该字段后续可能废弃,如需使用模型ID,请使用modelIDStr |
modelIDStr | string | 模型ID |
version | string | 模型版本号 |
versionId | int | 模型版本ID,注意:该字段后续可能废弃,如需使用模型版本ID,请使用versionIdStr |
versionIdStr | string | 模型版本ID |
请求示例
curl --location 'https://qianfan.baidubce.com/wenxinworkshop/modelrepo/publishTrainModel' \
--header 'bce-auth-v1/7f62332xxxxxa04babbf764bf7/2023-10-09T03:11:11Z/1800/host/84f0febb2b4xxxxxxf' \
--header 'x-bce-date: 2023-10-09T03:11:11Z' \
--header 'Content-Type: application/json' \
--data '{
"isNewModel": true,
"modelName": "test_全站api",
"tags": ["11","22","33","44","55"],
"versionMeta": {
"description": "api测试",
"iterationId":"task-3ukxxxx",
"taskId":"job-i5qndhxxxx"
}
}
'
响应示例
{
"log_id": "2234732599",
"result": {
"modelIDStr": "am-5sxpz4xn25uw",
"modelId": 500,
"version": "1",
"versionId": 702,
"versionIdStr": "amv-21qxxr97z8fp"
}
}
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
名称 | 描述 |
---|---|
error_code | 错误码 |
error_msg | 错误描述信息,帮助理解和解决发生的错误 |
例如参数错误返回:
{
"error_code": 500001,
"error_msg": "param invalid"
}
更多错误码,请查看错误码说明。