特殊接口 - 训练任务流

查训练 Pipeline 的运行/编排/复制/导入导出、固化任务流子任务、单个 Task 调试运行、Workflow 暂停恢复停止与 DAG/节点详情、NNI 超参搜索启停日志等接口时

06-二次开发 / API参考
pipeline任务流run_pipeline运行编排copy_pipelineuploaddownload固化任务流pipeline_immutabletaskdebugworkflowpauserecoverstop

训练任务流特殊接口

涵盖训练 Pipeline(/pipeline_modelview/api)、固化任务流(/pipeline_immutable_modelview)、训练 Task(/task_modelview/api)、Workflow(/workflow_modelview/api)、超参搜索 NNI(/nni_modelview/api)。

训练Pipeline /pipeline_modelview

代码文件:myapp/views/view_pipeline.pyroute_base = '/pipeline_modelview/api'

我的 Pipeline 列表

GET  /pipeline_modelview/api/my/list/

无需参数。返回当前用户创建的所有 Pipeline(不含 demo 和固化类型)。

响应:

{"status": 0, "message": "success", "result": [{...pipeline_json...}]}

示例 Pipeline 列表

GET  /pipeline_modelview/api/demo/list/

无需参数。返回所有 demo 类型 Pipeline(parameter 中含 "demo": "true")。多租户模式下按组织过滤。

响应:

{"status": 0, "message": "success", "result": [{...demo_pipeline_json...}]}

运行 Pipeline

GET/POST  /pipeline_modelview/api/run_pipeline/<pipeline_id>
参数 位置 类型 说明
pipeline_id path int Pipeline ID

响应: 302 重定向到 /web/log/{pipeline_id}(执行日志页面)

说明:

  • 仅创建者或管理员可执行
  • 清理旧任务、删除之前运行的 Workflow
  • 编译 Pipeline DAG 为 Argo Workflow YAML
  • 校验资源配额后提交 K8s Workflow CRD
  • 自动清理策略:运行完成 3 小时后清理

打开编排界面

GET  /pipeline_modelview/api/web/<pipeline_id>
参数 位置 类型 说明
pipeline_id path int Pipeline ID

响应: 302 重定向到可视化编排器 /static/appbuilder/vison/index.html?pipeline_id={id}

打开调试跟踪界面

GET  /pipeline_modelview/api/web/log/<pipeline_id>

响应: 302 重定向到 Workflow DAG 可视化页面

打开资源监控界面

GET  /pipeline_modelview/api/web/monitoring/<pipeline_id>

响应: 302 重定向到 Grafana 仪表盘

打开 Pod 界面

GET  /pipeline_modelview/api/web/pod/<pipeline_id>

响应: 302 重定向到 K8s Pod 搜索页面

打开定时记录界面

GET  /pipeline_modelview/api/web/runhistory/<pipeline_id>

响应: 302 重定向到 RunHistory 列表页面(按 pipeline_id 过滤)

打开 Workflow 界面

GET  /pipeline_modelview/api/web/workflow/<pipeline_id>

响应: 302 重定向到 Workflow 实例列表页面

LabelStudio Webhook 触发训练

