Lightning-AI/pytorch-lightning · error · RuntimeError
Experiment is not initialized
Error message
Experiment is not initialized
What it means
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.
Source
Thrown at src/lightning/pytorch/loggers/litlogger.py:230
self._version = timestamp.replace(":", "-").replace("+00:00", "Z")
self._experiment = litlogger.Experiment(
name=self._experiment_name,
teamspace=self._teamspace,
metadata={k: str(v) for k, v in self._metadata.items()},
store_step=True,
store_created_at=True,
log_dir=self.log_dir,
save_logs=self._save_logs,
)
self._experiment.print_url()
return self._experiment
def _require_experiment(self) -> "Experiment":
experiment = self.experiment
if experiment is None:
raise RuntimeError("Experiment is not initialized")
return experiment
@property
@rank_zero_only
def url(self) -> str:
return self._require_experiment().url
# ──────────────────────────────────────────────────────────────────────────────
# Override methods from Logger
# ──────────────────────────────────────────────────────────────────────────────
@override
@rank_zero_only
def log_metrics(self, metrics: Mapping[str, float], step: Optional[int] = None) -> None:
assert rank_zero_only.rank == 0, "experiment tried to log from global_rank != 0"
# Ensure experiment is initialized
experiment = self._require_experiment()View on GitHub (pinned to 9fed5c27d2)
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
Example fix
// before logger = LitLogger(...) print(logger.url) # RuntimeError // after logger = LitLogger(...) _ = logger.experiment # force init print(logger.url)
Defensive patterns
Strategy: validation
Validate before calling
exp = logger.experiment
if exp is None:
raise RuntimeError("LitLogger experiment failed to initialize") Type guard
def logger_ready(logger) -> bool:
return logger.experiment is not None Try / catch
try:
logger.log_metrics(metrics, step=step)
except RuntimeError as e:
if "not initialized" in str(e):
_ = logger.experiment # retry init once
logger.log_metrics(metrics, step=step)
else:
raise Prevention
- Touch logger.experiment once at startup to surface init errors early
- Check credentials/connectivity before the run begins
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- LitLogger does not support `log_graph`
- `synchronous` requires mlflow>=2.8.0
- NeptuneLogger is no longer supported. Neptune has been sunse
- Providing log_model={log_model} and offline={offline} is an
- Starting from v1.9.0, `tensorboardX` has been removed as a d
AI-assisted analysis of Lightning-AI/pytorch-lightning@9fed5c27d2 (2026-08-28).
Data as JSON: /api/errors/361aed023e091309.
Report an issue: GitHub.