{"record":{"id":"a0d5c400f39a014e","repo":"Lightning-AI/pytorch-lightning","slug":"expected-a-precision-plugin-got-plugin","errorCode":null,"errorMessage":"Expected a precision plugin, got {plugin}","messagePattern":"Expected a precision plugin, got (.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/lightning/fabric/utilities/throughput.py","lineNumber":672,"sourceCode":"        return int(_TPU_FLOPS[chip])\n\n\ndef _plugin_to_compute_dtype(plugin: \"Precision\") -> torch.dtype:\n    # TODO: integrate this into the precision plugins\n    from lightning.fabric.plugins import (\n        BitsandbytesPrecision,\n        DeepSpeedPrecision,\n        DoublePrecision,\n        FSDPPrecision,\n        HalfPrecision,\n        MixedPrecision,\n        Precision,\n        TransformerEnginePrecision,\n        XLAPrecision,\n    )\n\n    if not isinstance(plugin, Precision):\n        raise RuntimeError(f\"Expected a precision plugin, got {plugin}\")\n    if isinstance(plugin, BitsandbytesPrecision):\n        return plugin.dtype\n    if isinstance(plugin, (HalfPrecision, MixedPrecision)):\n        return plugin._desired_input_dtype\n    if isinstance(plugin, DoublePrecision):\n        return torch.double\n    if isinstance(plugin, (XLAPrecision, DeepSpeedPrecision)):\n        return plugin._desired_dtype\n    if isinstance(plugin, TransformerEnginePrecision):\n        return torch.int8\n    if isinstance(plugin, FSDPPrecision):\n        return plugin.mixed_precision_config.reduce_dtype or torch.float32\n    if isinstance(plugin, Precision):\n        return torch.float32\n    raise NotImplementedError(plugin)\n\n\nT = TypeVar(\"T\", bound=float)","sourceCodeStart":654,"sourceCodeEnd":690,"githubUrl":"https://github.com/Lightning-AI/pytorch-lightning/blob/9fed5c27d2a62ff0efd6c3573599921d6ff67c14/src/lightning/fabric/utilities/throughput.py#L654-L690","documentation":"_plugin_to_compute_dtype() maps a Fabric Precision plugin to the torch dtype used for FLOP/throughput measurement. It raises RuntimeError when the passed plugin is not an instance of a lightning.pytorch.plugins.precision.Precision subclass.","triggerScenarios":"Passing a raw torch dtype, a string like 'bf16', a Trainer precision config dict, or None as the precision_plugin argument of ThroughputMonitor; also passing a strategy or accelerator object instead of the precision plugin.","commonSituations":"Constructing ThroughputMonitor(flops_deepspeed=..., precision_plugin='bf16') instead of a real plugin instance; grabbing fabric.strategy.precision on a version where the attribute is unset or returns a wrapper; mixing old lightning (pl) imports with new lightning.fabric APIs.","solutions":["Pass an actual Precision plugin instance, e.g. fabric.strategy.precision or MixedPrecision('bf16', device='cuda')","If using DeepSpeed FLOPs profiling, retrieve the plugin from the strategy: ThroughputMonitor(..., precision_plugin=fabric.strategy.precision)","Check you are importing from lightning.fabric.plugins.precision, not torch or another package"],"exampleFix":"# before\nmonitor = ThroughputMonitor(flops_deepspeed=profile, precision_plugin='bf16')\n\n# after\nfrom lightning.fabric.plugins import MixedPrecision\nmonitor = ThroughputMonitor(flops_deepspeed=profile, precision_plugin=MixedPrecision('bf16', device='cuda'))","handlingStrategy":"type-guard","validationCode":"from lightning.fabric.plugins import Precision\nplugin = fabric.strategy.precision\nassert isinstance(plugin, Precision), f\"not a precision plugin: {plugin!r}\"","typeGuard":"from lightning.fabric.plugins import Precision\nfrom typing import Any\n\ndef is_precision_plugin(p: Any) -> bool:\n    return isinstance(p, Precision)","tryCatchPattern":null,"preventionTips":["Always source the plugin from fabric.strategy.precision rather than constructing raw values","Never pass dtype objects or strings as precision_plugin"],"tags":["pytorch-lightning","fabric","precision","type-mismatch"],"backgroundTag":"wrong-argument-type","analyzedSha":"9fed5c27d2a62ff0efd6c3573599921d6ff67c14","analyzedAt":"2026-08-28T11:52:41.083Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}