facebookresearch/detectron2 · error · ValueError

Conflicting overrides for 'bias'

Error message

Conflicting overrides for 'bias'

What it means

get_default_optimizer_params already derives bias overrides from bias_lr_factor/weight_decay_bias; passing an explicit 'bias' entry in overrides conflicts with the computed one, so the function refuses to guess which wins.

Source

Thrown at detectron2/solver/build.py:198

    if overrides is None:
        overrides = {}
    defaults = {}
    if base_lr is not None:
        defaults["lr"] = base_lr
    if weight_decay is not None:
        defaults["weight_decay"] = weight_decay
    bias_overrides = {}
    if bias_lr_factor is not None and bias_lr_factor != 1.0:
        # NOTE: unlike Detectron v1, we now by default make bias hyperparameters
        # exactly the same as regular weights.
        if base_lr is None:
            raise ValueError("bias_lr_factor requires base_lr")
        bias_overrides["lr"] = base_lr * bias_lr_factor
    if weight_decay_bias is not None:
        bias_overrides["weight_decay"] = weight_decay_bias
    if len(bias_overrides):
        if "bias" in overrides:
            raise ValueError("Conflicting overrides for 'bias'")
        overrides["bias"] = bias_overrides
    if lr_factor_func is not None:
        if base_lr is None:
            raise ValueError("lr_factor_func requires base_lr")
    norm_module_types = (
        torch.nn.BatchNorm1d,
        torch.nn.BatchNorm2d,
        torch.nn.BatchNorm3d,
        torch.nn.SyncBatchNorm,
        # NaiveSyncBatchNorm inherits from BatchNorm2d
        torch.nn.GroupNorm,
        torch.nn.InstanceNorm1d,
        torch.nn.InstanceNorm2d,
        torch.nn.InstanceNorm3d,
        torch.nn.LayerNorm,
        torch.nn.LocalResponseNorm,
    )
    params: List[Dict[str, Any]] = []

View on GitHub (pinned to a2f4a8771a)

Solutions

  1. Remove the 'bias' key from overrides and let bias_lr_factor/weight_decay_bias control it
  2. Or set bias_lr_factor=None and weight_decay_bias=None and keep the explicit overrides['bias']

Example fix

# before
build_optimizer(cfg, model, overrides={'bias': {'lr': 0.02}}, bias_lr_factor=2.0)
# after
build_optimizer(cfg, model, overrides={'bias': {'lr': 0.02}}, bias_lr_factor=None)
Defensive patterns

Strategy: validation

Validate before calling

if 'bias' in overrides:
    assert bias_lr_factor in (None, 1.0) and weight_decay_bias is None, "Conflicting overrides for 'bias'"

Prevention

When it happens

Trigger: Calling build_optimizer with both an overrides dict containing key 'bias' and a non-default bias_lr_factor or weight_decay_bias.

Common situations: Custom build_optimizer that adds overrides={'bias': {...}} while bias_lr_factor/weight_decay_bias are still active from config.

Related errors


AI-assisted analysis of facebookresearch/detectron2@a2f4a8771a (2026-08-27). Data as JSON: /api/errors/6b4a8d3882937a76. Report an issue: GitHub.