1 背景
视觉: https://modao.cc/app/okkby1vrgadj9nPYSM8y#screen=sl6kg7x205o65hb
观察 ml tracking 库: #2
【模型训练实验对比】: https://www.tapd.cn/42483287/prong/stories/view/1142483287001006746
导入的仓库: https://gitlab.apulis.com.cn/ran.lu/aim
2 用户场景
模型训练、模型评估、调试训练,统称“训练”
- 创建训练
- 查看训练列表
- 查看训练详情
- 基础数据查询
- 实时数据
- 查询
- 实验对比
- url 拼装
- SDK 使用(用户的脚本编写)
3. 系统结构图
4. 数据库
ai-arts 需要新增一张表,记录平台上训练|评估和第三方库中的训练的关系。
sql 暂略。
5. 详细设计
5.1 第3方库选型
使用 aim :
- 基本功能满足,社区活跃
- 专门做 ml tracking 的,有侧重功能,如转化 tensorboard 数据
- 存储格式独立于逻辑概念
- 体积较小
- apache 2 协议,商用友好
5.2 初始化
平台只起一组 aim 服务:
- aim remote server: 存储数据
- aim ui: 提供 ui 具体要做出 helm 包,加入到平台的安装部署流程中。 要挂载合适的存储,用于存放指标数据。
5.3 SDK使用
- 要求用户使用修改过的 aim client,也就是,我们自己要发一个 aim 版本
- 环境变量中设置好 remote server,从而让用户代码中对 aim 函数的调用自动把日志发到平台内的 aim remote server
- 记录平台训练任务和 aim 训练之间的关联关系
- aim 训练的唯一标识是 run hash
- 事先在环境变量里设置ailab jobId,用户脚本创建run的时候,自己改过的aim客户端就可以把jobId和新建的 run hash 发给 aiarts 了
- aiarts 增加表,记录平台训练任务与 aim 训练之间的对应关系,记这张表为 train_relation
- aiarts 增加接口,供 aim client 调用,以注册关联关系
5.4 列表、详情接口
列表和详情的数据从两方面查得:
- 实时数据,调用 aim rpc 或 http 接口(aim UI使用的接口)
- 其它数据,调 ai-lab 接口查数据等
5.5 实验对比
前端页面上点击可视化时,链接跳转到 aim ui。
具体的跳转 url ,根据前端传来参数和 train_relation 表,进行拼装,从而对用户选定的实验进行对比。
5.6 数据隔离性
实验对比时,应避免一个用户看到另一个用户的数据
- 改 aim ui 的页面,屏蔽掉可以点到外部的地方
- 跳转链接中,加上对 runId 限制条件
5.7 旧数据兼容
不用考虑已有数据(json文件)。
5.8 存储管理
- 训练可能会产生大量数据,如何管理?已知,aim UI提供了用户自行管理的接口。