# lmms-eval Evaluation Scripts

基于 [lmms-eval](https://github.com/EvolvingLMMs-Lab/lmms-eval) 框架的评测脚本。

## 主要优势

**🚀 不需要 GPT/LLM Judge！** 所有评测都基于规则，无需 API 调用。

## 安装

```bash
# 使用 pip
pip install lmms-eval

# 或从源码安装 (推荐，获取最新功能)
git clone https://github.com/EvolvingLMMs-Lab/lmms-eval
cd lmms-eval
pip install -e ".[all]"
```

## 支持的 Benchmarks

| Benchmark | Task Name | Type | 评测方式 |
|-----------|-----------|------|----------|
| GQA | `gqa` | VQA | Exact match |
| MMMU | `mmmu_val` | MCQ | Rule-based extraction |
| TextVQA | `textvqa_val` | VQA | VQA Score |
| POPE | `pope` | Y/N | Rule-based extraction |
| MathVista | `mathvista_testmini` | Math | Rule-based extraction |
| MMBench | `mmbench_en_dev` | MCQ | Rule-based extraction |
| MME | `mme` | Perception+Reasoning | Rule-based |
| AI2D | `ai2d` | Diagram | Rule-based |
| ScienceQA | `scienceqa_img` | MCQ | Rule-based |
| OCRBench | `ocrbench` | OCR | Rule-based |
| ChartQA | `chartqa` | Chart | Rule-based |

## 使用方式

### 单独评测

```bash
# 设置模型路径
export MODEL_PATH=/path/to/your/model
# 或使用 HuggingFace 模型
export MODEL_PATH=Qwen/Qwen2.5-VL-3B-Instruct

# 运行评测
bash eval_gqa.sh
bash eval_mmmu.sh
bash eval_textvqa.sh
bash eval_pope.sh
bash eval_mathvista.sh
```

### 使用通用脚本

```bash
# 单个 benchmark
bash eval_lmms.sh gqa
bash eval_lmms.sh mmmu

# 多个 benchmark
bash eval_lmms.sh gqa textvqa pope

# 带参数
MODEL_PATH=Qwen/Qwen2.5-VL-7B-Instruct BATCH_SIZE=4 bash eval_lmms.sh mmmu
```

### 调试模式

```bash
# 只运行 100 个样本
LIMIT=100 bash eval_lmms.sh gqa
```

## 环境变量

| 变量 | 说明 | 默认值 |
|------|------|--------|
| `MODEL_PATH` | 模型路径或 HF ID | `Qwen/Qwen2.5-VL-3B-Instruct` |
| `MODEL_TYPE` | lmms-eval 模型类型 | `qwen2_vl` |
| `BATCH_SIZE` | 批大小 | `1` |
| `OUTPUT_DIR` | 输出目录 | `./eval_outputs/lmms_eval` |
| `LIMIT` | 限制样本数 (调试用) | 无 |
| `NUM_GPUS` | GPU 数量 | `1` |

## 对比 VLMEvalKit

| 特性 | lmms-eval | VLMEvalKit |
|------|-----------|------------|
| GPT Judge | ❌ 不需要 | ✅ 需要 (MCQ/Y-N) |
| API 依赖 | 无 | OpenAI/Azure |
| 安装 | `pip install lmms-eval` | `pip install vlmeval` |
| 评测速度 | 更快 (无 API 调用) | 较慢 (有 API 调用) |
| 模型支持 | 30+ | 220+ |
| 任务支持 | 100+ | 80+ |

## 参考

- [lmms-eval GitHub](https://github.com/EvolvingLMMs-Lab/lmms-eval)
- [支持的任务列表](https://github.com/EvolvingLMMs-Lab/lmms-eval/blob/main/docs/current_tasks.md)

