From 0a22e1cd109fe3db3cbebe46eedac0d1fe0d7045 Mon Sep 17 00:00:00 2001 From: JasonOA888 Date: Sat, 4 Apr 2026 23:04:45 +0800 Subject: [PATCH] fix: prevent crash when args.adapter_file is None in sft_trainer Add defensive fallback to 'adapters.safetensors' when adapter_file is None, and ensure parent directory exists before saving. Closes #908 --- mlx_vlm/trainer/sft_trainer.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/mlx_vlm/trainer/sft_trainer.py b/mlx_vlm/trainer/sft_trainer.py index 7beed47ce..3e3615f85 100644 --- a/mlx_vlm/trainer/sft_trainer.py +++ b/mlx_vlm/trainer/sft_trainer.py @@ -468,20 +468,24 @@ def step(batch, prev_grad, do_update): # Save checkpoint if it % args.steps_per_save == 0 and rank == 0: - save_adapter(model, args.adapter_file) + adapter_file = args.adapter_file or "adapters.safetensors" + Path(adapter_file).parent.mkdir(parents=True, exist_ok=True) + save_adapter(model, adapter_file) checkpoint = ( - Path(args.adapter_file).parent / f"{it:07d}_adapters.safetensors" + Path(adapter_file).parent / f"{it:07d}_adapters.safetensors" ) save_adapter(model, checkpoint) print( f"{Colors.OKBLUE}Iter {it}: Saved adapter weights to " - f"{args.adapter_file} and {checkpoint}.{Colors.ENDC}", + f"{adapter_file} and {checkpoint}.{Colors.ENDC}", flush=True, ) # Save final weights if rank == 0: - save_adapter(model, args.adapter_file) + adapter_file = args.adapter_file or "adapters.safetensors" + Path(adapter_file).parent.mkdir(parents=True, exist_ok=True) + save_adapter(model, adapter_file) print( - f"{Colors.OKGREEN}Saved final adapter weights to {args.adapter_file}.{Colors.ENDC}" + f"{Colors.OKGREEN}Saved final adapter weights to {adapter_file}.{Colors.ENDC}" )