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 :数据集内部的分类。若为全量测试,通常显示为
all或main。Num :实际参与推理并计入评分的测试样本总数。
Score :核心结果指标。取值范围通常在 0 到 1 之间,数值越高代表精度越高。
Cat.0 :数据集的顶层分类标签,用于多维度聚合统计,默认为
default。
7. 自定义模型评测脚本
可自定义模型评测脚本,实现模型精度评估。用户需要编写一个遵循EvalScope接口规范的Python脚本。
7.1. 必要足条件
模型脚本必须完成以下四个核心步骤:
定义API名称:设置全局常量
API_NAME。注册模型:使用
@register_model_api(name=API_NAME)装饰模型类。继承基类:模型类必须继承自
ModelAPI。实现推理接口:实现
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)