[ PROMPT_NODE_22400 ]
custom-benchmarks
[ SKILL_DOCUMENTATION ]
# 自定义基准测试集成
NeMo Evaluator 支持通过框架定义文件 (FDF) 和自定义容器添加自定义基准测试。
## 概览
添加自定义基准测试的方法:
1. **框架定义文件 (FDFs)**: 定义评估任务、命令和输出解析的 YAML 文件
2. **自定义容器**: 将您的框架与 nemo-evaluator 打包,以实现可复现的执行
> **注意**: NeMo Evaluator 目前不支持通过 Python 类实现程序化 harness API 或自定义指标。自定义是通过 FDF 和容器完成的。
## 框架定义文件 (FDFs)
FDF 是添加自定义评估的主要方式。FDF 声明了框架元数据、默认命令和评估任务。
### FDF 结构
yaml
# framework_def.yaml
framework:
name: my-custom-framework
package_name: my_custom_eval
defaults:
command: "python -m my_custom_eval.run --model-id {model_id} --task {task} --output-dir {output_dir}"
evaluations:
- name: custom_task_1
defaults:
temperature: 0.0
max_new_tokens: 512
extra:
custom_param: value
- name: custom_task_2
defaults:
temperature: 0.7
max_new_tokens: 1024
### FDF 关键组件
**Framework 部分**:
- `name`: 框架的可读名称
- `package_name`: Python 包名称
**Defaults 部分**:
- `command`: 执行评估的命令模板
- 占位符: `{model_id}`, `{task}`, `{output_dir}` 会在运行时被替换
**Evaluations 部分**:
- 带有默认参数的任务列表
- 每个任务都可以覆盖框架默认值
### 输出解析器
创建自定义 FDF 时,需要一个输出解析器函数,将框架的结果转换为 NeMo Evaluator 的标准模式:
python
# my_custom_eval/parser.py
def parse_output(output_dir: str) -> dict:
"""
解析 output_dir 中的评估结果。
返回包含 NeMo Evaluator 格式指标的字典。
"""
# 读取框架的输出文件
results_file = Path(output_dir) / "results.json"
with open(results_file) as f:
raw_results = json.load(f)
# 转换为标准模式
return {
"metrics": {
"accuracy": raw_results["score"],
"total_samples": raw_results["num_samples"]
}
}
## 自定义容器创建
将您的自定义框架打包为容器以实现可复现性。
### Dockerfile 示例
dockerfile
# D