You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决for循环中多wandb超参调优任务命令行仅显示单图表问题

问题

我正在进行超参数调优,编写了在for循环中运行多wandb任务的代码如下:

combinations = list(itertools.product(*self.grid_model_configs.values()))

for combination in combinations:
    param_names = self.grid_model_configs.keys()
    model_config = {key: value for key, value in zip(param_names, combination)}

    wandb.login()
    run = wandb.init(
        name=repr(model_config).replace("'", "").replace('{', '').replace('}', ''),
        project='D2T',
        config={
            'training_config': self.training_config,
            'model_config': model_config
        }
    )

    filtered_param = {k: v for k, v in model_config.items() if k in
                      [p.name for p in inspect.signature(PointerGenerator).parameters.values()]}

    pointernet = PointerGenerator(device=self.device, **filtered_param).to(self.device)

    trainer = Trainer(training_arguments=self.training_config,
                      model=pointernet,
                      criterion=Criterion(),
                      tokenizer=self.tokenizer,
                      wandb=run)
    trainer.fit(train_dataloader, dev_dataloader)

但在wandb平台中,多个参数组合仅显示一张图表。该代码在Jupyter Notebook中可正常运行,通过命令行运行时则出现上述异常,请问如何解决?

解决方案
  • 显式关闭每个wandb run:命令行环境下,wandb不会自动在循环迭代后终止当前run,导致所有实验数据被合并到同一个run中。在trainer.fit()执行完成后,添加wandb.finish()来结束当前run:

    trainer.fit(train_dataloader, dev_dataloader)
    wandb.finish()  # 新增该行代码
    
  • 将wandb.login()移到循环外:wandb.login()只需在程序启动时调用一次,循环内重复调用可能导致状态冲突。调整代码位置:

    wandb.login()  # 移至for循环外部
    combinations = list(itertools.product(*self.grid_model_configs.values()))
    
    for combination in combinations:
        # 移除循环内的wandb.login(),其余代码保持不变
    
  • 确保run名称唯一:当前通过repr(model_config)生成的名称可能存在重复风险,改用更直观的键值对拼接方式生成唯一名称:

    name = "_".join([f"{key}={value}" for key, value in model_config.items()])
    run = wandb.init(
        name=name,
        project='D2T',
        config={
            'training_config': self.training_config,
            'model_config': model_config
        }
    )
    
  • 统一wandb版本:命令行与Jupyter Notebook的wandb版本差异可能导致行为不一致,执行以下命令升级到最新版本:

    pip install --upgrade wandb
    

内容的提问来源于stack exchange,提问作者panda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:57:40