跳到主要内容

指令说明

LLM精度评测工具指令如下:

hmeval [OPTIONS]

指令参数说明如下:

  • --model :必选参数,指定自定义模型评测脚本(.py 文件)的路径。

  • --model-dir :必选参数,指定模型权重或模型编译后文件所在目录。

  • --dataset :必选参数,指定一个或多个评测数据集,用空格分隔,如 mmlu gsm8k

  • --limit :可选参数,限制评测的样本数量(0 为全量测试)。

  • --model-args :可选参数,自定义配置参数。用于向模型脚本传递用户定义的扩展配置。支持以 KEY=VALUE 形式多次指定。

运行示例如下:

hmeval \
--model ./hm_xh2_qwen3.py \
--model-dir ./models/hmm_xh2_qwen3_8b_256_8k_b1_1chip_2cores_v${HOUMO_VERSION} \
--dataset gsm8k \
--limit 1 \
--model-args tokenizer_dir=./models/tokenizers

5. 预置模型评测示例

当前工具包提供Qwen3-8B与Qwen3-VL-4B两个大模型的精度评测脚本。对于其他模型,用户可参考这些示例自行编写接入脚本。

5.1. Qwen3-8B示例

houmo-examples-xh2/tools/hmeval/examples/qwen3 目录下,执行下面指令评测模型精度:

./test.sh

返回信息示例如下:

+----------------------------------------------+--------+---------+-------+----+------+-------+
|Model | Dataset| Metric | Subset|Num |Score |Cat.0 |
+==============================================+========+=========+=======+====+======+=======+
|hmm_xh2_qwen3_8b_256_8k_b1_1chip_2cores | gsm8k | mean_acc| main |100 | 0.96 |default|
+----------------------------------------------+--------+---------+-------+----+------+-------+

5.2. Qwen3-VL-4B示例

houmo-examples-xh2/tools/hmeval/examples/qwen3-vl 目录下,执行下面指令评测模型精度:

./test.sh

返回信息示例如下:

+--------------------------------------------+--------+--------+-------+---+-----+-------+
|Model |Dataset |Metric |Subset |Num|Score|Cat.0 |
+============================================+========+========+=======+===+=====+=======+
|hmm_xh2_qwen3-vl_4b_256_32k_b1_1chip_2cores |mm_bench|mean_acc|cn | 1| 1|default|
+--------------------------------------------+--------+--------+-------+---+-----+-------+
|hmm_xh2_qwen3-vl_4b_256_32k_b1_1chip_2cores |mm_bench|mean_acc|en | 1| 1|default|
+--------------------------------------------+--------+--------+-------+---+-----+-------+
|hmm_xh2_qwen3-vl_4b_256_32k_b1_1chip_2cores |mm_bench|mean_acc|OVERALL| 2| 1|- |
+--------------------------------------------+--------+--------+-------+---+-----+-------+

6. 精度指标说明

  • Model :本次评测运行的模型名称。

  • Dataset :当前评估所使用的基准测试集名称。

  • Metric :用于衡量模型表现的标准。常见指标包括:

    • mean_acc:平均准确率。

    • pass@1:单次采样通过率。

  • Subset :数据集内部的分类。若为全量测试,通常显示为 allmain

  • Num :实际参与推理并计入评分的测试样本总数。

  • Score :核心结果指标。取值范围通常在 0 到 1 之间,数值越高代表精度越高。

  • Cat.0 :数据集的顶层分类标签,用于多维度聚合统计,默认为 default

7. 自定义模型评测脚本

可自定义模型评测脚本,实现模型精度评估。用户需要编写一个遵循EvalScope接口规范的Python脚本。

7.1. 必要充分条件

模型脚本必须完成以下四个核心步骤:

  1. 定义API名称:设置全局常量 API_NAME

  2. 注册模型:使用 @register_model_api(name=API_NAME) 装饰模型类。

  3. 继承基类:模型类必须继承自 ModelAPI

  4. 实现推理接口:实现 generate() 方法,并返回 ModelOutput 对象。

7.2. 脚本推荐模板

以下是一个模板,展示了如何接收 hmeval 注入的参数:

from typing import List, Dict, Any, Optional
from evalscope.api.model import ModelAPI, GenerateConfig, ModelOutput
from evalscope.api.messages import ChatMessage
from evalscope.api.tool import ToolChoice, ToolInfo
from evalscope.api.registry import register_model_api

API_NAME = "my_custom_model"

@register_model_api(name=API_NAME)
class MyCustomModel(ModelAPI):
def __init__(
self,
model_name: str,
base_url: Optional[str] = None,
api_key: Optional[str] = None,
config: GenerateConfig = GenerateConfig(),
**model_args: Dict[str, Any],
) -> None:
super().__init__(model_name, base_url, api_key, config)

# hmeval 会自动传入
self.model_dir = model_args.get("model_dir")
if not self.model_dir:
raise ValueError("`model_dir` is required")

# 来自 --model-args
self.tokenizer_dir = model_args.get("tokenizer_dir")

def generate(
self,
input: List[ChatMessage],
tools: List[ToolInfo],
tool_choice: ToolChoice,
config: GenerateConfig,
) -> ModelOutput:
# 在这里实现推理逻辑
text = "hello"
return ModelOutput.from_content(model="my_custom_model", content=text)