4. 指令说明

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)