diff --git a/nodes/selva_lora_trainer.py b/nodes/selva_lora_trainer.py index 2f875f3..dddbf0f 100644 --- a/nodes/selva_lora_trainer.py +++ b/nodes/selva_lora_trainer.py @@ -540,7 +540,13 @@ class SelvaLoraTrainer: pbar_train.update(1) # Save inference adapter (state_dict + meta only — SelvaLoraLoader compatible) + # Increment filename if a previous final already exists (resume case) final_path = output_dir / "adapter_final.pt" + if final_path.exists(): + i = 1 + while (output_dir / f"adapter_final_{i:03d}.pt").exists(): + i += 1 + final_path = output_dir / f"adapter_final_{i:03d}.pt" torch.save({"state_dict": get_lora_state_dict(generator), "meta": meta}, final_path) (output_dir / "meta.json").write_text(json.dumps(meta, indent=2)) print(f"\n[LoRA Trainer] Done. Adapter saved to {final_path}", flush=True) diff --git a/train_lora.py b/train_lora.py index fa9e8d4..4a5595e 100644 --- a/train_lora.py +++ b/train_lora.py @@ -382,7 +382,13 @@ def main(): print(f"[LoRA] Saved {ckpt_path}") # Save final adapter with embedded metadata + # Increment filename if a previous final already exists (resume case) final = output_dir / "adapter_final.pt" + if final.exists(): + i = 1 + while (output_dir / f"adapter_final_{i:03d}.pt").exists(): + i += 1 + final = output_dir / f"adapter_final_{i:03d}.pt" meta = { "variant": args.variant, "rank": args.rank,