从其他工具迁移

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)

请注意,目录命名并非强制要求,具体如何命名由您自行决定。

转换逻辑将您的层级结构分类为groupruncontext三种类别。

  • group: 是一个包含一个或多个run目录的目录

  • run: 是一个目录,其中包含日志文件或上下文目录。

  • context: 是run目录中的一个子目录,其中至少包含一个日志文件。

转换过程将扫描并确定您的层级结构中的run目录,并为每个目录创建一个独立的运行记录。

从上面的层级结构示例中可以看出,以下日志文件将被忽略,因为转换器将它们视为未组织的日志文件。

  • ~/my_logdir/group_1/evnet_file_3

  • ~/my_logdir/evnet_file_12

  • ~/my_logdir/evnet_file_13

所有其他日志将标记为ContextNo Context。日志的上下文是指父目录名称,前提是该父目录尚未被归类为rungroup类别。

例如:

  • 日志文件直接位于run_1run_2run_3下方将没有上下文

  • run_2/trainrun_2/validate 中的日志文件将分别以 trainvalidate 作为上下文。

如果转换器在您的层级结构中发现未组织的日志文件,将会发出警告消息。

为了让转换器处理这些日志,建议重新组织目录结构以匹配示例结构。(即创建一个新目录并将未整理的日志移动至该目录)

您可以通过提供--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的强大功能了 🚀