Skip to content

pytorch_lightning中使用id报错,会报错You can't pass id when resume=never or resume=False #1383

@lifeixianshen

Description

@lifeixianshen

确认项

  • 我已确认我遇到的问题在文档中未有说明。
  • 我已在 GitHub 上搜索过类似或已有的问题。
  • 我已确认此问题并非由网络错误引起。

问题描述

swanlab/integration/pytorch_lightning.py中定义的self._swanlab_init中不包含任何(pytorch_lightning)resume参数:

self._swanlab_init: Dict[str, Any] = {
            "project": project,
            "workspace": workspace,
            "experiment_name": experiment_name,
            "description": description,
            "logdir": logdir,
            "mode": mode,
            "tags": tags,
        }

        self._swanlab_init.update(**kwargs)

        self._project = self._swanlab_init.get("project")
        self._workspace = self._swanlab_init.get("workspace")
        self._experiment_name = self._swanlab_init.get("experiment_name")
        self._description = self._swanlab_init.get("decsription")
        self._logdir = self._swanlab_init.get("logdir")
        self._mode = self._swanlab_init.get("mode"),

在下面调用init的时候传入不含resume的参数:self._experiment = swanlab.init(**self._swanlab_init)

而运行的时候调用swanlab/data/sdk.py中的SwanLabInitializer.init的时候resume默认为None:resume: Union[Literal['must', 'allow', 'never'], bool] = None,
因为pytorch_lightning中会默认传入id,所以会触发下面几行代码段错误 : resume = resume or 'never'
if resume == 'never':
# 不允许传递 id
if id is not None:
raise RuntimeError("You can't pass id when resume=never or resume=False."

导致pytorch_lightning会报错You can't pass id when resume=never or resume=False

wandb中wandb/integration/lightning/fabric/logger.py相应的地方是这样写的: self._wandb_init: Dict[str, Any] = {
"name": name,
"project": project,
"dir": save_dir or dir,
"id": version or id,
"resume": "allow",
"anonymous": ("allow" if anonymous else None),
}
不知道这两种写法哪种好

必须的复现代码

from swanlab.integration.pytorch_lightning import SwanLabLogger
swanlab_logger = SwanLabLogger(
    project="swanlab_example35",
    experiment_name="example_experiment35",
    id='tt',
    #resume=False
)
print(swanlab_logger.experiment)

错误信息

RuntimeError                              Traceback (most recent call last)
Cell In[1], [line 8](vscode-notebook-cell:?execution_count=1&line=8)
      1 from swanlab.integration.pytorch_lightning import SwanLabLogger
      2 swanlab_logger = SwanLabLogger(
      3     project="swanlab_example35",
      4     experiment_name="example_experiment35",
      5     id='tt',
      6     #resume=False
      7 )
----> [8](vscode-notebook-cell:?execution_count=1&line=8) print(swanlab_logger.experiment)

File ~/install/micromamba/envs/bg_dev/lib/python3.12/site-packages/lightning_fabric/loggers/logger.py:118, in rank_zero_experiment.<locals>.experiment(self)
    116 if rank_zero_only.rank > 0:
    117     return _DummyExperiment()
--> [118](https://vscode-remote+ssh-002dremote-002b172-002e18-002e1-002e17.vscode-resource.vscode-cdn.net/dev_code_old/~/install/micromamba/envs/bg_dev/lib/python3.12/site-packages/lightning_fabric/loggers/logger.py:118) return fn(self)

File ~/install/micromamba/envs/bg_dev/lib/python3.12/site-packages/swanlab/integration/pytorch_lightning.py:105, in SwanLabLogger.experiment(self)
    102 swanlab.config["FRAMEWORK"] = "⚡️pytorch_lightning"
    104 if swanlab.get_run() is None:
--> [105](https://vscode-remote+ssh-002dremote-002b172-002e18-002e1-002e17.vscode-resource.vscode-cdn.net/~/install/micromamba/envs/bg_dev/lib/python3.12/site-packages/swanlab/integration/pytorch_lightning.py:105)     self._experiment = swanlab.init(**self._swanlab_init)
    106 else:
    107     rank_zero_warn(
    108         "There is a swanlab experiment already in progress and newly created instances of `SwanLabLogger` will reuse"
    109         " this experiment. If this is not desired, call `swanlab.finish()` before instantiating `SwanLabLogger`."
...
    311 elif resume == 'must' or resume == 'allow':
    312     # 只允许在 cloud 模式下使用 resume
    313     if mode != "cloud":

RuntimeError: You can't pass id when resume=never or resume=False.

Metadata

Metadata

Assignees

Labels

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions