2dogey's picture
Upload folder using huggingface_hub
8918ac7 verified
from typing import Dict, Any
import os
import json
import sys
def build_command_list(args: Dict[str, Any]) -> list:
"""Build command list for training script."""
cmd = ["python", "src/train.py"]
for key, value in args.items():
if value is None or value == "":
continue
if isinstance(value, bool):
if value:
cmd.append(f"--{key}")
elif key == "lora_target_modules":
if value:
cmd.append(f"--{key}")
cmd.extend(value)
else:
cmd.extend([f"--{key}", str(value)])
return cmd
def preview_command(args: Dict[str, Any]) -> str:
"""Generate preview of training command."""
cmd = build_command_list(args)
return " ".join(cmd)
def save_arguments(args: Dict[str, Any], output_dir: str):
"""Save training arguments to file."""
os.makedirs(output_dir, exist_ok=True)
args_file = os.path.join(output_dir, "training_args.json")
with open(args_file, 'w') as f:
json.dump(args, f, indent=2)
def build_eval_command_list(args: Dict[str, Any]) -> list:
"""构建评估脚本的命令行列表"""
cmd = ["python", "src/eval.py"]
for key, value in args.items():
if value is None or value == "":
continue
if isinstance(value, bool):
if value:
cmd.append(f"--{key}")
else:
cmd.extend([f"--{key}", str(value)])
return cmd
def preview_eval_command(args: Dict[str, Any]) -> str:
"""生成评估命令的预览"""
cmd = build_eval_command_list(args)
return " ".join(cmd)
def build_predict_command_list(args: Dict[str, Any], is_batch: bool = False) -> list:
"""构建预测脚本的命令行列表"""
# 根据是否为批量预测选择不同的脚本
script = "src/predict_batch.py" if is_batch else "src/predict.py"
cmd = ["python", script]
for key, value in args.items():
if value is None or value == "":
continue
if isinstance(value, bool):
if value:
cmd.append(f"--{key}")
elif isinstance(value, list):
if value:
cmd.append(f"--{key}")
cmd.extend([str(v) for v in value])
else:
cmd.extend([f"--{key}", str(value)])
return cmd
def preview_predict_command(args: Dict[str, Any], is_batch: bool = False) -> str:
"""生成预测命令的预览"""
cmd = build_predict_command_list(args, is_batch)
return " ".join(cmd)