{"record":{"id":"423a368789cf34e2","repo":"Lightning-AI/pytorch-lightning","slug":"skipping-k-parameter-because-it-is-not-possibl","errorCode":null,"errorMessage":"Skipping '{k}' parameter because it is not possible to safely dump to YAML.","messagePattern":"Skipping '(.+?)' parameter because it is not possible to safely dump to YAML\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"src/lightning/pytorch/core/saving.py","lineNumber":377,"sourceCode":"        hparams = apply_to_collection(hparams, DictConfig, OmegaConf.to_container, resolve=True)\n        with fs.open(config_yaml, \"w\", encoding=\"utf-8\") as fp:\n            try:\n                OmegaConf.save(hparams, fp)\n                return\n            except (UnsupportedValueType, ValidationError):\n                pass\n\n    if not isinstance(hparams, dict):\n        raise TypeError(\"hparams must be dictionary\")\n\n    hparams_allowed = {}\n    # drop parameters which contain some strange datatypes as fsspec\n    for k, v in hparams.items():\n        try:\n            v = v.name if isinstance(v, Enum) else v\n            yaml.dump(v)\n        except (TypeError, ValueError):\n            warn(f\"Skipping '{k}' parameter because it is not possible to safely dump to YAML.\")\n            hparams[k] = type(v).__name__\n        else:\n            hparams_allowed[k] = v\n\n    # saving the standard way\n    with fs.open(config_yaml, \"w\", newline=\"\") as fp:\n        yaml.dump(hparams_allowed, fp)\n\n\ndef convert(val: str) -> Union[int, float, bool, str]:\n    try:\n        return ast.literal_eval(val)\n    except (ValueError, SyntaxError) as err:\n        log.debug(err)\n        return val\n","sourceCodeStart":359,"sourceCodeEnd":393,"githubUrl":"https://github.com/Lightning-AI/pytorch-lightning/blob/9fed5c27d2a62ff0efd6c3573599921d6ff67c14/src/lightning/pytorch/core/saving.py#L359-L393","documentation":"When save_hparams_to_yaml dumps hyperparameters, any value that yaml.dump cannot serialize (raises TypeError/ValueError, e.g. fsspec paths, arbitrary objects) is skipped and replaced by its type name, with this warning.","triggerScenarios":"save_hyperparameters capturing non-primitive args (Path-likes from fsspec, custom classes, lambdas) and then checkpoint saving or log_hyperparams writing the YAML config.","commonSituations":"Passing open_file objects, distributed samplers, or model instances as hparams; environment-dependent objects stored in __init__ signature.","solutions":["Exclude non-serializable args: save_hyperparameters(ignore=['sampler'])","Convert to primitives in __init__ before saving (str(path), dict(config))","Accept the warning — the value is replaced by its type name in YAML only"],"exampleFix":"# before\ndef __init__(self, data_path: AbstractFileSystem, lr=1e-3):\n    super().__init__()\n    self.save_hyperparameters()  # data_path not YAML-safe\n# after\ndef __init__(self, data_path: str, lr=1e-3):\n    super().__init__()\n    self.save_hyperparameters()","handlingStrategy":"type-guard","validationCode":"import yaml\nbad = [k for k, v in hparams.items() if _fails(yaml.safe_dump, v)]\nassert not bad, f'non-serializable hparams: {bad}'","typeGuard":"def is_yaml_safe(v) -> bool:\n    import yaml\n    try:\n        yaml.safe_dump(v)\n        return True\n    except (TypeError, ValueError):\n        return False","tryCatchPattern":null,"preventionTips":["Keep hparams to primitives/str/int/float/list/dict","Use save_hyperparameters(ignore=[...]) for complex objects"],"tags":["hyperparameters","yaml-serialization","saving","lightning"],"backgroundTag":"yaml-serialization-failed","analyzedSha":"9fed5c27d2a62ff0efd6c3573599921d6ff67c14","analyzedAt":"2026-08-28T11:52:41.083Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}