∫π每天一道数学题

📚

大模型跑分统一框架,60+学术基准评测,HuggingFace官方榜单后台引擎

🗺️ 学习路径

undefined 学习路径

📖 学习笔记

Harness:LLM 评测框架学习包



项目:lm-evaluation-harness

难度:高级 | 动手为主 | 15+ 小时





🎯 核心概念



什么是 Harness?

想象你买了一部新手机,怎么知道它好不好?跑分。

大模型也一样。Harness = 统一的跑分工具,用来测试生成式语言模型在各种标准任务上的表现。

这个工具是 Hugging Face 官方榜单 Open LLM Leaderboard 的后台引擎,NVIDIA、Cohere、Nous Research 等团队都在用。





🗂️ 四个阶段学习路径



阶段一:基础认知(30分钟)



核心任务:理解评测框架是什么、做什么

问题答案
为什么要评测?口头说"这个模型好"不算,要有数据
评什么?60+ 学术基准(常识推理/数学/代码/语言理解...)
怎么评?拿模型输出和标准答案对比打分

关键术语
  • Benchmark(基准):一套标准考题

  • Task(任务):一个具体考点(如 `hellaswag` 考常识推理)

  • Few-shot(少样本):给模型看几个例题再答题





  • 阶段二:安装配置(1-2小时)



    ```bash

    1. 克隆项目


    git clone --depth 1 https://github.com/EleutherAI/lm-evaluation-harness
    cd lm-evaluation-harness
    pip install -e .

    2. 按需安装模型后端(可多选)


    pip install "lm_eval[hf]" # HuggingFace transformers
    pip install "lm_eval[vllm]" # vLLM 加速推理
    pip install "lm_eval[api]" # 商业 API(OpenAI 等)

    3. 一行命令跑评测


    lm_eval --model hf \
    --model_args pretrained=EleutherAI/gpt-j-6B \
    --tasks hellaswag \
    --device cuda:0 \
    --batch_size 8
    ```

    支持哪些"考场"(Task)?

    查看可评测列表:
    ```bash
    lm_eval ls tasks
    ```

    热门任务:
  • `hellaswag` — 句子续写(常识推理)

  • `arc_easy` / `arc_challenge` — 科学题

  • `mmlu` — 57个学科选择题

  • `gsm8k` — 小学数学应用题

  • `truthfulqa` — 事实性





  • 阶段三:核心操作(3-5小时)



    1️⃣ 评测本地模型
    ```bash

    HuggingFace 模型


    lm_eval --model hf \
    --model_args pretrained=model-name \
    --tasks hellaswag,arc_easy \
    --device cuda:0

    GGUF 量化模型


    lm_eval --model hf \
    --model_args pretrained=/path/to/gguf,gguf_file=model.gguf \
    --tasks hellaswag
    ```

    2️⃣ vLLM 加速推理
    ```bash
    lm_eval --model vllm \
    --model_args pretrained=model-name,tensor_parallel_size=2 \
    --tasks gsm8k_cot \
    --batch_size auto
    ```

    3️⃣ 商业 API 评测
    ```bash

    本地推理服务器(OpenAI 兼容)


    lm_eval --model local-completions \
    --model_args model=your-model,base_url=http://localhost:8000/v1/completions \
    --tasks gsm8k
    ```

    4️⃣ 多 GPU 并行
    ```bash

    数据并行(每块 GPU 各跑一遍)


    accelerate launch -m lm_eval --model hf \
    --tasks lambada_openai --batch_size 16

    模型切分(太大放不下就分开)


    lm_eval --model hf \
    --model_args pretrained=big-model,parallelize=True \
    --tasks lambada_openai
    ```




    阶段四:自定义评测(5+小时)



    写自己的评测题:

    1. 创建 YAML 配置文件(考什么、怎么评分)

    2. 设置评测参数(few shot 次数、批大小)

    3. 加入多模态输入(图片+文字)

    4. 分析结果:输出 JSON 报告


    ```yaml

    示例:自定义任务 YAML


    task: my_math_test
    dataset_path: my_math_questions.json
    output_type: generate_until
    metric_list:
    - metric: exact_match
    ```

    进阶玩法
  • Steering Vectors:定向控制模型输出倾向

  • Jinja2 提示词:自定义出题模板

  • Context Caching:重复题干只算一次

  • 多模态评测:图片题目 + 文字输出





  • 📐 动手练习



    入门级(必须完成)

  • [ ] 安装 lm_eval 并跑通 `hellaswag` 评测

  • [ ] 用 `--limit 10` 只看前 10 题快速验证

  • [ ] 对比两个模型的 `mmlu` 成绩


  • 进阶级(选做 2 个以上)

  • [ ] 写一个自定义 Task YAML 并运行

  • [ ] 用 vLLM 后端评测一个 7B 模型

  • [ ] 用 `local-completions` 评测本地部署的 DeepSeek

  • [ ] 写脚本批量跑 5 个任务导出结果表格


  • 挑战级

  • [ ] 设计一套"六慧 AI 技能评测"题目,评测哪个 AI 更懂慧备课/慧考试/慧管理

  • [ ] 用 Promptsource 为现有任务出 variant,比较不同问法的分数差异





  • 🛠️ 快速命令速查



    ```bash

    查看所有可评测任务


    lm_eval ls tasks

    验证任务数据完整性


    lm_eval --model hf --model_args pretrained=model --tasks task_name --check_integrity

    只看前 N 题


    lm_eval --model hf --model_args pretrained=model --tasks task_name --limit 10

    导出模型输出(不评分,仅看答案)


    lm_eval --model hf --model_args pretrained=model --tasks task_name --predict_only

    自动批大小


    lm_eval --model hf --model_args pretrained=model --tasks task_name --batch_size auto

    写题目原文到文件(调试用)


    python write_out.py --tasks task_name --num_examples 10 --output_base_path /tmp/out
    ```




    💡 学习建议



    1. 先跑通再理解— 不要试图把 848 行 README 全读完再动手

    2. 从单 GPU 单任务开始— `--limit 10` 快速验证

    3. 结果导向— 最终产出一张表:模型 A vs 模型 B 在各任务上的分数

    4. 关注 Hugging Face Leaderboard— 这是 Harness 跑出来的结果,是业界的"跑分榜"





    📚 延伸阅读



  • GitHub 仓库

  • HuggingFace 文档

  • Promptsource — 百种任务的提示词变体

  • Open LLM Leaderboard — Harness 驱动的官方榜单