英文:
Wandb ignores --configs flag when running training script
问题
使用脚本时,我想指定要使用的配置 YAML 文件。文档 中指出,您可以使用 --configs
标志来指定要加载的配置文件,但是在运行以下脚本时:
>>> python myscript.py --configs new-configs.yaml
在以下脚本中:
import wandb
wandb.init()
print(wandb.config)
我发现加载的配置是 config-defaults.yaml
中包含的配置,而不是 new-configs.yaml
。为什么会发生这种情况?
规格
MacOS 13.4.1(Apple M1 芯片)
python 3.10.12
tensorflow-macos 2.12.0
tensorflow-metal 0.8.0
wandb 0.15.5
英文:
Running a script I want to specify what config YAML to use. The documentation states you can specify what configuration file to load using the --configs
flag, however running
>>> python myscript.py --configs new-configs.yaml
on the following script
import wandb
wandb.init()
print(wandb.config)
I can see that the configuration contained in config-defaults.yaml
is being loaded instead. Why is this happening?
Specs
MacOS 13.4.1 (Apple M1 chip)
python 3.10.12
tensorflow-macos 2.12.0
tensorflow-metal 0.8.0
wandb 0.15.5
答案1
得分: 1
--configs
标志用于指定一个与默认的config-defaults.yaml
不同的配置文件。然而,重要的是要注意,--configs
标志应该在运行wandb
命令时使用,而不是在运行您的Python脚本时使用。
如果您想在运行Python脚本时使用不同的配置文件,您应该在脚本中手动从文件加载配置。以下是一个示例:
import wandb
import yaml
# 从文件加载配置
with open('new-configs.yaml') as file:
config = yaml.safe_load(file)
# 使用加载的配置初始化wandb
wandb.init(config=config)
print(wandb.config)
在这个示例中,配置是使用yaml
库从new-configs.yaml
加载的,然后传递给wandb.init()
。
如果您仍然想使用--configs
标志,您可以在wandb
命令中使用它,像这样:
wandb --configs=new-configs.yaml
这将使用new-configs.yaml
的配置启动一个新的运行。但是,这不会运行您的Python脚本。如果您想使用此配置运行您的脚本,您应该在脚本中从wandb.config
加载配置,像这样:
import wandb
# 初始化wandb
wandb.init()
# 获取配置
config = wandb.config
print(config)
在这个示例中,配置是从wandb.config
加载的,这是由wandb
命令使用--configs
标志设置的。希望这有所帮助!
英文:
The --configs flag
is used to specify a different configuration file other than the default config-defaults.yaml
. However, it's important to note that the --configs flag
should be used when running the wandb
command, not when running your python script.
If you want to use a different configuration file when running your python script, you should load the configuration from the file manually in your script. Here is an example of how you can do this:
python
import wandb
import yaml
# Load config from file
with open('new-configs.yaml') as file:
config = yaml.safe_load(file)
# Initialize wandb with the loaded config
wandb.init(config=config)
print(wandb.config)
In this example, the configuration is loaded from new-configs.yaml
using the yaml
library, and then passed to wandb.init()
.
If you still want to use the --configs
flag, you should use it with the wandb
command, like this:
bash
wandb --configs=new-configs.yaml
This will start a new run with the configuration from new-configs.yaml
. However, this will not run your python script. If you want to run your script with this configuration, you should load the configuration from wandb.config
in your script, like this:
python
import wandb
# Initialize wandb
wandb.init()
# Get the configuration
config = wandb.config
print(config)
In this example, the configuration is loaded from wandb.config
, which is set by the wandb command with the --configs flag.
I hope this helps!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论