From ebf36783b82f334503fda5337d885404d21861de Mon Sep 17 00:00:00 2001 From: 100apps Date: Tue, 5 May 2026 21:34:10 +0800 Subject: [PATCH] =?UTF-8?q?fix(eval=5Ftoolcall):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E8=B7=AF=E5=BE=84=E8=A7=A3=E6=9E=90=E4=B8=8E?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增_resolve_path函数以支持绝对路径和相对路径解析 - 在init_model中改用_resolve_path处理load_from和save_dir路径 - 修正模型权重文件路径拼接方式,避免路径错误 - 保证模型加载时使用绝对路径,提高加载稳定性 - 使代码结构更清晰,增强路径处理的健壮性 --- scripts/eval_toolcall.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/scripts/eval_toolcall.py b/scripts/eval_toolcall.py index da078b4..c4a07b9 100644 --- a/scripts/eval_toolcall.py +++ b/scripts/eval_toolcall.py @@ -54,15 +54,27 @@ TEST_CASES = [ ] +def _resolve_path(path): + if os.path.isabs(path): + return path + abs_path = os.path.abspath(path) + if os.path.isdir(abs_path): + return abs_path + script_dir = os.path.dirname(os.path.abspath(__file__)) + return os.path.abspath(os.path.join(script_dir, path)) + + def init_model(args): - tokenizer = AutoTokenizer.from_pretrained(args.load_from) + load_path = _resolve_path(args.load_from) + tokenizer = AutoTokenizer.from_pretrained(load_path) if 'model' in args.load_from: model = MiniMindForCausalLM(MiniMindConfig(hidden_size=args.hidden_size, num_hidden_layers=args.num_hidden_layers, use_moe=bool(args.use_moe))) moe_suffix = '_moe' if args.use_moe else '' - ckp = f'./{args.save_dir}/{args.weight}_{args.hidden_size}{moe_suffix}.pth' + save_dir = _resolve_path(args.save_dir) + ckp = os.path.join(save_dir, f'{args.weight}_{args.hidden_size}{moe_suffix}.pth') model.load_state_dict(torch.load(ckp, map_location=args.device), strict=True) else: - model = AutoModelForCausalLM.from_pretrained(args.load_from, trust_remote_code=True) + model = AutoModelForCausalLM.from_pretrained(load_path, trust_remote_code=True) get_model_params(model, model.config) return model.half().eval().to(args.device), tokenizer