从其他工具迁移
Aim探索器为AI工程师的工具库增添了真正的超级能力。然而并非所有训练过程都可能被Aim追踪过。因此能够移植现有的训练日志非常重要。可能有数千次训练运行是通过其他工具记录的。Aim内置了转换器可以轻松迁移其他工具的日志。这些迁移涵盖了最常见的应用场景。对于自定义和复杂场景,您可以使用Aim SDK来实现自己的转换脚本。
截至 Aim v3.6.0 版本,支持以下转换器:
我们正在努力持续改进现有转换器并实现新的转换器。
在Aim中显示TensorBoard日志
Aim 提供了将 TensorBoard 日志转换为原生格式并直接在 Aim 界面中显示的功能。
在Aim中显示日志之前,文件需要经过转换处理。
请注意,目前仅支持以下插件
标量
图像
要转换TensorBoard日志,必须在您的日志目录上运行aim convert命令。
aim convert tensorboard --logdir ~/my_logdir
为确保转换过程顺利进行,请确保日志目录结构遵循以下约定。参考以下目录层级结构:
~/my_logdir/
├> run_1/
│ ├> <evnet_file_1>
│ └> <evnet_file_2>
├> group_1/
│ ├> <evnet_file_3> (THIS LOG WILL BE IGNORED)
│ ├> run_2/
│ │ ├> train/
│ │ │ ├> <evnet_file_4>
│ │ │ └> <evnet_file_5>
│ │ ├> validate/
│ │ │ ├> <evnet_file_6>
│ │ │ └> <evnet_file_7>
│ │ ├> <evnet_file_8> (IGNORED IF "--flat" IS ACTIVE)
│ │ └> <evnet_file_9> (IGNORED IF "--flat" IS ACTIVE)
│ └> run_3/
│ ├> <evnet_file_10>
│ └> <evnet_file_11>
├> <evnet_file_12> (THIS LOG WILL BE IGNORED)
└> <evnet_file_13> (THIS LOG WILL BE IGNORED)
请注意,目录命名并非强制要求,具体如何命名由您自行决定。
转换逻辑将您的层级结构分类为group、run和context三种类别。
group: 是一个包含一个或多个
run目录的目录run: 是一个目录,其中包含日志文件或上下文目录。
context: 是
run目录中的一个子目录,其中至少包含一个日志文件。
转换过程将扫描并确定您的层级结构中的run目录,并为每个目录创建一个独立的运行记录。
从上面的层级结构示例中可以看出,以下日志文件将被忽略,因为转换器将它们视为未组织的日志文件。
~/my_logdir/group_1/evnet_file_3~/my_logdir/evnet_file_12~/my_logdir/evnet_file_13
所有其他日志将标记为Context或No Context。日志的上下文是指父目录名称,前提是该父目录尚未被归类为run或group类别。
例如:
日志文件直接位于
run_1、run_2和run_3下方将没有上下文run_2/train和run_2/validate中的日志文件将分别以train和validate作为上下文。
如果转换器在您的层级结构中发现未组织的日志文件,将会发出警告消息。
为了让转换器处理这些日志,建议重新组织目录结构以匹配示例结构。(即创建一个新目录并将未整理的日志移动至该目录)
您可以通过提供--flat选项,让转换器将每个目录视为独立的运行记录。在这种情况下,以下目录将被归类为run目录。
~/my_logdir/run_1/~/my_logdir/group_1/run_2/train/~/my_logdir/group_1/run_2/validate/~/my_logdir/group_1/run_3/
所有其他目录中的日志文件将被忽略。
在Aim中显示MLflow日志
Aim 提供了将 MLflow 运行记录转换为原生格式并在 Aim UI 上直接展示的功能。
在将您的MLflow运行记录展示到Aim之前,它们需要经过转换流程,其中您的指标、标签、参数、运行描述/备注以及部分工件将被传输到Aim存储中。
请注意,目前只有具有以下文件扩展名的产物会被传输到Aim存储中!
图片格式:
( 'jpg', 'bmp', 'jpeg', 'png', 'gif', 'svg' )文本类型:
( 'txt', 'log', 'py', 'js', 'yaml', 'yml', 'json', 'csv', 'tsv', 'md', 'rst', 'jsonnet' )音频/声音:
( 'flac', 'mp3', 'wav' )
要转换MLflow运行记录,必须在您的日志目录中运行aim convert mlflow命令:
$ aim init
$ aim convert mlflow --tracking_uri 'file:///Users/aim_user/mlruns'
你也可以设置MLFLOW_TRACKING_URI环境变量,让MLflow从中获取URI。无论哪种情况,该URI既可以是远程服务器的HTTP/HTTPS地址,也可以是数据库连接字符串,或者是用于将数据记录到目录的本地路径。
转换过程将遍历您的所有实验,并为每个实验内的运行创建独立的运行记录。如果您只想处理单个实验,可以向转换命令提供实验ID或名称:
$ aim convert mlflow --tracking_uri 'file:///Users/aim_user/mlruns' --experiment 0
在转换制品时,转换器将仅根据文件扩展名尝试确定文件内容类型。如果无法对制品进行分类,将发出警告消息,这些制品将不会传输到aimstack!如果您在Aim的网页上看不到您的制品,请检查命令输出日志。
在Aim中显示Weights and Biases日志
Aim 提供了将Weights & Biases的运行记录转换为原生格式并通过Aim UI进行探索的功能。
要使用Aim探索Weights & Biases的运行记录,请运行WandB到Aim的转换器。所有指标、标签、配置、实验描述/注释以及部分工件将被转换并存储在.aim仓库中。
执行aim convert wandb命令开始转换Weights & Biases实验:
$ aim init
$ aim convert wandb --entity 'my_team' --project 'test_project'
转换器将遍历所有实验并为每个实验创建一个独立的Aim运行记录。如果只想处理单个实验,请在运行命令时指定实验ID或名称:
$ aim convert wandb --entity my_team --project test_project --run-id '<HASH_OF_RUN>'
在转换工件时,转换器会根据文件扩展名尝试确定其内容类型。如果工件未被分类,将发出警告信息,这些工件不会被传输到aim。请注意,当前实现仅跟踪基本数据类型。
如果转换过程中遇到任何问题,请提交问题。
转换过程完成后 - 您就可以享受Aim的强大功能了 🚀