From 01f5f10122fc092acd170953bbb60869138175ba Mon Sep 17 00:00:00 2001 From: Pyry Takala Date: Thu, 20 Nov 2025 02:24:46 +0000 Subject: [PATCH] Fix find_last_step crash on checkpoint files with extra underscores --- nanochat/checkpoint_manager.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/nanochat/checkpoint_manager.py b/nanochat/checkpoint_manager.py index 63f257f..4046aff 100644 --- a/nanochat/checkpoint_manager.py +++ b/nanochat/checkpoint_manager.py @@ -118,7 +118,16 @@ def find_last_step(checkpoint_dir): checkpoint_files = glob.glob(os.path.join(checkpoint_dir, "model_*.pt")) if not checkpoint_files: raise FileNotFoundError(f"No checkpoints found in {checkpoint_dir}") - last_step = int(max(os.path.basename(f).split("_")[-1].split(".")[0] for f in checkpoint_files)) + # Use regex to match only valid checkpoint files (model_.pt) and ignore malformed files + # This prevents crashes when files like model_000200_backup.pt exist in the directory + steps = [] + for f in checkpoint_files: + match = re.match(r"model_(\d+)\.pt$", os.path.basename(f)) + if match: + steps.append(int(match.group(1))) + if not steps: + raise ValueError(f"No valid checkpoint files found in {checkpoint_dir}") + last_step = max(steps) return last_step # -----------------------------------------------------------------------------