{"record":{"id":"53d41f34afcbc561","repo":"Lightning-AI/pytorch-lightning","slug":"a-single-optimizer-cannot-have-multiple-paramete","errorCode":null,"errorMessage":"A single `Optimizer` cannot have multiple parameter groups with identical `name` values. {name} has duplicated parameter group names {duplicates}","messagePattern":"A single `Optimizer` cannot have multiple parameter groups with identical `name` values\\. (.+?) has duplicated parameter group names (.+?)","errorType":"validation","errorClass":"MisconfigurationException","httpStatus":null,"severity":"error","filePath":"src/lightning/pytorch/callbacks/lr_monitor.py","lineNumber":364,"sourceCode":"\n    def _check_duplicates_and_update_name(\n        self,\n        optimizer: Optimizer,\n        name: str,\n        seen_optimizers: list[Optimizer],\n        seen_optimizer_types: defaultdict[type[Optimizer], int],\n        lr_scheduler_config: Optional[LRSchedulerConfig],\n    ) -> list[str]:\n        seen_optimizers.append(optimizer)\n        optimizer_cls = type(optimizer)\n        if lr_scheduler_config is None or lr_scheduler_config.name is None:\n            seen_optimizer_types[optimizer_cls] += 1\n\n        # Multiple param groups for the same optimizer\n        param_groups = optimizer.param_groups\n        duplicates = self._duplicate_param_group_names(param_groups)\n        if duplicates:\n            raise MisconfigurationException(\n                \"A single `Optimizer` cannot have multiple parameter groups with identical \"\n                f\"`name` values. {name} has duplicated parameter group names {duplicates}\"\n            )\n\n        name = self._add_prefix(name, optimizer_cls, seen_optimizer_types)\n        names = [self._add_suffix(name, param_groups, i) for i in range(len(param_groups))]\n        if self.log_key_prefix:\n            names = [f\"{self.log_key_prefix}{n}\" for n in names]\n        return names\n","sourceCodeStart":346,"sourceCodeEnd":374,"githubUrl":"https://github.com/Lightning-AI/pytorch-lightning/blob/9fed5c27d2a62ff0efd6c3573599921d6ff67c14/src/lightning/pytorch/callbacks/lr_monitor.py#L346-L374","documentation":"LearningRateMonitor derives names for each optimizer's param groups from an optional 'name' entry in the group dicts. If a single optimizer has multiple param groups whose `name` values collide, names would be ambiguous, so `_check_duplicates_and_update_name` raises MisconfigurationException listing the duplicates.","triggerScenarios":"An optimizer like `Adam([{...,'name':'head'}, {...,'name':'head'}])` — two param groups with the same `name` key. Triggered when the monitor inspects schedulers/optimizers at train start (or first logging).","commonSituations":"Duplicating param groups by mistake when building grouped optimizers; forgetting to set 'name' at all on multiple groups after Lightning's internal name extraction collapses them; refactor copying a group dict without changing the name.","solutions":["Give each param group a unique 'name' value (or remove the 'name' keys so Lightning auto-generates suffixed names)","If groups genuinely should share a name, merge them into one group","Check the `duplicates` list in the message against your `configure_optimizers` output"],"exampleFix":"# before\noptimizer = torch.optim.AdamW([\n    {'params': head_params, 'lr': 1e-3, 'name': 'head'},\n    {'params': tail_params, 'lr': 1e-4, 'name': 'head'},\n])\n# after\noptimizer = torch.optim.AdamW([\n    {'params': head_params, 'lr': 1e-3, 'name': 'head'},\n    {'params': tail_params, 'lr': 1e-4, 'name': 'tail'},\n])","handlingStrategy":"validation","validationCode":"names = [g.get('name') for g in optimizer.param_groups if 'name' in g]\nassert len(names) == len(set(names)), 'duplicate param-group names in optimizer'","typeGuard":"def no_duplicate_group_names(optimizer) -> bool:\n    names = [g.get('name') for g in optimizer.param_groups if 'name' in g]\n    return len(names) == len(set(names))","tryCatchPattern":null,"preventionTips":["Assign unique 'name' keys whenever building multi-group optimizers","Unit-test configure_optimizers output for group-name uniqueness"],"tags":["lightning","lr-monitor","optimizer","duplicate-name"],"backgroundTag":"duplicate-resource-name","analyzedSha":"9fed5c27d2a62ff0efd6c3573599921d6ff67c14","analyzedAt":"2026-08-28T11:52:41.083Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}