|
|
|
|
|
|
|
|
[toc]
|
|
|
|
|
|
|
|
|
# 1 背景
|
|
|
|
|
|
视觉: https://modao.cc/app/okkby1vrgadj9nPYSM8y#screen=sl6kg7x205o65hb
|
|
|
|
|
|
需求: https://www.tapd.cn/42483287/prong/stories/stories_list?&async=1&conf_id=1142483287001034075&sort_name=module&order=DESC&category_id=1142483287001000414&filter_token=ab339daaca9c29e0e944a504569305b4
|
|
|
|
|
|
观察 ml tracking 库: https://gitlab.apulis.com.cn/ran.lu/verify/-/issues/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提供了用户自行管理的接口。 |
|
|
\ No newline at end of file |