ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenCompass 集成 Chinese SimpleQA:中文大模型事实性评测的配置详解与实战

OpenCompass 集成 Chinese SimpleQA:中文大模型事实性评测的配置详解与实战 模型评测人工智能大模型AI 评测【免费下载链接】opencompassOpenCompass is an LLM evaluation platform, supporting a wide range of models from OpenAI, Anthropic, Gemini, Qwen, GLM, DeepSeek, etc, across 100 datasets covering knowledge, reasoning, coding, science, language, long-context, and safety.项目地址https://gitcode.com/gh_mirrors/op/opencompass点击查看免费下载本篇技术指南聚焦 OpenCompass 官方数据集仓库中 Chinese SimpleQA 的 README 说明 及其配套配置完整讲解该中文事实性Factuality基准的评测原理、数据集准备、双模板配置差异、评判模型Judge LLM设置与结果指标解读。读完本文你将能够在 OpenCompass 中一键完成 Chinese SimpleQA 评测并理解其LLM 评判 三级分类的自动化打分机制。一、Chinese SimpleQA 是什么Chinese SimpleQA是首个用于评估大语言模型中文短问答事实准确性的综合性中文基准其设计初衷是解决生成式幻觉generative hallucination难以量化的问题。不同于 CommonSenseQA、CMMLU、C-Eval 等基于多项选择题的评测集Chinese SimpleQA 全部采用自由文本问答形式要求模型在无选项提示的情况下给出准确的事实性回答评测难度和真实性都更高。按照仓库 README 的描述该基准包含3000 道高质量问题覆盖6 大主题、99 个细分子主题从人文学科到理工科均有涉及。其五大核心特性为 中文Chinese聚焦中文语言环境全面评估现有 LLM 在中文场景下的事实性能力 多样Diverse覆盖中国文化人文社科工程技术与应用科学生活、艺术与文化社会自然科学六大主题共 99 个细分子主题⚡ 高质量High-quality通过全面且严格的质控流程保证题目质量与答案准确性 静态Static沿用 SimpleQA 的设计所有标准答案长期保持不变保证基准的常青属性避免随时间漂移导致不公平比较️ 易评测Easy-to-evaluate问题与答案都很简短可借助现有 LLM如 OpenAI API快速完成打分。除基准本身外作者团队还基于 Chinese SimpleQA 对现有 LLM 进行了系统性评测并维护了完整榜单Leaderboard其数据同时发布在 Hugging Face 上论文于 2024 年公开arXiv:2411.07140。二、OpenCompass 中的三种评测方式README 提供了三种官方评测路径simple-evals 方式基于 OpenAI 的 simple-evals 评测框架通过python -m simple-evals.demo启动经由 OpenAI API 完成评测自研单脚本方式在scripts/chinese_simpleqa_easy.py中填入OPENAI_API_KEY后运行python scripts/chinese_simpleqa_easy.py再用scripts/get_leaderboard.py统一汇总多个模型结果生成完整榜单OpenCompass 集成方式即本指南重点讲解的路径。将数据下载到本地、按需修改示例配置后用python run.py examples/eval_chinese_simpleqa.py一键启动可同时评测任意候选模型并支持任意 Judge LLM。后文将围绕第三种方式展开因为它与当前仓库的源码、配置与测试直接对应也是将 Chinese SimpleQA 纳入 OpenCompass 统一评测工作流的最佳选择。三、评测流程与仓库实现架构在 OpenCompass 中Chinese SimpleQA 走的是**主观评测subjective evaluation**流程即候选模型生成回答 → Judge 模型打分。整个链路在仓库中由四个关键文件支撑环节文件路径作用数据集加载与评判提示词opencompass/datasets/chinese_simpleqa.py定义CsimpleqaDataset数据加载器、Judge 打分提示词与后处理指标计算数据集配置PromptTemplate 版opencompass/configs/datasets/chinese_simpleqa/chinese_simpleqa_gen.py定义 reader / infer / eval 三段式配置数据集配置RawPromptTemplate 版opencompass/configs/datasets/chinese_simpleqa/chinese_simpleqa_rawprompt_gen.py使用RawPromptTemplate直接组装消息序列的等价配置评测入口示例examples/eval_chinese_simpleqa.py候选模型、Judge 模型、分区器、Runner 与工作目录的完整示例3.1 数据加载CsimpleqaDatasetCsimpleqaDataset继承自BaseDataset其load()实现见 opencompass/datasets/chinese_simpleqa.py会从本地路径读取chinese_simpleqa.jsonl逐行解析 JSON并组装成评测所需的字段primary_category题目所属的一级主题question原始问题gold_ans标准答案messages用于候选模型推理的对话消息system usersystem_promptJudge 模型的系统提示词你是一个智能助手请根据给定问题、标准答案和模型预测的答案来评估模型的回答是否正确。prompt_template完整的打分提示词将问题、标准答案、预测答案注入其中judge评测结果字典保留primary_category、question、question_id以便后续按主题聚合。数据加载通过get_data_path(path)解析路径实际文件名拼接规则为{path}/{name}.jsonl其中配置里pathopencompass/chinese_simpleqa、namechinese_simpleqa即对应本地数据目录下的chinese_simpleqa/chinese_simpleqa.jsonl。3.2 三段式配置reader / infer / eval以 chinese_simpleqa_gen.py 为例配置结构如下from opencompass.openicl.icl_prompt_template import PromptTemplate from opencompass.openicl.icl_retriever import ZeroRetriever from opencompass.openicl.icl_inferencer import GenInferencer from opencompass.openicl.icl_evaluator import LMEvaluator from opencompass.datasets import CsimpleqaDataset, csimpleqa_postprocess subjective_reader_cfg dict( input_columns[primary_category, question, gold_ans, messages, system_prompt, prompt_template], output_columnjudge) subjective_infer_cfg dict( prompt_templatedict( typePromptTemplate, templatedict(round[ dict(roleHUMAN, prompt{question}), ]), ), retrieverdict(typeZeroRetriever), inferencerdict(typeGenInferencer, max_out_len2048), ) subjective_eval_cfg dict( evaluatordict( typeLMEvaluator, prompt_templatedict( typePromptTemplate, templatedict( begin[ dict(roleSYSTEM, fallback_roleHUMAN, prompt{system_prompt}) ], round[ dict(roleHUMAN, prompt{prompt_template}), ] ), ), dict_postprocessordict(typecsimpleqa_postprocess), ), pred_roleBOT, )要点解读reader_cfginput_columns列出候选模型与 Judge 模型会用到的全部字段output_columnjudge指明结果写入的列infer_cfg候选模型使用GenInferencer做生成式推理ZeroRetriever表示零样本不检索示例max_out_len2048给足长回答空间eval_cfgJudge 侧使用LMEvaluator评判提示词由system_prompt系统角色与prompt_template用户角色两部分拼接pred_roleBOT指定候选模型输出作为 BOT 角色参与评判dict_postprocessor注册为csimpleqa的字典后处理器负责把 Judge 输出解析为指标。3.3 两种模板配置的对比仓库同时提供了chinese_simpleqa_rawprompt_gen.py这一等价配置二者差异仅在于提示词封装方式chinese_simpleqa_gen.py使用PromptTemplate通过roleHUMAN/SYSTEM/BOT与fallback_role描述对话结构由框架按模型类型如 Chat 模板自动转换chinese_simpleqa_rawprompt_gen.py使用RawPromptTemplate直接以messages[{role: ..., content: ...}]的原生消息列表定义交互适用于已明确支持角色消息的 API 模型。两者在数据加载、指标计算层面完全一致选择哪种取决于你的候选模型是否需要框架层面的对话模板适配。从源码结构看RawPromptTemplate更适合 API 直连类模型PromptTemplate更适合本地 Hugging Face 模型。四、数据准备与目录结构运行前需从 Hugging FaceOpenStellarTeam/Chinese-SimpleQA下载数据并按以下目录结构放置README 明确要求{OPENCOMPASS_PATH}/data/chinese_simpleqa/ └── chinese_simpleqa.jsonl即最终文件路径为data/chinese_simpleqa/chinese_simpleqa.jsonl。加载时CsimpleqaDataset会按pathopencompass/chinese_simpleqanamechinese_simpleqa组合定位该文件。若你希望使用其他本地目录修改配置中的path字段即可前提是保证{path}/{name}.jsonl结构一致。五、评测入口配置详解eval_chinese_simpleqa.pyexamples/eval_chinese_simpleqa.py 是官方提供的一键评测示例启动命令为python run.py examples/eval_chinese_simpleqa.py其配置分为推理阶段与评测阶段两大部分。5.1 推理阶段候选模型配置示例默认评测的是Qwen2.5-1.5B-Instructmodels [ dict( typeHuggingFacewithChatTemplate, abbrQwen2.5-1.5B-Instruct, pathQwen/Qwen2.5-1.5B-Instruct, model_kwargsdict( device_mapauto, trust_remote_codeTrue, ), tokenizer_kwargsdict( padding_sideleft, truncation_sideleft, trust_remote_codeTrue, ), generation_kwargsdict(do_sampleTrue, ), max_out_len200, max_seq_len4096, batch_size8, run_cfgdict(num_gpus1, num_procs1), ) ]实际使用时将abbr、path换成你要评测的模型即可如需评测多个模型在models列表中追加配置项。关键参数说明typeHuggingFacewithChatTemplate为对话模型自动套用 Chat 模板无需手工拼提示词max_out_len200生成回答的最大长度短问答场景足够max_seq_len4096输入上下文上限受提示词与题目长度影响batch_size8推理批大小按显存调整run_cfgdict(num_gpus1, num_procs1)单卡单进程部署方式。5.2 评测阶段Judge 模型配置api_meta_template定义 API 对话的角色映射SYSTEM/HUMAN/BOTjudge_models配置评判模型示例默认使用gpt-4o-0513-globalOpenAI APIapi_meta_template dict(round[ dict(roleSYSTEM, api_roleSYSTEM), dict(roleHUMAN, api_roleHUMAN), dict(roleBOT, api_roleBOT, generateTrue), ]) judge_models [ dict( abbrgpt-4o-0513-global, typeOpenAI, pathgpt-4o-0513-global, keyxxx, # 替换为你的 OPENAI_API_KEY meta_templateapi_meta_template, query_per_second16, max_out_len1000, batch_size8, retry3) ]README 明确建议使用gpt-4o作为 Judge。关键参数key需替换为有效密钥query_per_second控制 API 请求速率示例为 16 QPSretry3设置失败重试次数保障大规模评测的稳定性。5.3 评测执行配置eval dict( partitionerdict(typeSubjectiveNaivePartitioner, modelsmodels, judge_modelsjudge_models), runnerdict(typeLocalRunner, max_num_workers16, taskdict(typeSubjectiveEvalTask)), ) work_dir outputs/chinese_simpleqa/SubjectiveNaivePartitioner为每个候选模型 × Judge 模型组合切分评测任务LocalRunnermax_num_workers16本地并行执行最多 16 个并发 WorkerSubjectiveEvalTask主观评测任务类型负责执行推理与评判两个阶段work_dir结果输出目录默认outputs/chinese_simpleqa/。此外summarizer dict(typeDefaultSubjectiveSummarizer)指定使用默认主观评测汇总器实现见 opencompass/summarizers/default_subjective.py评测完成后将各模型的correct、F1等指标汇总成表格输出。六、Judge 提示词与三级分类打分机制Chinese SimpleQA 的打分核心是仓库内置的一段中文评判提示词opencompass/datasets/chinese_simpleqa.py。Judge 模型被要求将每个回答评定为三类之一A【正确】——完整包含标准答案中的关键信息且不含任何矛盾信息中英文、大小写、标点、语法与顺序均不敏感只要语义等价即可B【错误】——包含与标准答案矛盾的事实陈述即使带可能是虽然我不确定等保留语气也判为错误C【未尝试】——未包含标准答案关键信息同时也没有矛盾陈述如我不知道。提示词还给出了细致的判例规则例如数字题标准答案 3518.17预测 3518、3518.1 均算正确3520 算错误大约 3500 米 因既不确认也不矛盾判为【未尝试】若标准答案包含超出问题范围的信息预测只需覆盖问题所问部分即可判正确如标准答案碳酸镁MgCO3回答碳酸镁或MgCO3均正确能从问题明显推断出的省略信息视为正确如标准答案意大利撒丁岛回答撒丁岛正确译名不同但指同一实体的回答视为正确如 Robinson 与鲁滨逊/鲁滨孙。最终提示词要求 Judge只返回 A、B、C 中的一个字母便于后续自动解析。七、指标计算与后处理逻辑Judge 输出经csimpleqa_postprocess注册名csimpleqa见 opencompass/datasets/chinese_simpleqa.py处理后先由post_process_csimpleqa用正则(A|B|C)从 Judge 回复中抽取评分提取失败默认记为 C即未尝试再统计出五类指标指标含义correct正确率 正确数 / 总题数incorrect错误率 错误数 / 总题数not_attempted未尝试率 未尝试数 / 总题数given_attempted_accuracy已尝试回答的准确率 正确数 /正确数 错误数F1上述两指标的调和平均综合衡量模型敢答且答对的能力get_judgeanswer_and_reference还会做质量监控若成功解析的评判数不足总数的 95%会打印醒目的*警告提示检查 Judge 输出防止因解析失败导致指标失真。八、仓库测试验证仓库在 tests/datasets/test_local_datasets.py 中通过read_base()机制加载chinese_simpleqa_datasets配置参与本地数据集加载测试验证了配置导入与数据集读取链路的正确性。若你修改了相关配置可运行该测试确认数据加载环节未被破坏python tests/datasets/test_local_datasets.py九、引用规范若在你的研究或产品中使用 Chinese SimpleQA 数据集请按 README 提供的 BibTeX 引用论文Yancheng He 等2024arXiv:2411.07140。小结通过本文你可以基于 examples/eval_chinese_simpleqa.py 完成 Chinese SimpleQA 从数据准备、候选模型与 Judge 配置到结果汇总的全流程借助 chinese_simpleqa_gen.py 与 rawprompt 版本 理解两种模板适配方式透过 数据集实现 掌握A/B/C 三级分类 五类指标的评判机制从而在 OpenCompass 的统一评测框架下将中文事实性评测无缝纳入你的模型迭代与对比分析流程。赞分享模型评测人工智能大模型AI 评测【免费下载链接】opencompassOpenCompass is an LLM evaluation platform, supporting a wide range of models from OpenAI, Anthropic, Gemini, Qwen, GLM, DeepSeek, etc, across 100 datasets covering knowledge, reasoning, coding, science, language, long-context, and safety.项目地址https://gitcode.com/gh_mirrors/op/opencompass点击查看免费下载相关推荐ZAP v17 段文件格式深度解析OpenCloud 搜索索引的底层存储格式ZAP v17 段文件格式深度解析OpenCloud 搜索索引的底层存储格式 ZAPZap Archive Format是 Bleve 系搜索引擎sco模型评测人工智能大模型AI 评测Dagger TypeScript SDK 中的 ModuleConfigClient模块级客户端生成机制与用法解析Dagger TypeScript SDK 中的 ModuleConfigClient模块级客户端生成机制与用法解析 导读 ModuleConfigCli模型评测人工智能大模型AI 评测在 OpenCompass 中使用 LMDeploy 加速大模型评测TurboMind 后端配置与实战指南在 OpenCompass 中使用 LMDeploy 加速大模型评测TurboMind 后端配置与实战指南 导读 本文面向希望在评测大语言模型时获得更高推理吞模型评测人工智能大模型AI 评测上一篇终极指南Wasm Micro Runtime (WAMR) 生产环境部署全流程下一篇CMake文档本地化蚁群算法分布式协作模式优化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表