我在复现论文时遇到这个错误,此时我的环境是python3.7
这个报错的根因是:你当前环境里的 wandb SDK 太旧,只接受老式 40 位 API key;而 W&B 现在发的是新版
wandb_v1_… 格式的长 key。
根据官方文档
https://docs.wandb.ai/support/models/articles/why-does-my-api-key-fail-with-must-be-40-characters
Support for longer API keys was added in wandb v0.22.3, so upgrading
to that version or later resolves the error:
如果条件合适,可以直接
pipinstall-Uwandb wandb login--relogin但是wandb==0.22.3` 这个版本不能直接装我当前的环境,因为当前环境是:
Python3.7而wandb==0.22.3在 PyPI 上要求:
requires_python >= 3.8所以如果执行:
python-mpipinstall"wandb==0.22.3"在 Python 3.7 环境里大概率会失败,或者 pip 直接拒绝安装。PyPI 元数据见 wandb 0.22.3。
结论是:
Balsa 推荐 Python 3.7 新版 W&B key 需要 wandb >= 0.22.3 wandb >= 0.22.3 需要 Python >= 3.8这三个条件目前冲突了。
我的建议
不要在当前balsaPython 3.7 环境里强行升级到wandb==0.22.3。更稳的选择有三个:
方案 A:先禁用或离线 W&B,保证实验跑通
WANDB_MODE=disabled python run.py--runBalsa_JOBRandSplit--local或者:
WANDB_MODE=offline python run.py--runBalsa_JOBRandSplit--local这是最稳的,不会动老依赖。
方案 B:新建 Python 3.8 测试环境,专门测试是否兼容
不要直接破坏当前环境,另建一个:
conda create-nbalsa-py38python=3.8-yconda activate balsa-py38cd~/balsa python-mpipinstall--upgradepip setuptools wheel python-mpipinstall-rrequirements.txt python-mpipinstall"wandb==0.22.3"python-mpipinstall-e.python-mpipinstall-epg_executor python-mpip check如果torch==1.4.0、ray==1.9.2或pytorch_lightning==0.9.0在 Python 3.8 下出问题,就放弃这个方案。
方案 C:保留 Balsa Python 3.7,用 40 位旧 key
如果 W&B 账号还能生成/找到旧式 40 位 API key,这是最兼容当前环境的方式。但如果你的账号现在只给wandb_v1_...新 key,那就只能用方案 A 或 B。
我会优先选:
WANDB_MODE=offline先跑实验。等实验稳定后,再考虑单独建balsa-py38环境测试wandb==0.22.3。不要为了 W&B 先把 Balsa 的核心依赖环境搅乱。