| # export HTTP_PROXY=http://sys-proxy-rd-relay.byted.org:8118 | |
| # export http_proxy=http://sys-proxy-rd-relay.byted.org:8118 | |
| # export https_proxy=http://sys-proxy-rd-relay.byted.org:8118 | |
| # export no_proxy="$no_proxy,.byteintl.net" | |
| # export HF_ENDPOINT=https://hf-mirror.com | |
| model=$1 | |
| output_dir=$2 | |
| cuda_id=$3 | |
| model_name=$(basename "$model") | |
| output_dir="results3/${model_name}/${output_dir}" | |
| # model=/mnt/bn/life-mllm/users/cxr/quantization/models/Qwen/Qwen2.5-14B | |
| # model_name=$(basename "$model") | |
| mkdir -p "$output_dir" # -p 确保父目录存在,无则创建 | |
| # 3. 定义「任务名→num_fewshot」映射(核心:新增/删除任务只改这里) | |
| declare -A task_fewshot=( | |
| ["winogrande"]="5" | |
| ["truthfulqa_mc1"]="0" | |
| ["arc_challenge"]="25" | |
| ["hellaswag"]="10" | |
| # ["mmlu"]="5" | |
| # ["triviaqa"]="0" | |
| ["piqa"]="0" | |
| ["boolq"]="0" | |
| ) | |
| # 4. 循环执行所有任务(重复逻辑一次性写死) | |
| for task in "${!task_fewshot[@]}"; do | |
| num_fewshot=${task_fewshot[$task]} | |
| output_path="${output_dir}/${task}.json" | |
| # 打印进度信息 | |
| echo -e "\n==================================================" | |
| echo "开始评估:任务=$task | 少样本数=$num_fewshot | 模型=$model_name" | |
| echo "输出路径:$output_path" | |
| echo "==================================================" | |
| # 核心评估命令(仅替换动态变量) | |
| CUDA_VISIBLE_DEVICES=2,3,6,7 \ | |
| accelerate launch --num_processes=4 --main_process_port 1445 \ | |
| lm_eval --model hf \ | |
| --model_args "pretrained=${model}" \ | |
| --tasks "$task" \ | |
| --device cuda \ | |
| --batch_size auto \ | |
| --num_fewshot "$num_fewshot" \ | |
| --output_path "$output_path" | |
| # 检查命令是否执行成功 | |
| if [ $? -eq 0 ]; then | |
| echo "任务 $task 评估完成!" | |
| else | |
| echo "警告:任务 $task 执行失败!" | |
| fi | |
| done | |