{"record":{"id":"361aed023e091309","repo":"Lightning-AI/pytorch-lightning","slug":"experiment-is-not-initialized","errorCode":null,"errorMessage":"Experiment is not initialized","messagePattern":"Experiment is not initialized","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/lightning/pytorch/loggers/litlogger.py","lineNumber":230,"sourceCode":"            self._version = timestamp.replace(\":\", \"-\").replace(\"+00:00\", \"Z\")\n\n        self._experiment = litlogger.Experiment(\n            name=self._experiment_name,\n            teamspace=self._teamspace,\n            metadata={k: str(v) for k, v in self._metadata.items()},\n            store_step=True,\n            store_created_at=True,\n            log_dir=self.log_dir,\n            save_logs=self._save_logs,\n        )\n        self._experiment.print_url()\n\n        return self._experiment\n\n    def _require_experiment(self) -> \"Experiment\":\n        experiment = self.experiment\n        if experiment is None:\n            raise RuntimeError(\"Experiment is not initialized\")\n        return experiment\n\n    @property\n    @rank_zero_only\n    def url(self) -> str:\n        return self._require_experiment().url\n\n    # ──────────────────────────────────────────────────────────────────────────────\n    # Override methods from Logger\n    # ──────────────────────────────────────────────────────────────────────────────\n\n    @override\n    @rank_zero_only\n    def log_metrics(self, metrics: Mapping[str, float], step: Optional[int] = None) -> None:\n        assert rank_zero_only.rank == 0, \"experiment tried to log from global_rank != 0\"\n\n        # Ensure experiment is initialized\n        experiment = self._require_experiment()","sourceCodeStart":212,"sourceCodeEnd":248,"githubUrl":"https://github.com/Lightning-AI/pytorch-lightning/blob/9fed5c27d2a62ff0efd6c3573599921d6ff67c14/src/lightning/pytorch/loggers/litlogger.py#L212-L248","documentation":"LitLogger (the AI experiment logger) lazily initializes its Experiment object; _require_experiment is called by url, log_metrics, log_hyperparams, log_metadata, log_model and log_model_artifact and raises if self.experiment is still None, i.e. initialization never succeeded/was never triggered.","triggerScenarios":"Accessing logger.url or calling logger.log_metrics(...) before the experiment was created — e.g. before the logger's experiment property ran its rank-zero initialization, or after a failed initialization left _experiment as None.","commonSituations":"Using the logger outside a Trainer where lazy init never happens, calling logging methods on rank!=0 processes after init only ran on rank 0, or a network/credential failure during experiment creation swallowed earlier.","solutions":["Touch logger.experiment once (on rank 0) before using url/log methods to force initialization","Ensure you're inside a training run or explicit initialization context so setup occurs","Inspect earlier logs for a failed experiment-init error (auth/network) and fix that root cause"],"exampleFix":"// before\nlogger = LitLogger(...)\nprint(logger.url)  # RuntimeError\n// after\nlogger = LitLogger(...)\n_ = logger.experiment  # force init\nprint(logger.url)","handlingStrategy":"validation","validationCode":"exp = logger.experiment\nif exp is None:\n    raise RuntimeError(\"LitLogger experiment failed to initialize\")","typeGuard":"def logger_ready(logger) -> bool:\n    return logger.experiment is not None","tryCatchPattern":"try:\n    logger.log_metrics(metrics, step=step)\nexcept RuntimeError as e:\n    if \"not initialized\" in str(e):\n        _ = logger.experiment  # retry init once\n        logger.log_metrics(metrics, step=step)\n    else:\n        raise","preventionTips":["Touch logger.experiment once at startup to surface init errors early","Check credentials/connectivity before the run begins"],"tags":["litlogger","lightning","logger","lazy-initialization"],"backgroundTag":"uninitialized-resource-access","analyzedSha":"9fed5c27d2a62ff0efd6c3573599921d6ff67c14","analyzedAt":"2026-08-28T11:52:41.083Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}