# lora sft on qwen2.5-0.5b-instruct. writes runs//model + training_history.json. import argparse from pathlib import Path from cleanup.config import load_train_config from cleanup.train.trainer import train def main() -> None: parser = argparse.ArgumentParser() parser.add_argument("--config", default="configs/train.yaml") parser.add_argument("--runs-dir", default="runs") parser.add_argument("--run-id", required=True) parser.add_argument("--lr", type=float, default=None) parser.add_argument("--epochs", type=int, default=None) parser.add_argument("--smoke", action="store_true", help="tiny cpu validation run") args = parser.parse_args() cfg = load_train_config(args.config) run_dir = Path(args.runs_dir) / args.run_id summary = train( cfg, run_dir, smoke=args.smoke, epochs_override=args.epochs, lr_override=args.lr, ) print(summary) print(f"next: make evaluate RUN_ID={args.run_id}") if __name__ == "__main__": main()