跳转到内容

上传离线实验数据

将本地的实验数据,同步到SwanLab云端/私有化部署端

使用场景:

  1. 训练过程中断网: 模型训一半服务器断网了1小时,SwanLab的云端记录断了
  2. 无网训练环境: 你不幸地发现公司/学校的训练服务器完全不联网,也不让安装Docker
  3. 多端同步: 你使用了私有化部署,但也希望把实验记录同步到云端
  4. 复制实验: 这个实验对你创建的多个项目都有普适性(比如baseline、benchmark实验),希望能复制到多个项目下

当你遇到上述场景时,swanlab sync命令可以帮你解决,API文档

版本兼容性注意

swanlab sync 不向后兼容旧版 SwanLab SDK 生成的日志文件。

SwanLab SDK v0.8.0 起,本地日志格式发生了较大变动。由 v0.8.0 及以上版本生成的日志文件,无法被旧版 swanlab sync 同步;反过来,旧版 swanlog 文件也无法被新版 SDK 同步

同步前请确认:

  1. 你使用的 swanlab sync CLI 版本生成日志文件的 SDK 版本一致或更旧。
  2. 如果日志文件由低于 v0.8.0 的 SDK 生成,请使用相同版本的 SwanLab 运行 swanlab sync,不要升级。
  3. 如果同步过程中遇到解析错误或数据缺失,说明日志格式不兼容——请安装生成日志时的原始 SDK 版本后重试。

本地实验数据目录

SwanLab会将实验记录文件默认存放到项目目录的swanlog目录下,你也可以通过logdir参数自定义保存路径,文档

每当你创建1个实验时,SwanLab会自动在swanlog目录下创建1个run-[实验ID]目录,将数据持续记录到该目录下。

Tips

这个run开头的目录非常重要,是swanlab sync的基础。

上传实验数据

找到你需要上传到云端的数据文件目录,然后执行命令:

bash
swanlab sync ./swanlog/run-xxx

INFO

默认同步到的项目的是日志文件中记录的project,即跑该实验时设置的project。 如果想要同步到其他项目,可以使用-p选项指定项目。

看到下面的打印信息,则表示上传成功:

在原实验上同步

如果你不希望创建1个新实验,而是在原本的实验上同步(会自行比对数据,增加差异的部分),可以使用--id参数:

bash
swanlab sync ./swanlog/run-xxx --id <实验ID>

实验ID获取方式见:恢复实验/断点续训

批量上传

可以使用通配符批量上传:

bash
swanlab sync ./swanlog/run-*

上传到指定项目/团队空间

bash
swanlab sync ./swanlog/run-xxx -p <project_name> -w <workspace_name>

复制实验场景

如果你希望一个实验可以出现在多个项目下,那么可以使用上述命令,将实验上传到多个项目下。

上传到私有化部署

bash
swanlab sync ./swanlog/run-xxx --h <私有化部署地>