思路
- 定时任务不停调用 convert
- 训练|评估结束时调用 convert
key: 用户无感知;不出错
要点
convert 支持远程 repo.
修改 convert。
要点
convert 本地缓存了转化进度,需要适配。
要点
convert 自启动。
主要是用 __init__
包导入来做。
(此要点已作废,因为,要让用户不改已有模型的代码)
要点
- 问题: 如何避免多个执行单元执行 convert
- 回答: 不能用普通单例模式。多进程的可能性比较多,普通单例模式难以保全。打算用系统级的文件锁。这样的话,对于分布式训练,应该也没有问题。
要点
convert 工具对目录结构有要求,见这里
而我们的模型,并不一定自动会满足这个要求。
两者存在冲突。
所以,打算修改 aim, 使它对目录下的所有 tensorboard 数据,都进行关联。
要点
结束时,要调一下 convert, 别让数据丢失。
实现:
- init-container
- slurm 拼命令
- 注意,如果 命令不存在,也不要导致命令出错。
要点
考虑 aimstack rpc 服务访问不到的影响
- 定时转换,是用 os.system 去转的,连不上影响不大
- 结束时:
- 对于有 init-container 的情况,没问题, 只会告警
- 对于没有 init-container 的情况,可能要插入一个伪命令。
要点
用户不用改已有模型的代码,就可以享受 tensorboard 的自动转换
改动涉及项目
- ai-arts aistudio-v1.7.1-tensorboard-logs
- init-container aistudio-v1.7.1-tensorboard-logs
- aim aistudio-v1.7.1-tensorboard-logs
数据准备
哪个模型,会产生 tensorboard 数据?
3.137 环境,有 gpu-model.zip:1.0 模型。
/data/nfs/apulis/pvc/aiplatform-ailab-data/1.org/orgadmin-user-group/ai-arts/17062/train-4758cbff-cc5a-4e1c-96ab-b3b4deb539f7
pvc://aiplatform-model-data-pvc/models/apulis/orgadmin-user-group/318/37
/data/nfs/apulis/pvc/aiplatform-model-data
/data/nfs/apulis/pvc/aiplatform-model-data/models/apulis/orgadmin-user-group/318/37
另一方面,凯杰之前有给过文件:
tb.tar
解压命令: tar -xvf ./tb.tar
自测
思路: 训练过程中,手动复制一些数据进去,看有没有数据增加。
可用镜像:
harbor.apulis.cn:8443/algorithm/apulistech/aimstack-sdk:aistudio-v1.7.0-rc2-mmopenlab
<== 这个镜像. aim 安装在了 conda 环境中,不能用来调 convert
harbor.apulis.cn:8443/algorithm/apulistech/save-1104-3:ubuntu-20.04-aimstack-sdk 这个镜像基于: 安装了开发工具的 ubuntu 20.04, 安装了 tensorboard 库
可用模型
aim-model: 1.0
但是环境上面没有卡…
只好用 utility model 了
select engine from studio_model_versions where id = 37;
pvc://aiplatform-model-data-pvc/models/apulis/orgadmin-user-group/318/37
update studio_model_versions engine set engine = 'harbor.apulis.cn:8443/algorithm/apulistech/aimstack-sdk:aistudio-v1.7.0-rc2-mmopenlab' where id = 37;
易错点: 要想 convert 成功, 镜像中要装有 aim, 而不是 source activate AD 中有。
自测:
- 本地集群
-
slurm 集群
- 这个目前不知如何向 slurm 任务里面复制文件,现在先没有测。
TODO
- 定时转换 tensorboard 会形成较多日志,可以隐藏一下。
-
时间间隔别写死。
- 已经可配置了:
AILAB_JOB_CONVERT_INTERVAL
环境变量。
- 已经可配置了:
caveat
1. 如果用户使用的镜像没有安装 tensorflow , 则会失败。这个估计影响不大,因为这种情况,用户估计没有用 tensorboard …
2. 没有入口: 因为现在实验对比,只能查看”运行中“的训练。
其它
注意缓存
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn --upgrade pip
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn tensorflow
pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com tensorflow
这次阿里源比较快.
aim demo:
# aim_test.py
from aim import Run
run = Run()
# set training hyperparameters
run['hparams'] = {
'learning_rate': 0.001,
'batch_size': 32,
}
# log metric
for i in range(10):
run.track(i, name='numbers')