exo 如何用 exo_eval 跑 GPQA Diamond、MMLU Pro、AIME 等质量评测并读取结果?
exo 如何用 exo_eval 跑 GPQA Diamond、MMLU Pro、AIME 等质量评测并读取结果【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo如果你已经用 exo 把模型部署在本地集群上想用一个标准化的基准来量化它的答题质量——而不是只看聊天效果——可以用 exo 自带的评测脚本 bench/exo_eval.py。该脚本针对 exo 的 OpenAI 兼容 API 发起评测请求其提示词、温度设置与答案抽取方式对齐 Artificial Analysis 的评测方法。前提是节点已通过uv run exo运行起来见 README 中 benchmarking 一节的前置要求API 与 dashboard 在http://localhost:52415/。exo_eval 支持哪些评测任务脚本内置 6 个任务数据集在运行时通过datasets.load_dataset从 HuggingFace 加载定义见 bench/exo_eval.py 中的BENCHMARKS任务名数据集split规模与题型gpqa_diamondIdavidrein/gpqaconfiggpqa_diamondtrain198 题4 选 1 单选mmlu_proTIGER-Lab/MMLU-Protest12K 题10 选 1 单选aime_2024HuggingFaceH4/aime_2024train30 题整数答案aime_2025MathArena/aime_2025train30 题整数答案humanevalopenai/openai_humanevaltest164 题代码生成 pass1livecodebenchlivecodebench/code_generation_litetest880 题代码生成 pass1本文聚焦标题中的gpqa_diamond、mmlu_pro、aime_2024/aime_2025它们都是选择题或整数答案题评分只靠答案抽取不执行任何模型生成的代码。前置条件exo 集群在运行README 明确要求“Nodes should be running withuv run exobefore benchmarking”。脚本默认连localhost:52415也可用--host/--port或环境变量EXO_HOST/EXO_PORT指向其他机器上的 master这些公共参数定义在 tools/src/exo_tools/harness.py。脚本依赖bench/pyproject.toml 声明 Python3.13依赖包括datasets、math-verifyAIME 答案校验的兜底解析、human-eval、lm-eval等。HuggingFace 登录视数据集而定加载数据集时如果遇到需要授权的gated数据集脚本会报错并提示执行huggingface-cli login。模型可解析--model必填接受模型 short id 或 HuggingFace id。加--force-download时若/models里没有该模型脚本会通过 exo 从 HuggingFace 添加并下载——注意这会触发一次模型下载。执行评测主路径命令脚本 docstring 给出的原始用法是uv run python exo_eval.py ...。在仓库根目录下进入bench/后按此执行脚本就位于 bench/exo_eval.pycd bench uv run python exo_eval.py --model model-id --tasks gpqa_diamond其中model-id是占位符替换为你集群上要评测的模型 short id 或 HuggingFace id例如 README 中 benchmark 示例用的Llama-3.2-1B-Instruct-4bit。跑完 GPQA Diamond 后再换--tasks跑其他任务即可# MMLU Pro12K 题量大建议先用 --limit 做小样 uv run python exo_eval.py --model model-id --tasks mmlu_pro --limit 100 # AIME 2024 / 2025 各 30 题可以一次跑完 uv run python exo_eval.py --model model-id --tasks aime_2024,aime_2025运行后脚本自动完成一连串编排动作了解它们有助于判断日志与副作用解析模型 id等待集群产出可用 placement--settle-timeout默认 60 秒0表示只试一次placement 可用--max-nodes默认 4、--min-nodes默认 1、--sharding、--instance-meta过滤需要时下载模型完成后日志会打印Download: Xs评测开始前脚本会先删除集群中已存在的所有实例以释放资源再POST /instance创建新实例并等待 ready。如果你的集群上还有正在服务的实例先确认这一点逐题向{host}:{port}/v1/chat/completions发请求默认并发--num-concurrent 1评测结束后默认删除自己创建的实例加--keep-instance可保留实例以串联多次运行--reuse-instance则优先复用该模型已有的运行中实例。生成参数如何决定每题请求的temperature、top_p、max_tokens、top_k、min_p、reasoning_effort、enable_thinking按三级优先级取值CLI 参数 bench/eval_configs/models.toml 中的按模型配置 回退默认值。models.toml 中每个[[model]]条目用patterns子串匹配 model id第一个命中的条目生效且 CLI flag 优先于文件内配置。文件内配置了 Qwen3.5 / Qwen3 / GPT-OSS / DeepSeek / Nemotron / GLM / Kimi / MiniMax / Step / Llama 等系列的推理温度与 max_tokens取值来源在注释中注明如模型卡与 generation_config.json。模型未命中任何条目时的回退默认models.toml 文件头与脚本常量一致reasoning 模型temperature1.0, max_tokens131072, reasoning_efforthigh非 reasoning 模型temperature0.0, max_tokens16384。此时脚本会告警 “Model ... not found in eval_configs/models.toml. Defaulting to non-reasoning”你可以用--reasoning或--no-reasoning强制指定。手动覆盖参数--temperature、--top-p、--top-k、--min-p、--max-tokens、--reasoning-effort取值low/medium/high、--enable-thinking。可选快速迭代与并发对比--limit N每个 benchmark 最多评测 N 题docstring 明确其用途是 fast iteration适合先验证链路--offset N跳过前 N 题。--num-concurrent N并发请求数默认 1。--compare-concurrency 1,4按多个并发级别各跑一遍最后输出对比表每级的 Accuracy、Correct、Total、Comp Tokens、Wall Clock、Avg Gen TPS并统计两种并发下答案正确性发生变化的题数用于判断 batch 是否影响质量。docstring 中的示例uv run python exo_eval.py --model model-id --tasks gpqa_diamond --compare-concurrency 1,4。--request-timeout单请求超时秒默认不限时。--force丢弃已有 checkpoint 从头跑见下一节。读取结果控制台汇总。每个 benchmark 结束后脚本打印格式见 bench/exo_eval.py 的print_results准确率行task: correct/total (percent%)tokens 行prompt completion 总 token 数含 reasoning token 时附注、平均生成速度 avg gen tps、累计计算时间 total time 与实际耗时 wall clock若 API 返回了功耗数据追加一行平均功率W与总能量J / Wh出错情况API errors: N与No answer extracted: N抽取不到答案的题目按错误处理。JSON 落盘。结果默认写入eval_results/目录--results-dir可改路径规则为eval_results/model_id 中 / 替换为 _/task/c并发数_YYYYmmdd_HHMMSS.json。文件包含scores与上面汇总同构的指标、cluster集群快照以及每题的明细prompt、response、extracted_answer、gold_answer、correct、token 数、finish_reason、耗时与功耗。成功信号是日志中的Results saved to path——拿到这个路径就表示结果已完整落盘之后可用jq等工具按results[].correct复核任意一题。评分逻辑影响你怎么看结果GPQA / MMLU Pro 从回答文本中用 8 个正则回退模式抽取选项字母取文本位置最靠后的匹配兼容推理中途自我纠正的模型AIME 从最后的\boxed{...}抽取内容并做整数比对解析失败时用math-verify兜底。Checkpoint 断点续跑与实例故障每个 benchmark 在结果目录下有c并发数.checkpoint.jsonl每完成一题追加一行整轮成功后 checkpoint 会被自动删除。评测中途中断后直接重跑同一条命令即可续跑已完成的题从 checkpoint 读回日志Loaded N checkpointed results对应题目标记(cached)只补跑剩余题目。若实例整体故障脚本每 5 秒轮询/models做健康检查连续 3 次连接失败后确认实例不可达会报错Instance failed! Completed X/Y problems. Checkpoint saved — restart to resume remaining problems.按提示重跑即续传。单题 API 调用本身最多重试 30 次退避间隔按 2 的指数增长、上限 60 秒因基础设施故障没拿到响应的题不会写入 checkpoint续跑时会自动重试。已知限制与副作用代码类任务会执行模型生成的代码humaneval使用官方human_eval包、livecodebench使用 vendored 的 LCBrun_test在子进程中执行脚本对此有明确警告“Code benchmarks execute model-generated code. Use a sandboxed environment.”。标题涉及的选择题与数学题不涉及执行如果你要跑这两个任务请在隔离环境中运行。--difficultyeasy/medium/hard与--release-version如release_v5仅对livecodebench生效。--danger-delete-downloads会从最小到最大删除集群中已有模型以为新模型腾空间属破坏性开关确认含义后再使用。Nix 构建下同一脚本以exo-eval包形式提供见 python/parts.nix无需手写 uv 命令。集群 API 的完整端点说明可参考 docs/api.md。【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →