# BytevalKit-LLM **Repository Path**: ByteDance/BytevalKit-LLM ## Basic Information - **Project Name**: BytevalKit-LLM - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-24 - **Last Updated**: 2025-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #
概述 | 核心特性 | 安装 | 快速开始 | 配置说明 | 系统架构 | 评测结果 | 贡献指南 | 许可证
[English](ReadMe.md) | [中文](README_zh_CN.md)
## 概述
BytevalKit_LLM 是一个专为评估大型语言模型(LLM)性能而设计的综合评测框架。它通过声明式 YAML 配置实现评测任务的全流程定制化,支持多种模型部署方式(API、Transformer、vLLM),并提供完整的"推理-评判-评分"自动化工作流。
本框架采用"配置即代码"(Configuration-as-Code)的设计理念,将模型架构、推理逻辑、评估方法、指标计算等关键环节抽象为可配置项,使定制化的评测任务能够通过修改 YAML 配置文件实现,而非重复的代码开发。
## 核心特性
### 🚀 多模式支持
- **API 模式**:支持OpenAI 接口的 LLM 服务调用
- **本地推理**:支持基于 Transformer 架构的模型加载与推理
- **vLLM 加速**:集成 vLLM 高性能推理引擎
- **批量处理**:支持批量推理和并发评测
### 🎯 灵活的评测方式
- **规则评判**:支持自定义规则进行结果评判
- **LLM-as-Judge**:支持使用 LLM 作为评判器
- **CoT 评测**:支持思维链(Chain-of-Thought)推理过程评估
- **多维度评估**:支持多个维度综合评测,同时也支持用户过滤掉不需要的维度
### 📊 数据格式支持
- JSON / JSONL 格式
- CSV 格式
- 用户可以根据demo/dataset/目录下的示例数据自行实现数据预处理
### ⚡ 高效执行
- GPU 资源智能分配
- 多任务并行执行
## 安装
### 环境要求
- Python 3.9+
- CUDA 11.8+(使用 GPU 推理时需要)
### 安装步骤
```bash
# 克隆仓库
git clone https://github.com/BytevalKit/BytevalKit_LLM.git
cd BytevalKit_LLM
# 安装依赖
pip install -r requirements.txt
```
## 快速开始
### 基础用法
```bash
# 使用默认配置运行评测
python3 main.py --yaml_path demo/demo.yaml
# 运行 csv的数据集评测参考
python3 main.py --yaml_path demo/cmmlu.yaml
# 运行多任务评测
python3 main.py --yaml_path demo/multi_task_gpu_invocation.yaml
```
### 示例配置
我们在 `demo/` 目录下提供了多个示例配置:
- `demo/Qwen2.5-1.5B-Instruct.yaml` - 本地模型推理示例
- `demo/cot_model_eval.yaml` - CoT 思维链评测示例
- `demo/single_model_vllm_inference_eval.yaml` - vLLM 推理示例
- `demo/multi_task_gpu_invocation.yaml` - 多任务并行示例
## 配置说明
### YAML 配置结构
配置文件包含三个主要部分:
#### 1. DEFAULT - 任务配置
```yaml
DEFAULT:
work_dir: /path/to/output # 输出目录
task_name: my_eval_task # 任务名称
need_judge: true # 是否需要评判
need_calculate: true # 是否计算最终得分
need_cot_judge: true # 是否评测 CoT 思维链
use_vllm: true # 是否使用 vLLM
batch_size: 10 # 批量大小
judge_workers: 10 # 评判并发数
vllm_cfg:
max_seq_len: 16384
max_out_len: 2048
```
#### 2. DATASET - 数据集配置
```yaml
DATASET:
my_dataset:
name: dataset_display_name
path: /path/to/dataset.json
question_key: input # 问题字段名(默认: input)
answer_key: target # 答案字段名(默认: target)
judge_type: rule_comparison # 评判类型:rule_comparison 或 llm_judge
# 自定义数据预处理
exec_code: |+
question = item['question'] + " 选项: " + str(item['options'])
answer = item['answer']
# 自定义评判规则(rule_comparison 时使用)
judge_code: |+
import re
match = re.search(r'答案是\s*([A-D])', item.prediction)
if match:
judge_result = match.group(1) == item.answer
# LLM 评判提示词(llm_judge 时使用)
judge_prompt: "请评判以下回答的质量..."
# 评估维度过滤
filter_key: ["清晰度", "完备性"] # 仅保留指定维度
```
exec_code执行位置为:prompt_format.py中get_infer_list函数
judge_code的执行位置为:judge.py中exact_match函数
#### 3. MODEL - 模型配置
```yaml
MODEL:
# API 模型示例
gpt4:
type: api
name: gpt-4
api_key: ${API_KEY}
# 本地模型示例
qwen2_5:
type: vllm # 或不指定,默认使用 transformers
name: Qwen2.5-7B-Instruct
path: /path/to/model
model_kwargs:
torch_dtype: bfloat16
trust_remote_code: true
meta_template:
SYSTEM_begin: "<|im_start|>system\n"
SYSTEM_end: "<|im_end|>\n"
HUMAN_begin: "<|im_start|>user\n"
HUMAN_end: "<|im_end|>\n"
BOT_begin: "<|im_start|>assistant\n"
BOT_end: "<|im_end|>\n"
```
## 系统架构
### 执行流程
查看执行流程图
```mermaid
sequenceDiagram
participant 配置系统
participant 任务调度器
participant 模型推理
participant 评判服务
participant 指标计算器
配置系统->>任务调度器: 加载配置
任务调度器->>模型推理: 分配任务
模型推理->>评判服务: 发送推理结果
评判服务-->>指标计算器: 返回评分
指标计算器->>输出系统: 生成报告
```
点击图片查看大图
### 目录结构 ``` BytevalKit_LLM/ ├── main.py # 主入口 ├── models/ # 模型接口 │ ├── api_model.py # API 模型接口 │ ├── hf_model.py # Huggingface 模型 │ └── vllm_model.py # vLLM 模型 ├── execute/ # 执行引擎 │ ├── infer.py # 推理模块 │ ├── judge.py # 评判模块 │ └── task.py # 任务管理 ├── demo/ # 示例配置和数据 ├── dataset/ # 示例数据集 └── *.yaml # 示例配置文件 ``` ## Benchmark > 注意:为了表明我们的框架适用于开源数据集的评测方式,我们使用开源模型在部分评测集进行框架验证,使用的评测逻辑均为LLM评测 > 以下仅为框架评测结果,模型无先后顺序 | Dataset | Metric | Qwen3_32B | qwen3-14b | qwen3-235b