GET/POST  /pipeline_modelview/api/labelstudio/run_pipeline/<pipeline_id>
参数 位置 类型 说明
pipeline_id path int Pipeline ID
action body string 事件类型(仅处理 PROJECT_FINISHED

响应:

{
  "status": 0,
  "message": "开始训练",
  "result": {"pipeline_id": 1, "run_id": "xxx", "crd_name": "workflow-xxx"}
}

说明: 无需认证(webhook 场景)。仅在 action 为 PROJECT_FINISHED 时触发 Pipeline 执行。

复制 Pipeline

GET/POST  /pipeline_modelview/api/copy_pipeline/<pipeline_id>

响应: 302 重定向到新 Pipeline 的编排页面

说明: 深拷贝 Pipeline 及其所有 Task,名称追加随机后缀,描述追加 "(copy)"。

批量上传

POST  /pipeline_modelview/api/upload/
Content-Type: multipart/form-data
参数 类型 说明
csv_file file JSON 文件(格式见下方)

上传 JSON 格式:

{
  "pipeline_name": {
    "pipeline": {"name": "...", "describe": "...", ...},
    "tasks": [{"name": "task1", ...}]
  }
}

响应:

{"status": 0, "message": "result为上传成功行,共成功2", "result": ["success", "错误信息"]}

批量下载

GET  /pipeline_modelview/api/download/

请求参数: 同标准 download 接口(通过 form_data 传 filters)

响应: JSON 文件下载(pipeline-{timestamp}.json

下载上传模板

GET  /pipeline_modelview/api/download_template/

响应: JSON 文件下载(pipeline-template.json),包含示例 Pipeline + Task 结构


固化任务流 /pipeline_immutable_modelview

代码文件:myapp/views/view_pipeline_immutable.py

固化任务流为动态注册的路由,前缀为 /pipeline_immutable_modelview/<pipeline_id>/api/route_base 在运行时按 pipeline_id 拼接)。

获取固化任务流子任务元信息

GET  /pipeline_immutable_modelview/<pipeline_id>/api/_info

响应: JSON,包含模板参数的表单字段定义(同 _info 格式),字段由模板配置动态生成(ui-type 支持 input-select / select / textArea / json 等)。

固化任务流子任务列表 / 新增

GET   /pipeline_immutable_modelview/<pipeline_id>/api/     # 列表
POST  /pipeline_immutable_modelview/<pipeline_id>/api/     # 新增

POST 请求体(JSON):

{
  "describe": "实例描述",
  "project": 1,
  "field1": "value1",
  "field2": "value2"
}

响应:

{"status": 0, "message": "success", "result": {}}

说明: POST 会克隆固化模板 Pipeline,根据表单字段映射到 Task 参数。

查看/更新/删除固化任务流子任务

GET     /pipeline_immutable_modelview/<pipeline_id>/api/<pk>    # 查看
PUT     /pipeline_immutable_modelview/<pipeline_id>/api/<pk>    # 更新
DELETE  /pipeline_immutable_modelview/<pipeline_id>/api/<pk>    # 删除

GET 响应:

{
  "status": 0,
  "message": "success",
  "result": {"id": 1, "describe": "...", "project": 1, "field1": "value1"}
}

DELETE 说明: 会级联删除所有关联的 Workflow、Task 和运行历史。


训练Task /task_modelview

代码文件:myapp/views/view_task.pyroute_base = '/task_modelview/api'

单个任务 debug

GET/POST  /task_modelview/api/debug/<task_id>
参数 位置 类型 说明
task_id path int Task ID

响应: 302 重定向到 Pod 终端界面

说明:

  • 仅 Pipeline 创建者、管理员或模板创建者可执行
  • 不支持逻辑类型 Job 的 debug
  • 创建 debug Pod(sleep 2h),等待最多 60 秒进入 Running 状态

单个任务 run

GET/POST  /task_modelview/api/run/<task_id>

响应: 302 重定向到 Pod 列表页面

说明:

  • 仅 Pipeline 创建者或管理员可执行
  • 不支持逻辑类型和 Python 类型 Job
  • 不支持有上游输出依赖的 Task
  • 自动清理之前的 run/debug Pod 后执行

单个任务 clear

GET/POST  /task_modelview/api/clear/<task_id>

响应: 302 重定向到 Pipeline 详情页面

说明: 删除该 Task 的所有运行 Pod(包括 run 和 debug)。

单个任务查看日志

GET/POST  /task_modelview/api/log/<task_id>

响应: 302 重定向到 K8s Pod 日志查看页面

说明: 查找当前运行中的 Pod(匹配 run-{pipeline}-{task} 模式),若无运行 Pod 则提示。


Workflow /workflow_modelview

代码文件:myapp/views/view_workflow.pyroute_base = '/workflow_modelview/api'

暂停 Workflow

GET  /workflow_modelview/api/pause/<crd_id>
参数 位置 类型 说明
crd_id path int Workflow 数据库 ID

响应: 302 重定向到来源页面

说明: Patch Workflow CRD 的 spec.suspend = True。当前运行中的任务会继续完成,新任务不再启动。

恢复 Workflow

GET  /workflow_modelview/api/recover/<crd_id>

参数同 pause。 Patch spec.suspend = False,恢复后续任务执行。

停止 Workflow

GET  /workflow_modelview/api/stop/<crd_id>

参数同 pause。

说明: 删除 K8s Workflow CRD 及关联 Pod,数据库状态设为 Deleted。仅 Workflow 拥有者、管理员或 Pipeline 项目创建者可执行。

Workflow 执行日志

GET  /workflow_modelview/api/web/log/<cluster_name>/<namespace>/<workflow_name>/<pod_name>
GET  /workflow_modelview/api/web/log/<cluster_name>/<namespace>/<workflow_name>/<pod_name>/<file_name>
参数 位置 类型 说明
cluster_name path string 集群名称
namespace path string 命名空间
workflow_name path string Workflow 名称
pod_name path string Pod 名称
file_name path string 日志文件名,默认 main.log

响应: HTML 格式的日志内容

说明: 从 MinIO 存储读取日志(路径 {workflow_name}/{pod_name}/{file_name})。自动解压 .zip/.tgz 文件,去除 ANSI 转义字符。

Workflow 节点日志(JSON格式)

GET  /workflow_modelview/api/web/log_node/<cluster_name>/<namespace>/<workflow_name>/<pod_name>

参数同上。 返回 JSON 格式(包含 HTML 日志内容)。

任务实例详情

GET  /workflow_modelview/api/web/node_detail/<cluster_name>/<namespace>/<workflow_name>/<node_name>
参数 位置 类型 说明
cluster_name path string 集群名称
namespace path string 命名空间
workflow_name path string Workflow 名称
node_name path string 节点名称

响应:

{
  "status": 0,
  "message": "success",
  "result": {
    "detail": [
      {
        "tabName": "输入输出",
        "content": [
          {
            "groupName": "消息",
            "groupContent": {"label": "...", "value": "...", "type": "html"}
          }
        ]
      },
      {"tabName": "pod信息", "content": [...]},
      {"tabName": "结果可视化", "content": [...]},
      {"tabName": "workflow信息", "content": [...]}
    ],
    "control": {"width": "700px"}
  }
}

说明: 包含多个 tab(输入输出、Pod 信息、结果可视化、Workflow 信息等),支持 echart / image / table / HTML 等可视化类型。

任务流实例 DAG 信息

GET  /workflow_modelview/api/web/dag/<cluster_name>/<namespace>/<workflow_name>
参数 位置 类型 说明
cluster_name path string 集群名称
namespace path string 命名空间
workflow_name path string Workflow 名称

响应:

{
  "status": 0,
  "message": "success",
  "result": {
    "control": {"node_ops": ["detail", "explore"], "direction": "vertical"},
    "dag": [
      {"id": "node-1", "name": "task-name", "status": "Succeeded", "elapsed": "2m30s", "children": [...]}
    ],
    "layout": {"status": "Running", "progress": "3/5 completed", "actions": ["pause", "stop"]}
  }
}

Workflow 实例运行进度

GET  /workflow_modelview/api/web/layout/<cluster_name>/<namespace>/<workflow_name>

参数同 dag。 仅返回 layout 部分(状态、进度、操作按钮),不含完整 DAG 数据,用于头部概览刷新。


超参搜索 /nni_modelview

代码文件:myapp/views/view_nni.pyroute_base = '/nni_modelview/api'

停止超参搜索

GET/POST  /nni_modelview/api/stop/<nni_id>
参数 位置 类型 说明
nni_id path int NNI 记录 ID

响应: 302 重定向到 NNI 列表页面

说明: 清理 K8s 资源(Pod、Service、Istio 入口、Volcano Job),标记状态为 offline。

启动超参搜索

GET/POST  /nni_modelview/api/run/<nni_id>

响应: 302 重定向到 /frontend/k8s/web/search/{cluster}/{namespace}/{nni_name}

说明:

  • 校验资源配额
  • 生成 NNI YAML 配置文件
  • 单机模式部署 K8s Pod,多机模式部署 Volcano Job
  • 创建 Service 和 VirtualService 用于 Web 界面访问

查看超参搜索日志

GET/POST  /nni_modelview/api/log/<nni_id>

响应: 302 重定向到 Pod 日志页面 /frontend/k8s/web/log/{cluster}/{namespace}/{pod_name}/nnijob

查看超参搜索运行界面

GET/POST  /nni_modelview/api/web/<nni_id>

响应: 302 重定向到 NNI Web 仪表盘 {HOST}/nni/{nni_name}/

最后更新 2026-06-30完整文档以官方仓库为准:GitHub Wiki