aim Remove tensorflow dependency for TensorboardTracker

gfttwv5a  于 2个月前  发布在  其他
关注(0)|答案(6)|浏览(27)

提议的重构或弃用

很酷的项目!我想知道在使用TensorboardTracker时是否可以移除tensorflow依赖。
aim/pkgs/aimstack/tensorboard_sync/tracker.py
第3行在3aee452
| | importtensorflowastf |

动机

如果没有实际需要,我们希望避免引入tensorflow这个沉重的依赖。

建议

你可以在这里只在需要的时候导入tensorflow:
aim/pkgs/aimstack/tensorboard_sync/tracker.py
3aee452中的第184行到第196行
| | track_val= [Image(tf.image.decode_image(t).numpy()) fortintensor] |
| | iflen(track_val) ==1: |
| | track_val=track_val[0] |
| | elifplugin_name=="histograms": |
| | track_val=_decode_histogram_from_plugin(value) |
| | elifplugin_name=="scalars"orplugin_name=="": |
| | track_val=create_ndarray(value.tensor) |
| | else: |
| | track_val=value.tensor.float_val[0] |
| | elifvalue.HasField("simple_value"): |
| | track_val=value.simple_value |
| | elifvalue.HasField("image"): |
| | track_val=Image(tf.image.decode_image(value.image.encoded_image_string).numpy()) |

ztyzrc3y

ztyzrc3y1#

嘿,@vwxyzjn!非常感谢你的报告。
实际上,tensorboard并未被列为aim包的依赖项,它仅在tensorboard_sync/tracker.py中导入,并且仅用于实时转换tensorboard日志,因此不会成为aim流程的一部分,也不会导致任何问题,如果tensorboard未安装的话。

bt1cpqcv

bt1cpqcv2#

你好,@mihran113,感谢你的回复。我的意思是使用tensorflow而不是tensorboard

zkure5ic

zkure5ic3#

对不起,我误解了你的意思,但是tensorflow也是一样,我们没有把它作为依赖项。安装aimtensorflow时,不会将其作为依赖项安装,除非你使用tensorboard_sync.run.Run对象,否则不会引起任何问题。

ykejflvf

ykejflvf4#

@mihran113,这是正确的。然而,我们只想在不使用tensorflow依赖的情况下执行以下操作。

from aim.ext.tensorboard_tracker import Run as AimRun
aim_run = AimRun(sync_tensorboard_log_dir=f"runs/{run_name}")
writer.add_scalar("charts/learning_rate", optimizer.param_groups[0]["lr"], global_step)

为了提供更多上下文,我们在CleanRL中一直使用tensorboard来记录指标,并可以选择将tensorboard同步到wandb。我们的一些用户一直在询问与aiml的集成,所以我们想到了以下解决方案,该方案可选地支持aiml和wandb。

run_name = f"{args.env_id}__{args.exp_name}__{args.seed}__{int(time.time())}"
    if args.wandb:
        import wandb
        wandb.init(
            project=args.wandb_project_name,
            entity=args.wandb_entity,
            sync_tensorboard=True,
            config=vars(args),
            name=run_name,
            monitor_gym=True,
            save_code=True,
        )
    writer = SummaryWriter(f"runs/{run_name}")
    if args.aim:
        from aim.ext.tensorboard_tracker import Run as AimRun
        aim_run = AimRun(sync_tensorboard_log_dir=f"runs/{run_name}")

话虽如此,我注意到from aim.ext.tensorboard_tracker import Run需要tensorflow依赖项,而我们之前并不需要为wandb的tensorboard同步添加这个依赖项。这是一个小众需求,但我在想是否可以去掉tensorflow依赖。

bmvo0sr5

bmvo0sr55#

@vwxyzjn 明白了!这很有道理,我会尽量在下一个补丁发布中加入这个功能。

相关问题