从其他工具迁移
Aim 探索器为 AI 工程师的工具箱增添了真正的超能力。然而,并非所有的训练运行都可能被 Aim 跟踪。因此,能够移植现有训练运行日志非常重要。可能存在数千个使用其他工具跟踪的训练运行。Aim 内置了转换器,可以轻松地从其他工具迁移日志。这些迁移涵盖了最常见的用例场景。对于自定义和复杂的场景,您可以使用 Aim SDK 实现自己的转换脚本。
截至 Aim v3.6.0
,支持以下转换器:
我们正在努力不断改进现有转换器并实现新转换器。
在 Aim 中显示 TensorBoard 日志
Aim 允许您将 TensorBoard 日志转换为原生格式,并直接在 Aim UI 中显示它们。
在 Aim 中显示日志之前,文件必须通过转换过程。
请注意,目前仅支持以下插件:
标量 (scalar)
图像 (image)
要转换 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 上显示它们。
在 Aim 上显示 MLflow 运行之前,它们需要经过转换过程,在此过程中,您的指标、标签、参数、运行描述/注释和_一些_工件将被传输到 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 URI、数据库连接字符串或用于将数据记录到目录的本地路径。
转换过程将遍历您的所有实验,并为实验中的每个运行创建一个单独的运行。如果您只想处理一个实验,可以将实验 ID 或名称提供给转换命令
$ aim convert mlflow --tracking_uri 'file:///Users/aim_user/mlruns' --experiment 0
在转换工件时,转换器将仅根据其扩展名尝试确定文件内容类型。如果工件无法分类,将发出警告消息,这些工件将不会传输到 Aim!如果您未能在 Aim 的网页中看到您的工件,请检查命令输出日志。
在 Aim 中显示 Weights and Biases 日志
Aim 允许您将 Weights & Biases 运行转换为原生格式,并通过 Aim UI 进行探索。
为了能够使用 Aim 探索 Weights & Biases 运行,请运行 WandB to 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 的强大功能了🚀