ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Qwen2.5-Coder Instruct 模型评测指南:基于 qwencoder-eval 的完整评测流程与量化结果解读

Qwen2.5-Coder Instruct 模型评测指南:基于 qwencoder-eval 的完整评测流程与量化结果解读 Qwen2.5-Coder Instruct 模型评测指南基于 qwencoder-eval 的完整评测流程与量化结果解读【免费下载链接】Qwen3-CoderQwen3-Coder is the code version of Qwen3, the large language model series developed by Qwen team.项目地址: https://gitcode.com/GitHub_Trending/co/Qwen3-Coder本篇技术指南以 qwencoder-eval/instruct/README.md 为主体完整讲解如何在当前仓库中搭建评测环境、配置模型路径并一键运行覆盖 7 大代码评测基准的评估流水线同时逐表解读 Qwen2.5-Coder-32B-Instruct 及其 AWQ / GPTQ / GGUF 各量化版本在 Python、多语言、代码编辑与 SQL 任务上的官方评测数据。读者阅读后将掌握从环境搭建、单命令评测到结果汇总的完整实战能力并能读懂量化部署对代码能力的影响。一、评测框架总览qwencoder-eval/instruct是面向指令微调Instruct模型的评测目录其核心入口是 evaluate.sh。该脚本一次性串联起 7 个独立的评测子模块覆盖代码生成、补全、编辑、推理与 SQL 五类核心能力子模块目录评测内容核心指标eval_plusHumanEval / HumanEval / MBPP / MBPPpass1livecode_benchLiveCodeBench2407–2411 时段pass1MultiPL-E8 种语言的 HumanEval 多语言版本pass1BigCodeBenchBCB-inst-full / BCB-inst-hardpass1aiderAider 代码编辑whole / diffpass_ratecruxevalCRUXEval 输入/输出预测含 CoT准确率eval-dev-quality开发质量综合评测score每个子模块都自带test.sh与requirements.txt评测框架通过统一的参数约定模型目录、张量并行数、输出目录实现一键串联、分目录落盘。二、环境搭建创建评测专用 Conda 环境原文档要求为每个评测基准创建独立的 Conda 环境避免依赖冲突benchmarkeval_plus conda create -n eval_${benchmark}_env python3.9 conda activate eval_${benchmark}_env cd ${benchmark} pip install -r requirements.txt要点说明以eval_${benchmark}_env命名环境便于在多个基准之间切换而互不污染使用Python 3.9作为统一基础版本每个子模块目录下的requirements.txt各不相同例如 eval_plus/requirements.txt 主要声明 EvalPlus 依赖BigCodeBench/requirements.txt 则面向 BigCodeBench需要逐个安装除 Python 依赖外部分模块还有系统级依赖如 BigCodeBench/test.sh 会将./bin加入 PATH 以调用其自带的评测工具链multipl_e/chat/test.sh 会执行npm install -g multiple_metrics/typescript-5.5.4.tgz安装 TypeScript 运行环境用于 TS 语言评测。文档同时提示所有评测环境的安装步骤统一收敛在test.sh中即每个子模块的test.sh头部都包含各自环境的 PATH 与环境变量配置是理解各模块运行前提的入口。三、运行评测参数说明与一键执行3.1 修改模型路径运行前必须将模型路径改为本机或云存储中的实际位置。模型路径同时会传递给 evaluate.sh 以及各子模块的test.sh最终作为MODEL_DIR进入推理脚本vLLM 加载与 API 服务名basename ${MODEL}。3.2 执行评估脚本EVAL_SCRIPT./evaluate.sh MODEL_DIR/path/to/Qwen2.5-coder-Instruct/ OUTPUT_DIR/path/to/results/ TP2 bash ${EVAL_SCRIPT} ${MODEL_DIR} ${OUTPUT_DIR} ${TP}三个位置参数的语义结合 evaluate.sh 源码可确认如下参数含义默认值MODEL_DIR待评测模型的权重目录./pretrained_models/OUTPUT_DIR全部评测结果输出根目录./results/TPvLLM 推理的张量并行tensor-parallel度2脚本启动时会先mkdir -p创建evalplus、livecodebench、MultiPL-E、bigcodebench等子目录随后按固定顺序依次进入 7 个子模块执行cd ${ROOT_DIR}/eval-dev-quality bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/eval-dev-quality cd ${ROOT_DIR}/aider bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/aider cd ${ROOT_DIR}/multipl_e/chat bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/MultiPL-E cd ${ROOT_DIR}/eval_plus bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/evalplus cd ${ROOT_DIR}/BigCodeBench bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/bigcodebench cd ${ROOT_DIR}/cruxeval bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/cruxeval cd ${ROOT_DIR}/livecode_bench bash test.sh ${MODEL_DIR} ${TP} ${OUTPUT_DIR}/livecodebench3.3 各子模块的执行机制为便于排查与定制下面结合源码说明各模块的实际运行方式EvalPlusPython 代码生成eval_plus/test.sh 以qwen2模型类型、chat尺寸、temperature 0、n_samples 1的贪婪解码配置先后在humaneval与mbpp两个数据集上执行生成随后调用evalplus.sanitize清洗样本再分别对原始样本与清洗后样本运行evalplus.evaluate输出raw_*_results.txt与*_results.txt后者即 README 结果表中 HE / HE / MBPP / MBPP 的数值来源。LiveCodeBenchlivecode_bench/test.sh 通过python -m lcb_runner.runner.main以codegeneration场景执行评测再用lcb_runner.evaluation.compute_scores以--start_date 2024-05-01为起点计算得分最终汇总到log.json——对应结果表中的 LCB2407-2411列。MultiPL-E多语言multipl_e/chat/test.sh 固定语言列表python cs cpp java php ts sh js逐语言调用 evaluate_humaneval.sh以chat_template对话格式、model_max_length 1024、vLLM 后端执行每个语言单独输出generations_${lg}.jsonl与results_${lg}.jsonl。BigCodeBenchBigCodeBench/test.sh 定义run_benchmark函数以--greedy --bs 1 --temperature 0 --n_samples 1 --backend vllm依次跑complete hard、complete full、instruct hard、instruct full四组配置每组经sanitize.py --calibrate校准后再evaluate.py打分脚本末尾还会清理残留进程与/tmp临时文件。Aider代码编辑aider/test.sh 先以vllm serve启动 OpenAI 兼容 API--served-model-name、--max-model-len 4096、--api-key token-abc123轮询日志中的Uvicorn running on等待服务就绪再调用benchmark/benchmark.py以--edit-format whole执行编辑评测最后用awk从日志提取pass_rate_1、pass_rate_2、percent_cases_well_formed并写入results.json。CRUXEval代码推理cruxeval/test.sh 通过关联数组定义input_prediction与output_prediction两个任务每个任务分别跑普通模式与--cot链式思考模式共 4 组先inference/main.py生成再evaluation/evaluate_generations.py评分。eval-dev-quality开发质量eval-dev-quality/test.sh 同样先vllm serve拉起服务随后执行make install与eval-dev-quality evaluate从评测日志提取score写入results.json。3.4 结果汇总各子模块结果落盘后可用 show_results.py 汇总它以results_path为参数从evalplus/humaneval_results.txt、evalplus/mbpp_results.txt解析 EvalPlus 的 pass1从livecodebench/results.json读取 pass1从MultiPL-E/results_{lg}.jsonl收集 8 种语言得分最终输出包含平均值的一行式表格并写入all_results.txt。四、量化评测结果解读README 的主体是 Qwen2.5-Coder-32B-Instruct 及其 11 种量化版本AWQ、GPTQ-Int8/Int4、GGUF Q8_0 / Q6_K / Q5_K_M / Q5_0 / Q4_K_M / Q4_0 / Q3_K_M / Q2_K在三大类基准上的完整评测数据以下为原始数据全表。4.1 Python 基准涵盖 HumanEvalHE、HumanEvalHE、MBPP、MBPP、BigCodeBench instruct 全集/困难集BCB-inst-full / BCB-inst-hard与 LiveCodeBench 2407–2411 时段HEHEMBPPMBPPBCB-inst-fullBCB-inst-hardLCB (2407-2411)Qwen2.5-Coder-32B-Instruct92.787.290.275.149.627.031.4Qwen2.5-Coder-32B-AWQ92.184.187.875.148.927.031.7Qwen2.5-Coder-32B-Instruct-GPTQ-Int892.185.490.576.548.626.430.7Qwen2.5-Coder-32B-Instruct-GPTQ-Int489.683.587.075.949.727.030.3Qwen2.5-Coder-32B-Instruct-GGUF-Q8_090.986.089.476.247.723.631.1Qwen2.5-Coder-32B-Instruct-GGUF-Q6_K90.286.089.776.248.325.731.6Qwen2.5-Coder-32B-Instruct-GGUF-Q5_K_M90.985.489.275.748.825.731.4Qwen2.5-Coder-32B-Instruct-GGUF-Q5_090.986.088.974.948.423.630.7Qwen2.5-Coder-32B-Instruct-GGUF-Q4_K_M89.685.489.475.948.924.329.9Qwen2.5-Coder-32B-Instruct-GGUF-Q4_089.685.490.277.848.225.732.6Qwen2.5-Coder-32B-Instruct-GGUF-Q3_K_M91.586.690.776.748.323.632.0Qwen2.5-Coder-32B-Instruct-GGUF-Q2_K92.784.887.374.347.623.028.54.2 多语言基准MultiPL-E 在 Python、Java、C、C#、TypeScript、JavaScript、PHP、Bash 八种语言上的 pass1 及平均值PythonJavaCC#TSJSPHPBashAvg.Qwen2.5-Coder-32B-Instruct92.780.479.582.986.885.778.948.179.4Qwen2.5-Coder-32B-AWQ90.283.580.782.385.585.179.549.479.5Qwen2.5-Coder-32B-Instruct-GPTQ-Int890.984.281.480.485.587.679.549.479.8Qwen2.5-Coder-32B-Instruct-GPTQ-Int492.183.582.680.484.386.378.350.079.7Qwen2.5-Coder-32B-Instruct-GGUF-Q8_090.284.882.081.085.587.680.149.480.1Qwen2.5-Coder-32B-Instruct-GGUF-Q6_K90.983.582.081.684.987.080.748.779.9Qwen2.5-Coder-32B-Instruct-GGUF-Q5_K_M90.283.582.681.085.587.079.548.779.8Qwen2.5-Coder-32B-Instruct-GGUF-Q5_090.284.882.081.685.587.080.148.179.9Qwen2.5-Coder-32B-Instruct-GGUF-Q4_K_M90.284.881.482.385.586.380.150.680.2Qwen2.5-Coder-32B-Instruct-GGUF-Q4_088.482.980.181.086.885.778.348.178.9Qwen2.5-Coder-32B-Instruct-GGUF-Q3_K_M90.984.285.182.384.987.080.149.480.5Qwen2.5-Coder-32B-Instruct-GGUF-Q2_K90.281.082.681.683.684.580.148.779.14.3 代码编辑、代码推理与 SQL 基准Aiderwhole / diff 两种编辑格式、CRUXEval输入/输出预测均带 CoT、Spider 与 BirdText-to-SQLAider (whole)Aider (diff)CRUXEval-Input-CoTCRUXEval-Output-CoTSpiderBirdQwen2.5-Coder-32B-Instruct73.771.475.283.485.158.4Qwen2.5-Coder-32B-AWQ73.767.775.183.183.657.3Qwen2.5-Coder-32B-Instruct-GPTQ-Int874.473.775.883.684.858.1Qwen2.5-Coder-32B-Instruct-GPTQ-Int472.267.775.883.585.057.6Qwen2.5-Coder-32B-Instruct-GGUF-Q8_072.969.980.583.884.557.9Qwen2.5-Coder-32B-Instruct-GGUF-Q6_K72.973.778.183.584.758.1Qwen2.5-Coder-32B-Instruct-GGUF-Q5_K_M74.469.978.484.685.357.7Qwen2.5-Coder-32B-Instruct-GGUF-Q5_071.472.280.683.284.957.4Qwen2.5-Coder-32B-Instruct-GGUF-Q4_K_M75.269.279.083.584.557.5Qwen2.5-Coder-32B-Instruct-GGUF-Q4_074.471.478.584.084.757.2Qwen2.5-Coder-32B-Instruct-GGUF-Q3_K_M72.968.478.883.984.457.4Qwen2.5-Coder-32B-Instruct-GGUF-Q2_K69.961.775.581.183.456.14.4 数据解读要点量化整体损失可控从全表看各量化版本与原版之间的差距普遍在 1~3 个百分点以内多数 GGUF 档位在部分指标上甚至略高于原版如 GGUF-Q4_0 的 MBPP 为 77.8、GGUF-Q3_K_M 的 Java 为 85.1说明该系列模型在 4bit 至 8bit 量化下仍能保持接近原始的代码能力极低比特存在明显退化GGUF-Q2_K 在 Aider-diff61.7、CRUXEval-Input-CoT75.5、LCB28.5等指标上普遍垫底代码编辑与推理类任务对量化精度更敏感部署时应谨慎选用 2bit 档位任务敏感度不同Python 基础生成HE 系列与多语言平均分受量化影响较小而 Aider-diff 这种依赖精细格式编辑的任务在低比特下波动最大方法间差异AWQ 与原版在多数指标上非常接近GPTQ-Int8 在 Aider 类任务上表现突出选择量化方案时应结合部署框架支持度vLLM、llama.cpp 等与实际目标指标综合决定。五、评测结果在仓库中的落盘位置README 中的量化评测数据可在仓库内找到对应的完整中间产物。基础版模型的输出位于 qwencoder-eval/base/eval_cache含 EvalPlus 数据集缓存而指令模型的评测结果目录可按OUTPUT_DIR参数指定。仓库中已有 qwencoder-eval/base/outptus 下 qwen2.5-coder 1.5b-base / 7b-base 的 bigcodebench、cruxeval、evalplus、multipl-e 子目录及各模型all_results.json汇总文件可作为自跑评测结果的结构参照结合 show_results.py 的解析逻辑读取humaneval_results.txt、mbpp_results.txt、results.json、results_{lg}.jsonl等可以快速复用同一套结果组织方式。六、常见问题与使用提示网络与镜像多个子模块脚本默认设置了HF_ENDPOINThttps://hf-mirror.com或http://hf-mirror.com以加速 Hugging Face 资源下载HF_DATASETS_OFFLINE1、HF_EVALUATE_OFFLINE1用于离线模式需保证数据集已预先缓存如 eval-dev-quality/test.sh 中的HF_HOME/hf_offline/huggingface。vLLM 服务与清理aider、eval-dev-quality 两个模块会拉起本地 OpenAI 兼容服务默认0.0.0.0:8000、token-abc123脚本通过轮询Uvicorn running on判断就绪评测结束后以记录在jobs.txt中的 PID 关闭服务若残留进程可参照 BigCodeBench 脚本中的清理方式处理。TP 参数的硬件前提TP张量并行度需要与可用 GPU 数量匹配README 示例使用TP2显存不足时建议先降低 TP 或选用量化版本评测。结果复现边界上述三张结果表为 README 记录的官方量化评测数据使用固定数据集与脚本版本得出实际复跑时分数可能因 vLLM、评测包版本及硬件环境产生小幅波动应以本次仓库内脚本与数据版本为准。通过 qwencoder-eval/instruct/evaluate.sh 的单一入口配合各子模块 test.sh 的自洽环境配置开发者可以低成本地在本地完整复现 Qwen2.5-Coder 系列 Instruct 模型的全部评测指标并借助 show_results.py 快速生成汇总结果为量化选型与部署决策提供可量化的依据。【免费下载链接】Qwen3-CoderQwen3-Coder is the code version of Qwen3, the large language model series developed by Qwen team.项目地址: https://gitcode.com/GitHub_Trending/co/Qwen3-Coder创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表