如何实现wandb仅云端日志并解决软链接下的陈旧文件句柄问题?
解决方案
问题1:让wandb仅写云端、停止本地日志写入
有两种实现方式,按需选择:
单项目临时生效
在调用wandb.init()时直接传入配置参数,强制仅同步云端,禁用本地文件生成:
wandb.init( project="你的项目名称", mode="online", # 强制仅在线模式,不会 fallback 到离线本地存储 settings=wandb.Settings( disable_local=True, # 彻底禁用本地日志文件写入 save_code=False # 可选:不需要同步代码到云端的话可添加,减少冗余 ) )
全局所有项目生效
如果希望所有wandb项目默认不写本地,可二选一操作:
- 环境变量方式:在终端执行(或加到
~/.bashrc/~/.zshrc中永久生效):export WANDB_DISABLE_LOCAL=true - 配置文件方式:编辑
~/.wandb/settings文件,添加一行:disable_local = true
问题2:适配软链接环境,解决Stale file handle错误
这个错误源于wandb缓存了迁移前的文件句柄,或跟踪了原始目录的绝对路径,按以下步骤处理:
清理旧缓存:删除wandb全局缓存和项目旧日志目录,清除残留的失效句柄:
rm -rf ~/.wandb/cache rm -rf ./wandb # 当前项目目录下有该文件夹时执行在软链接目录下运行代码:务必进入软链接指向的目录执行脚本,让wandb识别软链接路径而非原始磁盘路径。
初始化时禁用文件系统监控:避免wandb跟踪旧文件句柄,同时可指定数据目录到软链接路径:
wandb.init( project="你的项目名称", settings=wandb.Settings( filesystem_watch=False, # 禁用文件系统监控,规避句柄失效问题 data_dir="./wandb" # 指定数据目录为当前软链接目录下的wandb文件夹(可选) ) )全局指定wandb数据目录到大磁盘:将wandb的缓存和数据目录都指向大磁盘,既解决空间问题也适配软链接:
export WANDB_DATA_DIR="/path/to/large-disk/wandb-data" export WANDB_CACHE_DIR="/path/to/large-disk/wandb-cache"把这两行添加到shell配置文件中,下次启动终端自动生效。
若操作后仍有问题,尝试重新登录wandb:wandb login --relogin,确保配置完全刷新。
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

