模型与服务 参数详情
字段「默认值/必填/可选值」为后端表单(
add/edit_form_extra_fields)静态快照,运行时可能随用户、配置或_info接口动态变化,联调时以$view/api/_info返回为准。通用调用约定见 README 与 标准化接口。
整体资源
/total_resource/api,无绑定数据表,标准增删改查参数不适用。
内部服务管理
/service_modelview/api,表名:service,视图:Service_ModelView_Api,模型:Service。
源码:myapp/views/view_serving.py,myapp/models/model_serving.py。
新增参数
无。
修改参数
无。
查看参数
| 参数 | 名称 | 类型 | 必填 | 默认值 | 唯一 | 说明 | 校验/可选值 |
|---|---|---|---|---|---|---|---|
project |
项目组 | relation | 否 | 否 | 项目组id | ||
name |
名称 | string | 是 | 是 | 英文名(小写字母、数字、- 组成),最长50个字符 | DataRequired(); Regexp('^[a-z][a-z0-9\-]*[a-z0-9]$'); Length(1, 54) | |
label |
标签 | string | 是 | 否 | 中文名 | DataRequired() | |
images |
镜像 | string | 是 | 否 | 镜像全称 | DataRequired(); Regexp('^[a-zA-Z0-9\-._:@\/]*$') | |
volume_mount |
挂载 | string | 否 | 否 | 外部挂载,格式:;$pvc_name1(pvc):/$container_path1,$hostpath1(hostpath):/$container_path2;注意pvc会自动挂载对应目录下的个人username子目录 | Regexp('^[\x00-\x7f]*$') | |
working_dir |
工作目录 | string | 否 | 否 | 工作目录,容器进程启动目录,不填默认使用Dockerfile内定义的工作目录。打开目录 | Regexp('^[\x00-\x7f]*$') | |
command |
启动命令 | string | 否 | 否 | 启动命令,支持多行命令 | ||
env |
环境变量 | string | 否 | 模型默认值,见 _info 接口 | 否 | 使用模板的task自动添加的环境变量,支持模板变量。书写格式:每行一个环境变量env_key=env_value | |
resource_memory |
memory | string | 是 | 模型默认值,见 _info 接口 | 否 | 内存的资源使用配置,示例1G,10G, 最大100G,如需更多联系管路员 | DataRequired(); Regexp('^[0-9]*G$') |
resource_cpu |
cpu | string | 是 | 模型默认值,见 _info 接口 | 否 | cpu的资源使用配置(单位核),示例 0.4,10,最大50核,如需更多联系管路员 | DataRequired(); Regexp('^[0-9]*$') |
resource_gpu |
gpu | string | 是 | 0 | 否 | gpu的资源使用配置(单位卡),示例:1,2,训练任务每个容器独占整卡 | DataRequired(); Regexp('^[\-\.0-9,a-zA-Z\(\)]*$') |
replicas |
副本数 | string | 是 | 模型默认值,见 _info 接口 | 否 | pod副本数,用来配置高可用 | DataRequired(); Regexp('^[0-9]+$') |
ports |
端口 | string | 是 | 模型默认值,见 _info 接口 | 否 | 进程端口号,逗号分隔 | DataRequired(); Regexp('^[0-9,:]*$') |
host |
host | string | 否 | 否 | 域名 |
训练模型管理
/training_model_modelview/api,表名:model,视图:Training_Model_ModelView_Api,模型:Training_Model。
源码:myapp/views/view_train_model.py,myapp/models/model_train_model.py。
新增参数
| 参数 | 名称 | 类型 | 必填 | 默认值 | 唯一 | 说明 | 校验/可选值 |
|---|---|---|---|---|---|---|---|
project |
project | relation | 否 | 否 | 项目组id | ||
name |
模型名 | string | 是 | 否 | 模型名(a-z0-9-字符组成,最长54个字符) | DataRequired(); Regexp('^[a-z0-9\-]*$'); Length(1, 54) | |
version |
版本 | string | 是 | v%Y.%m.%d.1 | 否 | 模型版本 | DataRequired(); Regexp('[a-z0-9_\-\.]*') |
describe |
描述 | string | 是 | 否 | 模型描述 | DataRequired() | |
path |
模型文件地址 | string | 是 | /mnt/admin/xx/saved_model/ | 否 | 模型文件的容器地址或下载地址,格式参考详情。导入模型 | DataRequired() |
framework |
算法框架 | string(enum) | 是 | 否 | 选项xgb、tf、pytorch、onnx、tensorrt等 | DataRequired(); choices=[['sklearn', 'sklearn'], ['xgb', 'xgb'], ['tf', 'tf'], ['pytorch', 'pytorch'], ['onnx', 'onnx'], ['tensorrt', 'te... | |
run_id |
run id | string | 是 | random_run_id_uuid.uuid4().hex[:32] | 否 | pipeline 训练的run id | |
run_time |
保存时间 | string | 否 | %Y.%m.%d %H:%M:%S | 否 | 模型的保存时间 | |
metrics |
metrics | string | 否 | {} | 否 | 指标 | |
md5 |
md5 | string | 否 | 否 | md5值 | ||
api_type |
部署类型 | string(enum) | 是 | 否 | 推理框架类型 | DataRequired(); choices=[[x, x] for x in service_type_choices] | |
pipeline_id |
任务流id | string | 否 | 0 | 否 | 任务流的id,0表示非任务流产生模型 |
修改参数
| 参数 | 名称 | 类型 | 必填 | 默认值 | 唯一 | 说明 | 校验/可选值 |
|---|---|---|---|---|---|---|---|
project |
project | relation | 否 | 否 | 项目组id | ||
name |
模型名 | string | 是 | 否 | 模型名(a-z0-9-字符组成,最长54个字符) | DataRequired(); Regexp('^[a-z0-9\-]*$'); Length(1, 54) | |
version |
版本 | string | 是 | v%Y.%m.%d.1 | 否 | 模型版本 | DataRequired(); Regexp('[a-z0-9_\-\.]*') |
describe |
描述 | string | 是 | 否 | 模型描述 | DataRequired() | |
path |
模型文件地址 | string | 是 | /mnt/admin/xx/saved_model/ | 否 | 模型文件的容器地址或下载地址,格式参考详情。导入模型 | DataRequired() |
framework |
算法框架 | string(enum) | 是 | 否 | 选项xgb、tf、pytorch、onnx、tensorrt等 | DataRequired(); choices=[['sklearn', 'sklearn'], ['xgb', 'xgb'], ['tf', 'tf'], ['pytorch', 'pytorch'], ['onnx', 'onnx'], ['tensorrt', 'te... | |
run_id |
run id | string | 是 | random_run_id_uuid.uuid4().hex[:32] | 否 | pipeline 训练的run id | |
run_time |
保存时间 | string | 否 | %Y.%m.%d %H:%M:%S | 否 | 模型的保存时间 | |
metrics |
metrics | string | 否 | {} | 否 | 指标 | |
md5 |
md5 | string | 否 | 否 | md5值 | ||
api_type |
部署类型 | string(enum) | 是 | 否 | 推理框架类型 | DataRequired(); choices=[[x, x] for x in service_type_choices] | |
pipeline_id |
任务流id | string | 否 | 0 | 否 | 任务流的id,0表示非任务流产生模型 |
查看参数
| 参数 | 名称 | 类型 | 必填 | 默认值 | 唯一 | 说明 | 校验/可选值 |
|---|---|---|---|---|---|---|---|
project |
project | relation | 否 | 否 | 项目组id | ||
name |
模型名 | string | 是 | 否 | 模型名(a-z0-9-字符组成,最长54个字符) | DataRequired(); Regexp('^[a-z0-9\-]*$'); Length(1, 54) | |
version |
版本 | string | 是 | v%Y.%m.%d.1 | 否 | 模型版本 | DataRequired(); Regexp('[a-z0-9_\-\.]*') |
describe |
描述 | string | 是 | 否 | 模型描述 | DataRequired() | |
path |
模型文件地址 | string | 是 | /mnt/admin/xx/saved_model/ | 否 | 模型文件的容器地址或下载地址,格式参考详情。导入模型 | DataRequired() |
framework |
算法框架 | string(enum) | 是 | 否 | 选项xgb、tf、pytorch、onnx、tensorrt等 | DataRequired(); choices=[['sklearn', 'sklearn'], ['xgb', 'xgb'], ['tf', 'tf'], ['pytorch', 'pytorch'], ['onnx', 'onnx'], ['tensorrt', 'te... | |
run_id |
run id | string | 是 | random_run_id_uuid.uuid4().hex[:32] | 否 | pipeline 训练的run id | |
run_time |
保存时间 | string | 否 | %Y.%m.%d %H:%M:%S | 否 | 模型的保存时间 | |
metrics |
metrics | string | 否 | {} | 否 | 指标 | |
md5 |
md5 | string | 否 | 否 | md5值 | ||
api_type |
部署类型 | string(enum) | 是 | 否 | 推理框架类型 | DataRequired(); choices=[[x, x] for x in service_type_choices] | |
pipeline_id |
任务流id | string | 否 | 0 | 否 | 任务流的id,0表示非任务流产生模型 |
推理服务管理
/inferenceservice_modelview/api,表名:inferenceservice,视图:InferenceService_ModelView_Api,模型:InferenceService。
源码:myapp/views/view_inferenceserving.py,myapp/models/model_serving.py。
新增参数
无。
修改参数
无。
查看参数
| 参数 | 名称 | 类型 | 必填 | 默认值 | 唯一 | 说明 | 校验/可选值 |
|---|---|---|---|---|---|---|---|
service_type |
推理框架类型 | string(enum) | 是 | serving | 否 | 推理框架类型 | DataRequired(); choices=[[x, x] for x in service_type_choices] |
project |
项目组 | relation | 是 | 否 | 项目组id | DataRequired() | |
name |
name | string | 否 | 是 | 英文名 | ||
label |
标签 | string | 是 | xx模型,%s框架,xx版 | 否 | 中文描述 | DataRequired() |
model_name |
模型名称 | string | 是 | 否 | 英文名(小写字母、数字、- 组成),最长50个字符 | DataRequired(); Regexp('^[a-z][a-z0-9\.\/:\-]*[a-z0-9]$'); Length(1, 54) | |
model_version |
模型版本号 | string | 是 | v%Y.%m.%d.1 | 否 | 版本号,时间格式 | DataRequired(); Regexp('[a-z0-9_\-\.]*'); Length(1, 54) |
images |
镜像 | string(enum) | 是 | 否 | 推理服务镜像 | Regexp('^[\x00-\x7f]*$') | |
model_path |
模型地址 | string | 否 | 否 | 模型文件的容器地址或下载地址,格式参考详情。导入模型 | ||
volume_mount |
挂载 | string | 否 | 否 | 外部挂载,格式:;$pvc_name1(pvc):/$container_path1,$hostpath1(hostpath):/$container_path2;注意pvc会自动挂载对应目录下的个人username子目录 | Regexp('^[\x00-\x7f]*$') | |
sidecar |
sidecar | array | 否 | 否 | 容器的agent代理,istio用于服务网格,jwt用于统一认证(需要客户端在请求头中添加开发者生成的token) | choices=[['istio', 'istio'], ['jwt', 'jwt']] | |
working_dir |
工作目录 | string | 否 | 否 | 工作目录,容器进程启动目录,不填默认使用Dockerfile内定义的工作目录。打开目录 | ||
command |
启动命令 | string | 否 | 否 | 启动命令,留空时将被自动重置 | ||
env |
环境变量 | string | 否 | 否 | 使用模板的task自动添加的环境变量,支持模板变量。书写格式:每行一个环境变量env_key=env_value | ||
resource_memory |
memory | string | 是 | 5G | 否 | 内存的资源使用配置,示例1G,10G, 最大100G,如需更多联系管路员 | DataRequired(); Regexp('^[0-9]*G$') |
resource_cpu |
cpu | string | 是 | 5 | 否 | cpu的资源使用配置(单位核),示例 0.4,10,最大50核,如需更多联系管路员 | DataRequired(); Regexp('^[0-9]*$') |
resource_gpu |
gpu | string | 是 | 0 | 否 | 申请的gpu卡数目,示例:2,每个容器独占整卡。-1为共享占用方式,小数(0.1)为vgpu方式,申请具体的卡型号,可以类似 1(V100) | DataRequired(); Regexp('^[\-\.0-9,a-zA-Z\(\)]*$') |
min_replicas |
最小副本数 | string | 是 | 模型默认值,见 _info 接口 | 否 | 最小副本数,用来配置高可用,流量变动自动伸缩 | DataRequired(); Regexp('^[0-9]+$') |
max_replicas |
最大副本数 | string | 是 | 模型默认值,见 _info 接口 | 否 | 最大副本数,用来配置高可用,流量变动自动伸缩 | DataRequired(); Regexp('^[0-9]+$') |
ports |
端口 | string | 是 | 否 | 监听端口号,逗号分隔 | DataRequired(); Regexp('^[0-9,:]*$') | |
inference_host_url |
inference_host_url | computed | 否 | 否 | |||
hpa |
弹性伸缩 | string | 否 | 否 | 弹性伸缩容的触发条件:可以使用cpu/mem/gpu/qps等信息,可以使用其中一个指标或者多个指标,示例:cpu:50%,mem:50%,gpu:50% | Regexp('^(cpu:|mem:|gpu:|%|,|[0-9])*$') | |
cronhpa |
定时伸缩 | string | 否 | 否 | 根据时间定时伸缩容,定时伸缩时,弹性伸缩容失效。24小时制,示例:9 |
Regexp('^[0-9~:,]$') | |
priority |
服务优先级 | string(enum) | 是 | 1 | 否 | 优先满足高优先级的资源需求,同时保证每个服务的最低pod副本数 | DataRequired(); choices=[[1, '高优先级'], [0, '低优先级']] |
canary |
流量分流 | string | 否 | 否 | 流量分流,将该服务的所有请求,按比例分流到目标服务上。格式 service1:20%,service2:30%,表示分流20%流量到service1,30%到service2 | ||
shadow |
流量复制 | string | 否 | 否 | 流量复制,将该服务的所有请求,按比例复制到目标服务上,格式 service1:20%,service2:30%,表示复制20%流量到service1,30%到service2 | Regexp('^[0-9a-z:,%]*$') | |
health |
健康检查 | string | 否 | 否 | 健康检查接口,使用http接口,示例:8080:/health | Regexp('^[0-9]+:/[\x00-\x7f]*$') | |
model_status |
model_status | string | 否 | offline | 否 | 服务状态 | |
expand |
扩展 | string | 否 | json.dumps({'help_url': conf.get('GIT_URL', '') + '/image... | 否 | 扩展字段,json格式,目前支持help_url帮助文档的地址,disable_load_balancer是否禁用服务的负载均衡 | |
metrics |
指标地址 | string | 否 | 否 | 请求指标采集,配置端口+url,示例:8080:/metrics | Regexp('^[0-9]+:/[\x00-\x7f]*$') | |
deploy_history |
deploy_history | string | 否 | 否 | 部署历史 | ||
host |
域名 | string | 否 | 模型默认值,见 _info 接口 | 否 | 访问域名,host_rule | Regexp('^[\x00-\x7f]*$') |
inference_config |
推理配置文件 | string | 否 | 否 | 会配置文件的形式挂载到容器/config/目录下。留空时将被自动重置,格式:;---文件名;多行文件内容;---文件名;多行文件内容 | ||
changed_on |
changed_on | computed | 否 | 否 | |||
created_on |
created_on | computed | 否 | 否 | |||
id |
id | integer | 否 | 否 | id主键 |