背景
源自 #1723 的 review 讨论(@ShaohonChen 的评论)。
#1723 已经把配置加载推迟到首次使用,import swanlab 不再因非法环境变量失败;但当真正消费配置时(swanlab.init() / swanlab.login() / swanlab.Api() 等),非法环境变量仍会抛出 ValidationError、YAML 解析错误或路径错误,直接阻断使用。
现状
create_settings() 在首次消费配置时,以下情况仍会直接报错:
- 非法的 SWANLAB_MODE
- 非整数或越界的 SWANLAB_DASHBOARD_PORT
- 旧版嵌套环境变量格式错误
- 非法的 SWANLAB_LOGDIR
- 损坏的 swanlab.yaml
提议
对于非法的环境变量,选择忽略并回退到默认值,同时输出 warning 说明忽略了什么、为什么,而不是直接抛错阻断使用。
动机
- 生产环境兼容性:环境变量复杂(空字符串 ""、陈旧值、与其他工具命名冲突等)的生产环境里,SDK 能展现出更强的兼容性,避免训练任务被配置问题意外中断。
- 产品侧可补救:只要数据上报成功,后续可以通过前端改名、移动实验等方式把实验转换成想要的形式,对用户更友好。
- 可追溯:行为不一致的场景可以通过 warning 事后分析回来。
需要讨论的点
- 边界划分:哪些校验适合「忽略 + warning」(格式 / 范围类),哪些仍应硬失败(如鉴权凭据缺失、路径不可写)?
- 提示形式:warning 应同时输出到终端与诊断日志 debug.log,确保用户能事后追溯,而非静默回退。
- 回退后的行为一致性:降级到默认值后,后续与配置相关的行为(host、port、mode 等)需保证逻辑自洽,不能半回退。
参考
Reactions are currently unavailable
背景
源自 #1723 的 review 讨论(@ShaohonChen 的评论)。
#1723 已经把配置加载推迟到首次使用,import swanlab 不再因非法环境变量失败;但当真正消费配置时(swanlab.init() / swanlab.login() / swanlab.Api() 等),非法环境变量仍会抛出 ValidationError、YAML 解析错误或路径错误,直接阻断使用。
现状
create_settings() 在首次消费配置时,以下情况仍会直接报错:
提议
对于非法的环境变量,选择忽略并回退到默认值,同时输出 warning 说明忽略了什么、为什么,而不是直接抛错阻断使用。
动机
需要讨论的点
参考