创建AI应用 - CreateModel
功能介绍
导入元模型创建AI应用。
执行代码、模型需先上传至OBS(训练作业生成的模型已默认存储到OBS)。
接口约束
使用模板导入模型与不使用模板导入这两类导入方式的Body参数要求不一样。以下Body参数说明中以模板参数表示适合使用模板导入模型时填写的参数,非模板参数表示适合不使用模板导入时填写的参数,公共参数表示与导入方式无关的参数。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
授权信息
账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权,具体权限要求请参见权限和授权项。
- 如果使用身份策略授权,需具备如下身份策略权限。
请求参数
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
X-Auth-Token | 是 | String | 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
model_docs | 否 | Array of GuideDoc objects | 模型说明文档列表,最多三篇。公共参数 |
template | 否 | ModelTemplate object | 模板的相关配置项。使用模板导入模型(即model_type为Template)时必选。模板参数 |
model_version | 是 | String | 模型版本,格式需为“数值.数值.数值”,其中数值为1-2位正整数, 注意:版本不可以出现例如01.01.01等以0开头的版本号形式。公共参数 |
source_job_version | 否 | String | 来源训练作业的版本,模型是从训练作业产生的可填写,用于溯源;如模型是从第三方元模型导入,则为空。默认值为空。非模板参数 |
source_location | 是 | String | 模型所在的OBS路径或SWR镜像地址。 |
source_copy | 否 | String | 镜像复制开关,仅当“model_type”为“Image”时有效。 取值范围: |
initial_config | 否 | String | 模型配置文件转成的字符串。建议通过配置文件initial_config来提供“apis”、“dependencies”、“input_params”、“output_params”、"health"、"readiness_health"、"startup_health"等字段的信息。非模板参数 |
execution_code | 否 | String | 执行代码存放的OBS地址,默认值为空,名称固定为“customize_service.py”。推理代码文件需存放在模型“model”目录。该字段不需要填,系统也能自动识别出model目录下的推理代码。公共参数 |
source_job_id | 否 | String | 来源训练作业的ID,模型是从训练作业产生的可填写,用于溯源;如模型是从第三方元模型导入,则为空。默认值为空。非模板参数 |
model_type | 是 | String | 模型类型,取值为TensorFlow/Image/PyTorch/Template/MindSpore,从配置文件读取。公共参数 |
output_params | 否 | Array of CreateModelRequestInferParams objects | 模型的输出参数集,默认为空,params结构如表 params结构所示。从配置文件的apis读取,用户提供“initial_config”字段即可,可不填该字段。非模板参数 |
description | 否 | String | 模型备注信息,1-100位长度,不能包含&!'"<>=。公共参数 |
runtime | 否 | String | 模型运行时环境,runtime可选值与model_type相关,详细见推理支持的常用引擎及其Runtime。 |
model_metrics | 否 | String | 模型精度信息,从配置文件读取,可不填。非模板参数 |
source_type | 否 | String | 模型来源的类型,当前仅可取值“auto”,用于区分通过自动学习部署过来的模型(不提供模型下载功能);用户通过训练作业和其他方式部署的模型不设置此值。默认值为空。非模板参数 |
dependencies | 否 | Array of ModelDependencies objects | 推理代码及模型需安装的包,默认为空。从配置文件读取,可不填。非模板参数 |
workspace_id | 否 | String | 工作空间ID。获取方法请参见查询工作空间列表。未创建工作空间时默认值为“0”,存在创建并使用的工作空间,以实际取值为准。 |
model_algorithm | 否 | String | 模型算法,从配置文件读取,可不填。如:“predict_analysis”、“object_detection ”、“image_classification”。非模板参数 |
apis | 否 | Array of CreateModelRequestModelApis objects | 模型所有的apis入参出参信息,从配置文件中解析出来的,可不填。非模板参数 |
model_name | 是 | String | 模型名称,支持1-64位可见字符(含中文),名称可以包含字母、中文、数字、中划线、下划线。公共参数 |
install_type | 否 | Array of strings | 部署类型,只支持小写。可选real-time、edge、batch,默认为["real-time","edge","batch"]。 |
input_params | 否 | Array of CreateModelRequestInferParams objects | 模型的输入参数集,默认为空,params结构如表 params结构所示。从配置文件的apis读取,用户提供“initial_config”字段即可,可不填该字段。非模板参数 |
cmd | 否 | String | 镜像启动命令 |
deployment_constraints | 否 | deployment_constraints object | 模型部署约束(tag:hc,hk) |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
doc_url | 是 | String | 文档http(s)链接。 |
doc_name | 是 | String | 文档名称,支持1-48位可见字符(含中文),只能以英文大小写字母或者中文字符开头,名称可以包含字母、中文、数字、中划线、下划线。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
infer_format | 否 | String | 输入输出模式id,提供时覆盖模板中的内置输入输出模式。 |
template_inputs | 是 | Array of CreateModelRequestTemplateInput objects | 模板输入项配置,即配置模型的源路径。 |
template_id | 是 | String | 所使用的模板id,模板中会内置一个输入输出模式。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
input | 是 | String | 模板输入路径,可以是obs文件路径,obs目录路径,使用多输入项的模板创建模型时,如果模板定义的目标路径input_properties是一样的,则此处输入的obs目录或者obs文件不能重名,否则会覆盖。 |
input_id | 是 | String | 输入项id,从模板详情中获取。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
installer | 是 | String | 安装方式,当前只支持pip。 |
packages | 是 | Array of Packages objects | 依赖包集合。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
package_version | 否 | String | 依赖包版本。不填时默认安装最新版本。不能含有中文及特殊字符&!'"<>=。 |
package_name | 是 | String | 依赖包名称。请确保包名正确且存在。不能含有中文及特殊字符&!'"<>=。 |
restraint | 否 | String | 版本限制条件,当且仅当package_version存在时必填,取值包含: |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
protocol | 否 | String | 请求协议,可选HTTP和HTTPS。 |
method | 否 | String | 请求方法,可选post、get。 |
input_params | 否 | ModelInOutputParams object | apis中的输入输出参数,以JSON Schema格式描述。 |
output_params | 否 | ModelInOutputParams object | apis中的输入输出参数,以JSON Schema格式描述。 |
url | 否 | String | 推理请求URL路径 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
type | 否 | String | JSON Schema中表示类型的字段,可选object。 |
properties | 否 | Object | JSON Schema中表示对象元素的properties字段,可在其中定义参数,包括参数名及其类型。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
protocol | 是 | String | 请求协议,可选HTTP和HTTPS。 |
min | 否 | Number | 参数的最小值。当param_type为int或float时可选填,默认为空。 |
method | 是 | String | 请求方法,可选“post”、“get”。 |
max | 否 | Number | 参数的最大值。当param_type为int或float时可选填,默认为空。 |
param_desc | 否 | String | 参数描述,建议长度设置不超过100个字符,默认为空。 |
param_name | 是 | String | 参数名,建议长度设置不超过64个字符。 |
url | 是 | String | api代表的url路径。 |
param_type | 是 | String | 参数类型,取值可选int/string/float/timestamp/date/file。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
request_mode | 否 | String | 模型部署为服务时作业的请求模型 |
cpu_type | 否 | String | cpu类型 |
input_types | 否 | Array of strings | 在异步模式、视频业务场景下使用,表示输入输出类型如OBS,VIS。为自定义镜像导入使用,非自定义进行在runtime声明 |
outputTypes | 否 | Array of strings | 在异步模式、视频业务场景下使用,表示输入输出类型如OBS,DIS。自定义镜像导入使用,非自定义进行在runtime声明 |
service_config | 否 | String | 服务部署字段声明,服务部署时可指定具体的值。自定义镜像导入使用,非自定义进行在runtime声明。由于结构较为复杂,该值为xml格式 |
task_config | 否 | String | 作业相关的配置字段声明,作业创建时可指定具体的值。自定义镜像导入使用,非自定义进行在runtime声明。由于结构较为复杂,该值为xml格式 |
model_security | 否 | model_security object | 使用Edge加密模型后,可获取Root Key和modelKey,以及加密后的模型 |
响应参数
状态码:200
参数 | 参数类型 | 描述 |
|---|---|---|
model_id | String | 模型id。 |
请求示例
创建AI应用。设置AI应用名称为“mnist”,版本为“1.0.0”,类型为“TensorFlow”,模型文件来源于OBS桶。
POST https://{endpoint}/v1/{project_id}/models
{
"model_name" : "mnist",
"model_version" : "1.0.0",
"source_location" : "https://models.obs.xxxxx.com/mnist",
"source_job_id" : "55",
"source_job_version" : "Vnt1",
"model_type" : "TensorFlow",
"runtime" : "python2.7",
"description" : "mnist model",
"execution_code" : "https://testmodel.obs.xxxxx.com/customize_service.py",
"input_params" : [ {
"url" : "/v1/xxx/image",
"protocol" : "http",
"method" : "post",
"param_name" : "image_url",
"param_type" : "string",
"min" : 0,
"max" : 9,
"param_desc" : "http://test/test.jpeg"
} ],
"output_params" : [ {
"url" : "/v1/xxx/image",
"protocol" : "http",
"method" : "post",
"param_name" : "face_location",
"param_type" : "box",
"param_desc" : "face_location param value description"
} ],
"dependencies" : [ {
"installer" : "pip",
"packages" : [ {
"package_name" : "numpy",
"package_version" : "1.5.0",
"restraint" : "ATLEAST"
} ]
} ],
"model_algorithm" : "object_detection",
"model_metrics" : "{\"f1\":0.52381,\"recall\":0.666667,\"precision\":0.466667,\"accuracy\":0.625}",
"apis" : [ {
"url" : "/v1/xxx/image",
"protocol" : "http",
"method" : "post",
"input_params" : {
"type" : "object",
"properties" : {
"image_url" : {
"type" : "string"
}
}
},
"output_params" : {
"type" : "object",
"properties" : {
"face_location" : {
"type" : "box"
}
}
}
} ],
"initial_config" : "{\"protocol\":\"http\",\"port\":\"8080\",\"health\":{\"check_method\":\"HTTP\",\"protocol\":\"http\",\"url\":\"/health\",\"period_seconds\":\"5\",\"failure_threshold\":\"10\",\"initial_delay_seconds\":\"12\"},\"readiness_health\":{\"check_method\":\"HTTP\",\"protocol\":\"http\",\"url\":\"/readiness_health\",\"period_seconds\":\"5\",\"failure_threshold\":\"20\",\"initial_delay_seconds\":\"12\"},\"startup_health\":{\"check_method\":\"HTTP\",\"protocol\":\"http\",\"url\":\"/startup_health\",\"period_seconds\":\"5\",\"failure_threshold\":\"10\",\"initial_delay_seconds\":\"12\"}}"
} 响应示例
状态码:200
模型创建成功。
{
"model_id" : "7feb7235-ed9c-48ae-9833-2876b2458445"
} 状态码
状态码 | 描述 |
|---|---|
200 | 模型创建成功。 |
错误码
请参见错误码。

