CubeStudio 是一款国产化、云原生的一站式开源人工智能平台,同时覆盖传统机器学习、深度学习与大模型全链路(MLOps / MaaS / 算力调度 / 训推平台),开源协议 MIT,开源免费商用,开源版本已有数千家企业私有化部署。平台提供多租户与算力纳管调度、算力租赁与 Token 中转站、拖拉拽 Pipeline 任务流编排、多机多卡分布式训练、超参搜索、推理服务、vGPU 虚拟化、云边端协同与边缘计算、图文音多模态自动化标注、大模型 SFT 微调 / 奖励模型 / 强化学习训练、vLLM / Ollama / MindIE 大模型多机推理、私有知识库 / LLMOps / 智能体、AI 模型市场,以及从数据到上线的全流程模型部署。原生适配昇腾、寒武纪、海光、摩尔线程、沐曦等国产异构算力与 x86 / ARM CPU 架构,支持 IB / RoCE / RDMA 高速网络及信创私有化、内网离线部署。
官网:https://www.cubestudio.vip | GitHub:https://github.com/data-infra/cube-studio | Gitee:https://gitee.com/data-infra/cube-studio
关键词:CubeStudio、cube-studio、任务可视化、ECharts、echart、metric.json、py_echart、图表、折线图、柱状图、饼图、散点图、雷达图、K线图、热力图、树图、旭日图、平行坐标系、CSV、JSON、任务流、Pipeline、超参搜索可视化
任务跑完了,结果怎么看?训练曲线、超参对比、指标分布------如果每次都要把日志导出来再单独写画图脚本,太重了。CubeStudio 的做法是:任务只管把数据写成 CSV/JSON,再在运行目录放一个 metric.json 指向它,平台就自动在任务流结果页渲染成 ECharts 图表 。本文讲清数据格式约定和 metric.json 的用法。
一、核心机制:数据文件 + metric.json
整条链路就两步:
- 任务/算子把要可视化的数据写成 CSV (表格类图表)或 JSON(树形/层级类图表)。
- 在运行目录写一个
metric.json,声明用哪种图表、数据在哪:
json
{
"metric_type": "echart-parallel",
"file_path": "/mnt/admin/pipeline/ray_hyperparams/hyperparams_r_lightgbm.csv"
}
metric_type:格式为echart-<chart_type>,如echart-line、echart-bar、echart-parallel。file_path:CSV/JSON 数据文件路径。
平台在任务流结果页读取 metric.json,调用统一入口 draw(chart_type, file_path)(myapp/utils/py/py_echart.py:520)生成对应图表配置。
二、通用格式约定
- CSV :第一行是表头(列名),从第二行起为数据;表头会作为图例名或坐标轴名,所以要起有意义的名字。
- JSON :仅用于树图 和旭日图 ,需为层级结构(
name+children)。
三、各图表的数据格式
多数图表的 CSV 都遵循同一套直觉:第 1 列是类目/X 轴,其余每列是一个系列(列名即图例)。
| 图表 | 类型名 | 数据约定 |
|---|---|---|
| 折线图 | line |
第 1 列 X 轴;其余列各为一条线 |
| 柱状图 | bar |
第 1 列类目;其余列为不同系列的柱 |
| 散点图 | scatter |
同折线图 |
| 雷达图 | radar |
第 1 列为各轴维度;其余列各为一个多边形 |
| 饼图 | pie |
第 1 列扇区名;每一数值列生成一张饼图(多列并排) |
| 热力图 | heatmap |
第 1 列 X 轴;其余列名为 Y 轴,单元格为热力值 |
| K 线图 | candlestick |
第 1 列日期;2~5 列为开盘/最高/最低/收盘;第 6 列起为叠加折线 |
| 平行坐标系 | parallel |
每列一个维度轴,每行一条线;数值列自动缩放,字符串列作类目轴 |
| 树图 | tree |
JSON :name + children 层级;根为数组时自动包进 root |
| 旭日图 | sunburst |
JSON :name + value + children,顶层内圈逐层向外 |
例如一个柱状图,模型分数对比:
csv
型号,分数A,分数B,分数C
模型1,43.3,85.8,93.7
模型2,83.1,73.4,55.1
树图/旭日图这类层级数据则用 JSON:
json
{ "name": "根节点", "children": [
{ "name": "分支A", "children": [ { "name": "叶子A1" } ] }
] }
四、一个要知道的实现细节
平台任务流可视化实际调用的是 py_echart.py 的 draw()(由 view_workflow.py:1018-1020 在 metric_type 含 echart- 时触发)。它的分发分支(py_echart.py:528-546)目前覆盖:line / bar / pie / scatter / radar / candlestick / heatmap / tree / sunburst / parallel。
一个例外值得注意 :源码虽定义了 draw_funnel(漏斗图,py_echart.py:417),但 draw() 的分发里尚未接入 funnel 分支 ------所以当前用 echart-funnel 暂不会渲染漏斗图。漏斗图的 CSV 格式作为约定保留,待 draw() 接入后即生效。平行坐标系 parallel 则已正常分发(py_echart.py:546),超参搜索结果常用它做多维对比。
小结
CubeStudio 把「任务出图」这件事压到了最简:写数据(CSV/JSON)→ 放 metric.json → 平台自动渲染 ECharts。10 种图表即插即用,CSV 遵循「第一列类目 + 每列一系列」的统一直觉,树图/旭日图用层级 JSON。配合任务流和超参搜索,训练曲线、超参对比这些结果不用写一行画图代码就能直接在结果页看到。
了解更多
CubeStudio 采用 MIT 开源协议,开源免费商用并支持源码交付与二次分发,开源版本已有数千家企业私有化部署。
- 官网与在线文档:https://www.cubestudio.vip
- 开源仓库(GitHub):https://github.com/data-infra/cube-studio
- 开源仓库(Gitee):https://gitee.com/data-infra/cube-studio