prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  bug(logger): wandb fails on sweep
  ## 🐛 Bug
  
  When using `wandb` sweeps for hyperparameters search, I get this error:
  > wandb: ERROR Attempted to change value of key "dropout_std" from 0.030424838979365657 to 0.030424838979365654
  
  The reason is I ran:
  ```python
  wandb_logger.log_hyperparams(params)
  ```
  
  Which I guess has some problem with floating-point numbers in high accuracy?
  
  bug(logger): wandb fails on sweep
  ## 🐛 Bug
  
  When using `wandb` sweeps for hyperparameters search, I get this error:
  > wandb: ERROR Attempted to change value of key "dropout_std" from 0.030424838979365657 to 0.030424838979365654
  
  The reason is I ran:
  ```python
  wandb_logger.log_hyperparams(params)
  ```
  
  Which I guess has some problem with floating-point numbers in high accuracy?
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `pytorch_lightning/loggers/wandb.py`
  Content:
  ```
  1 """
  2 Weights and Biases
  3 ------------------
  4 """
  5 import os
  6 from argparse import Namespace
  7 from typing import Optional, List, Dict, Union, Any
  8 
  9 import torch.nn as nn
  10 
  11 try:
  12     import wandb
  13     from wandb.wandb_run import Run
  14 except ImportError:  # pragma: no-cover
  15     raise ImportError('You want to use `wandb` logger which is not installed yet,'  # pragma: no-cover
  16                       ' install it with `pip install wandb`.')
  17 
  18 from pytorch_lightning.loggers.base import LightningLoggerBase, rank_zero_only
  19 
  20 
  21 class WandbLogger(LightningLoggerBase):
  22     """
  23     Log using `Weights and Biases <https://www.wandb.com/>`_. Install it with pip:
  24 
  25     .. code-block:: bash
  26 
  27         pip install wandb
  28 
  29     Args:
  30         name: Display name for the run.
  31         save_dir: Path where data is saved.
  32         offline: Run offline (data can be streamed later to wandb servers).
  33         id: Sets the version, mainly used to resume a previous run.
  34         anonymous: Enables or explicitly disables anonymous logging.
  35         version: Sets the version, mainly used to resume a previous run.
  36         project: The name of the project to which this run will belong.
  37         tags: Tags associated with this run.
  38         log_model: Save checkpoints in wandb dir to upload on W&B servers.
  39         experiment: WandB experiment object
  40         entity: The team posting this run (default: your username or your default team)
  41 
  42     Example:
  43         >>> from pytorch_lightning.loggers import WandbLogger
  44         >>> from pytorch_lightning import Trainer
  45         >>> wandb_logger = WandbLogger()
  46         >>> trainer = Trainer(logger=wandb_logger)
  47 
  48     See Also:
  49         - `Tutorial <https://app.wandb.ai/cayush/pytorchlightning/reports/
  50           Use-Pytorch-Lightning-with-Weights-%26-Biases--Vmlldzo2NjQ1Mw>`__
  51           on how to use W&B with Pytorch Lightning.
  52 
  53     """
  54 
  55     def __init__(self,
  56                  name: Optional[str] = None,
  57                  save_dir: Optional[str] = None,
  58                  offline: bool = False,
  59                  id: Optional[str] = None,
  60                  anonymous: bool = False,
  61                  version: Optional[str] = None,
  62                  project: Optional[str] = None,
  63                  tags: Optional[List[str]] = None,
  64                  log_model: bool = False,
  65                  experiment=None,
  66                  entity=None):
  67         super().__init__()
  68         self._name = name
  69         self._save_dir = save_dir
  70         self._anonymous = 'allow' if anonymous else None
  71         self._id = version or id
  72         self._tags = tags
  73         self._project = project
  74         self._experiment = experiment
  75         self._offline = offline
  76         self._entity = entity
  77         self._log_model = log_model
  78 
  79     def __getstate__(self):
  80         state = self.__dict__.copy()
  81         # args needed to reload correct experiment
  82         state['_id'] = self._experiment.id if self._experiment is not None else None
  83 
  84         # cannot be pickled
  85         state['_experiment'] = None
  86         return state
  87 
  88     @property
  89     def experiment(self) -> Run:
  90         r"""
  91 
  92         Actual wandb object. To use wandb features in your
  93         :class:`~pytorch_lightning.core.lightning.LightningModule` do the following.
  94 
  95         Example::
  96 
  97             self.logger.experiment.some_wandb_function()
  98 
  99         """
  100         if self._experiment is None:
  101             if self._offline:
  102                 os.environ['WANDB_MODE'] = 'dryrun'
  103             self._experiment = wandb.init(
  104                 name=self._name, dir=self._save_dir, project=self._project, anonymous=self._anonymous,
  105                 reinit=True, id=self._id, resume='allow', tags=self._tags, entity=self._entity)
  106             # save checkpoints in wandb dir to upload on W&B servers
  107             if self._log_model:
  108                 self.save_dir = self._experiment.dir
  109         return self._experiment
  110 
  111     def watch(self, model: nn.Module, log: str = 'gradients', log_freq: int = 100):
  112         self.experiment.watch(model, log=log, log_freq=log_freq)
  113 
  114     @rank_zero_only
  115     def log_hyperparams(self, params: Union[Dict[str, Any], Namespace]) -> None:
  116         params = self._convert_params(params)
  117         self.experiment.config.update(params)
  118 
  119     @rank_zero_only
  120     def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:
  121         if step is not None:
  122             metrics['global_step'] = step
  123         self.experiment.log(metrics)
  124 
  125     @property
  126     def name(self) -> str:
  127         # don't create an experiment if we don't have one
  128         name = self._experiment.project_name() if self._experiment else None
  129         return name
  130 
  131     @property
  132     def version(self) -> str:
  133         # don't create an experiment if we don't have one
  134         return self._experiment.id if self._experiment else None
  135
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/pytorch_lightning/loggers/wandb.py b/pytorch_lightning/loggers/wandb.py
  --- a/pytorch_lightning/loggers/wandb.py
  +++ b/pytorch_lightning/loggers/wandb.py
  @@ -114,7 +114,7 @@
       @rank_zero_only
       def log_hyperparams(self, params: Union[Dict[str, Any], Namespace]) -> None:
           params = self._convert_params(params)
  -        self.experiment.config.update(params)
  +        self.experiment.config.update(params, allow_val_change=True)
   
       @rank_zero_only
       def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:
  
verification_info: {"golden_diff": "diff --git a/pytorch_lightning/loggers/wandb.py b/pytorch_lightning/loggers/wandb.py\n--- a/pytorch_lightning/loggers/wandb.py\n+++ b/pytorch_lightning/loggers/wandb.py\n@@ -114,7 +114,7 @@\n     @rank_zero_only\n     def log_hyperparams(self, params: Union[Dict[str, Any], Namespace]) -> None:\n         params = self._convert_params(params)\n-        self.experiment.config.update(params)\n+        self.experiment.config.update(params, allow_val_change=True)\n \n     @rank_zero_only\n     def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:\n", "issue": "bug(logger): wandb fails on sweep\n## \ud83d\udc1b Bug\r\n\r\nWhen using `wandb` sweeps for hyperparameters search, I get this error:\r\n> wandb: ERROR Attempted to change value of key \"dropout_std\" from 0.030424838979365657 to 0.030424838979365654\r\n\r\nThe reason is I ran:\r\n```python\r\nwandb_logger.log_hyperparams(params)\r\n```\r\n\r\nWhich I guess has some problem with floating-point numbers in high accuracy?\r\n\nbug(logger): wandb fails on sweep\n## \ud83d\udc1b Bug\r\n\r\nWhen using `wandb` sweeps for hyperparameters search, I get this error:\r\n> wandb: ERROR Attempted to change value of key \"dropout_std\" from 0.030424838979365657 to 0.030424838979365654\r\n\r\nThe reason is I ran:\r\n```python\r\nwandb_logger.log_hyperparams(params)\r\n```\r\n\r\nWhich I guess has some problem with floating-point numbers in high accuracy?\r\n\n", "before_files": [{"content": "\"\"\"\nWeights and Biases\n------------------\n\"\"\"\nimport os\nfrom argparse import Namespace\nfrom typing import Optional, List, Dict, Union, Any\n\nimport torch.nn as nn\n\ntry:\n    import wandb\n    from wandb.wandb_run import Run\nexcept ImportError:  # pragma: no-cover\n    raise ImportError('You want to use `wandb` logger which is not installed yet,'  # pragma: no-cover\n                      ' install it with `pip install wandb`.')\n\nfrom pytorch_lightning.loggers.base import LightningLoggerBase, rank_zero_only\n\n\nclass WandbLogger(LightningLoggerBase):\n    \"\"\"\n    Log using `Weights and Biases <https://www.wandb.com/>`_. Install it with pip:\n\n    .. code-block:: bash\n\n        pip install wandb\n\n    Args:\n        name: Display name for the run.\n        save_dir: Path where data is saved.\n        offline: Run offline (data can be streamed later to wandb servers).\n        id: Sets the version, mainly used to resume a previous run.\n        anonymous: Enables or explicitly disables anonymous logging.\n        version: Sets the version, mainly used to resume a previous run.\n        project: The name of the project to which this run will belong.\n        tags: Tags associated with this run.\n        log_model: Save checkpoints in wandb dir to upload on W&B servers.\n        experiment: WandB experiment object\n        entity: The team posting this run (default: your username or your default team)\n\n    Example:\n        >>> from pytorch_lightning.loggers import WandbLogger\n        >>> from pytorch_lightning import Trainer\n        >>> wandb_logger = WandbLogger()\n        >>> trainer = Trainer(logger=wandb_logger)\n\n    See Also:\n        - `Tutorial <https://app.wandb.ai/cayush/pytorchlightning/reports/\n          Use-Pytorch-Lightning-with-Weights-%26-Biases--Vmlldzo2NjQ1Mw>`__\n          on how to use W&B with Pytorch Lightning.\n\n    \"\"\"\n\n    def __init__(self,\n                 name: Optional[str] = None,\n                 save_dir: Optional[str] = None,\n                 offline: bool = False,\n                 id: Optional[str] = None,\n                 anonymous: bool = False,\n                 version: Optional[str] = None,\n                 project: Optional[str] = None,\n                 tags: Optional[List[str]] = None,\n                 log_model: bool = False,\n                 experiment=None,\n                 entity=None):\n        super().__init__()\n        self._name = name\n        self._save_dir = save_dir\n        self._anonymous = 'allow' if anonymous else None\n        self._id = version or id\n        self._tags = tags\n        self._project = project\n        self._experiment = experiment\n        self._offline = offline\n        self._entity = entity\n        self._log_model = log_model\n\n    def __getstate__(self):\n        state = self.__dict__.copy()\n        # args needed to reload correct experiment\n        state['_id'] = self._experiment.id if self._experiment is not None else None\n\n        # cannot be pickled\n        state['_experiment'] = None\n        return state\n\n    @property\n    def experiment(self) -> Run:\n        r\"\"\"\n\n        Actual wandb object. To use wandb features in your\n        :class:`~pytorch_lightning.core.lightning.LightningModule` do the following.\n\n        Example::\n\n            self.logger.experiment.some_wandb_function()\n\n        \"\"\"\n        if self._experiment is None:\n            if self._offline:\n                os.environ['WANDB_MODE'] = 'dryrun'\n            self._experiment = wandb.init(\n                name=self._name, dir=self._save_dir, project=self._project, anonymous=self._anonymous,\n                reinit=True, id=self._id, resume='allow', tags=self._tags, entity=self._entity)\n            # save checkpoints in wandb dir to upload on W&B servers\n            if self._log_model:\n                self.save_dir = self._experiment.dir\n        return self._experiment\n\n    def watch(self, model: nn.Module, log: str = 'gradients', log_freq: int = 100):\n        self.experiment.watch(model, log=log, log_freq=log_freq)\n\n    @rank_zero_only\n    def log_hyperparams(self, params: Union[Dict[str, Any], Namespace]) -> None:\n        params = self._convert_params(params)\n        self.experiment.config.update(params)\n\n    @rank_zero_only\n    def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:\n        if step is not None:\n            metrics['global_step'] = step\n        self.experiment.log(metrics)\n\n    @property\n    def name(self) -> str:\n        # don't create an experiment if we don't have one\n        name = self._experiment.project_name() if self._experiment else None\n        return name\n\n    @property\n    def version(self) -> str:\n        # don't create an experiment if we don't have one\n        return self._experiment.id if self._experiment else None\n", "path": "pytorch_lightning/loggers/wandb.py"}], "after_files": [{"content": "\"\"\"\nWeights and Biases\n------------------\n\"\"\"\nimport os\nfrom argparse import Namespace\nfrom typing import Optional, List, Dict, Union, Any\n\nimport torch.nn as nn\n\ntry:\n    import wandb\n    from wandb.wandb_run import Run\nexcept ImportError:  # pragma: no-cover\n    raise ImportError('You want to use `wandb` logger which is not installed yet,'  # pragma: no-cover\n                      ' install it with `pip install wandb`.')\n\nfrom pytorch_lightning.loggers.base import LightningLoggerBase, rank_zero_only\n\n\nclass WandbLogger(LightningLoggerBase):\n    \"\"\"\n    Log using `Weights and Biases <https://www.wandb.com/>`_. Install it with pip:\n\n    .. code-block:: bash\n\n        pip install wandb\n\n    Args:\n        name: Display name for the run.\n        save_dir: Path where data is saved.\n        offline: Run offline (data can be streamed later to wandb servers).\n        id: Sets the version, mainly used to resume a previous run.\n        anonymous: Enables or explicitly disables anonymous logging.\n        version: Sets the version, mainly used to resume a previous run.\n        project: The name of the project to which this run will belong.\n        tags: Tags associated with this run.\n        log_model: Save checkpoints in wandb dir to upload on W&B servers.\n        experiment: WandB experiment object\n        entity: The team posting this run (default: your username or your default team)\n\n    Example:\n        >>> from pytorch_lightning.loggers import WandbLogger\n        >>> from pytorch_lightning import Trainer\n        >>> wandb_logger = WandbLogger()\n        >>> trainer = Trainer(logger=wandb_logger)\n\n    See Also:\n        - `Tutorial <https://app.wandb.ai/cayush/pytorchlightning/reports/\n          Use-Pytorch-Lightning-with-Weights-%26-Biases--Vmlldzo2NjQ1Mw>`__\n          on how to use W&B with Pytorch Lightning.\n\n    \"\"\"\n\n    def __init__(self,\n                 name: Optional[str] = None,\n                 save_dir: Optional[str] = None,\n                 offline: bool = False,\n                 id: Optional[str] = None,\n                 anonymous: bool = False,\n                 version: Optional[str] = None,\n                 project: Optional[str] = None,\n                 tags: Optional[List[str]] = None,\n                 log_model: bool = False,\n                 experiment=None,\n                 entity=None):\n        super().__init__()\n        self._name = name\n        self._save_dir = save_dir\n        self._anonymous = 'allow' if anonymous else None\n        self._id = version or id\n        self._tags = tags\n        self._project = project\n        self._experiment = experiment\n        self._offline = offline\n        self._entity = entity\n        self._log_model = log_model\n\n    def __getstate__(self):\n        state = self.__dict__.copy()\n        # args needed to reload correct experiment\n        state['_id'] = self._experiment.id if self._experiment is not None else None\n\n        # cannot be pickled\n        state['_experiment'] = None\n        return state\n\n    @property\n    def experiment(self) -> Run:\n        r\"\"\"\n\n        Actual wandb object. To use wandb features in your\n        :class:`~pytorch_lightning.core.lightning.LightningModule` do the following.\n\n        Example::\n\n            self.logger.experiment.some_wandb_function()\n\n        \"\"\"\n        if self._experiment is None:\n            if self._offline:\n                os.environ['WANDB_MODE'] = 'dryrun'\n            self._experiment = wandb.init(\n                name=self._name, dir=self._save_dir, project=self._project, anonymous=self._anonymous,\n                reinit=True, id=self._id, resume='allow', tags=self._tags, entity=self._entity)\n            # save checkpoints in wandb dir to upload on W&B servers\n            if self._log_model:\n                self.save_dir = self._experiment.dir\n        return self._experiment\n\n    def watch(self, model: nn.Module, log: str = 'gradients', log_freq: int = 100):\n        self.experiment.watch(model, log=log, log_freq=log_freq)\n\n    @rank_zero_only\n    def log_hyperparams(self, params: Union[Dict[str, Any], Namespace]) -> None:\n        params = self._convert_params(params)\n        self.experiment.config.update(params, allow_val_change=True)\n\n    @rank_zero_only\n    def log_metrics(self, metrics: Dict[str, float], step: Optional[int] = None) -> None:\n        if step is not None:\n            metrics['global_step'] = step\n        self.experiment.log(metrics)\n\n    @property\n    def name(self) -> str:\n        # don't create an experiment if we don't have one\n        name = self._experiment.project_name() if self._experiment else None\n        return name\n\n    @property\n    def version(self) -> str:\n        # don't create an experiment if we don't have one\n        return self._experiment.id if self._experiment else None\n", "path": "pytorch_lightning/loggers/wandb.py"}]}