
大模型人工智能模型推理服务NLP【免费下载链接】ChatGLM2-6B-codeChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型项目地址https://gitcode.com/zai-org/ChatGLM2-6B-code点击查看免费下载本指南以开源仓库 ChatGLM2-6B 的 evaluation 评测模块 为切入点完整讲解如何在 C-Eval 中文评测基准上对 ChatGLM2-6B 进行客观能力测评从数据集下载、环境准备、脚本运行到切换测试集并按官方规范提交结果。读完本文你将掌握 C-Eval 验证集的本地评测方法与测试集的上榜提交流程并能从源码层面理解评测脚本先自由生成、再抽取选项的两阶段推理机制。C-Eval 评测在 ChatGLM2-6B 项目中的定位C-Eval 是面向中文基础模型的多学科选择题评测基准涵盖 STEM、社会科学、人文科学等多个学科维度。在 仓库根 README 的官方评测结果中C-Eval 是与 MMLU、GSM8K、BBH 并列的核心指标之一ModelAverageSTEMSocial SciencesHumanitiesOthersChatGLM-6B38.933.348.341.338.0ChatGLM2-6B (base)51.748.660.551.349.8ChatGLM2-6B50.146.460.450.646.9ChatGLM2-12B (base)61.655.473.764.259.4ChatGLM2-12B57.052.169.358.553.2从表中可见ChatGLM2-6B 相较初代 ChatGLM-6B38.9在 C-Eval 平均分上提升约 11 个百分点这也是 README 介绍部分 所述CEval33%大幅提升的实证来源。需要说明的是官方汇报结果使用了内部并行测试框架数值可能存在轻微波动本文介绍的 evaluate_ceval.py 即是官方公开的、可在本地复现验证集评测的脚本。第一步下载并准备 C-Eval 数据集数据集获取C-Eval 评测所需的原始数据集需要预先下载并解压到evaluation目录下从清华云盘下载已处理好的 C-Eval 数据集压缩包将压缩包解压到仓库的evaluation目录下确认目录结构满足评测脚本的读取约定脚本通过./CEval/val/**/*.jsonl的递归 glob 模式扫描验证集文件因此解压后应得到形如evaluation/CEval/val/的目录其下按学科分类存放若干.jsonl文件。数据格式约定每个.jsonl文件按行存储题目样本从 evaluate_ceval.py 的读取逻辑可以看到每行是一个 JSON 对象脚本仅依赖其中两个字段inputs_pretokenized题目文本含题干与 A/B/C/D 四个选项label该题的标准答案A/B/C/D 之一脚本第 50 行与模型预测直接比较。运行环境依赖评测脚本基于 Hugging Facetransformers加载模型运行前请按仓库 requirements.txt 安装依赖关键版本要求如下transformers4.30.2仓库锁定的推荐版本torch2.0ChatGLM2-6B 依赖 PyTorch 2.0 引入的scaled_dot_product_attention实现高效 Attention 计算见 README 推理性能说明cpm_kernels、sentencepieceChatGLM 系列模型分词与 kernel 支持accelerate多卡部署与后续测试集大规模评测时可选。评测脚本以 bfloat16 精度加载模型并放入 CUDA需要至少约 13GB 显存的 GPU可参考 README 显存占用表显存不足时可参照 README 低成本部署章节 使用 INT4 量化模型但量化会带来一定精度损失官方在 C-Eval dev 上的对比为 BF16 53.57 vs INT4 50.30。第二步在验证集上运行评测数据集就绪后在仓库根目录执行cd evaluation python evaluate_ceval.py脚本会自动加载THUDM/chatglm2-6b模型权重首次运行会联网下载模型网络较差时可参照 README 从本地加载模型一节 预先下载并替换加载路径随后在 C-Eval 验证集上逐学科进行预测。运行过程中每个学科文件评测完成即输出该学科准确率全部学科完成后输出按样本数加权的总体准确率./CEval/val/xxx.jsonl 0.5123 ... 0.5010 # 加权平均后的总体准确率输出结果的含义脚本第 51-60 行展示了统计逻辑每个学科文件输出独立准确率correct / len(dataset)最终结果acc_total / count_total是按各学科样本数加权后的平均准确率与 C-Eval 榜单的总体得分口径一致。深入源码两阶段推理zero-shot CoT评测原理evaluate_ceval.py 的核心不是简单的直接让模型选 ABCD而是复现了 C-Eval 官方推荐的zero-shot Chain-of-Thought思维链评测方式整个推理分两阶段完成阶段一自由生成解题过程脚本先用build_prompt将题目封装成 ChatGLM 的对话模板格式与 cli_demo.py 中的多轮 prompt 拼接思路同源def build_prompt(text): return [Round {}]\n\n问{}\n\n答.format(1, text)随后以贪心解码生成模型对题目的完整回答outputs model.generate(**inputs, do_sampleFalse, max_new_tokens512)关键参数解读do_sampleFalse关闭采样采用贪心解码保证评测结果确定性、可复现max_new_tokens512给足模型展开推理过程的长度空间max_length2048输入截断上限与 ChatGLM2-6B 的上下文设计匹配。阶段二抽取选项答案第一阶段生成的内容可能是我认为选 B因为……这类带推理的文字不会直接当作答案而是拼上提取提示词再次送入模型extraction_prompt 综上所述ABCD中正确的选项是 answer_texts [text intermediate \n extraction_prompt for text, intermediate in zip(texts, intermediate_outputs)]这次不再生成新 token而是直接取出最后一个位置logits[:, -1]上 A/B/C/D 四个 token 的 logits取最大值对应的选项作为最终预测outputs model(**inputs, return_last_logitTrue) logits outputs.logits[:, -1] logits logits[:, choice_tokens] preds logits.argmax(dim-1)这种先生成推理、再强制从四个选项 token 中选一个的设计正是 zero-shot CoT 评测的核心既鼓励模型先展示推理过程又通过受限解码把预测收敛到标准答案格式从而与label精确比较。这也是 README 评测结果章节 注释Chat 模型使用 zero-shot CoT 的方法测试的源码级印证。其余实现细节批处理脚本用torch.utils.data.DataLoader(dataset, batch_size8)组织批量推理兼顾速度与显存无梯度上下文全程在torch.no_grad()下执行评测不参与梯度计算答案 token 预编码脚本启动时即用 tokenizer 将 A/B/C/D 编码为固定 token idchoice_tokens确保两次前向传播中抽取的 logits 位置一致。第三步切换到测试集并提交榜单验证集用于本地自测与调优若要获得可登上 C-Eval 官网榜单的正式成绩需要切换到测试集将 evaluate_ceval.py 中的数据集路径由./CEval/val/**/*.jsonl改为./CEval/test/**/*.jsonl重新运行脚本完成测试集预测按照 C-Eval 官方规定的提交格式整理结果文件保持每题的预测选项与官方测试集题目顺序对应在 C-Eval 官网提交。提示测试集为官方盲测集结果需提交到官网由官方汇总榜单本地运行仅能获得各学科原始准确率不能直接作为榜单成绩引用。评测结果复现与注意事项官方成绩对照仓库 README 的 C-Eval 表格 中 ChatGLM2-6B 的平均成绩为 50.1这个数值可作为验证集本地复现的参考基准——由于验证集与报告口径一致zero-shot CoT本地运行结果应与之接近。结果波动说明官方汇报结果使用的是内部的并行测试框架与公开脚本在批处理方式、解码实现上可能存在细微差异因此本地单卡运行得到的数值与官方表格存在轻微波动属正常现象复现时应关注总体加权准确率的量级与学科相对排名而非逐位数字如需稳定复现应保持transformers4.30.2、torch2.0的版本环境一致见 requirements.txt。显存与资源建议评测全程需驻留完整的 ChatGLM2-6B 模型bf16 约 13GB 显存且两阶段前向传播会累积 KV Cache。若显存受限可参考 utils.py 提供的load_model_on_gpus多卡切分方案或改用量化模型以显存换精度。小结本文围绕仓库 evaluation 评测模块 完整梳理了 ChatGLM2-6B 在 C-Eval 上的评测路径从清华云盘获取数据集并解压到evaluation目录一条命令运行 evaluate_ceval.py 得到验证集分学科与加权总体准确率再通过替换数据集路径切换至测试集并按 C-Eval 官方规范提交。同时我们深入拆解了脚本先自由生成解题过程、再强制抽取 ABCD 选项的两阶段 zero-shot CoT 机制理解了build_prompt、extraction_prompt、return_last_logit等关键代码设计。这套流程不仅适用于 ChatGLM2-6B也为在中文多学科选择题基准上客观评估其他 ChatGLM 系列模型提供了可复用的范式。赞分享大模型人工智能模型推理服务NLP【免费下载链接】ChatGLM2-6B-codeChatGLM2-6B: An Open Bilingual Chat LLM | 开源双语对话语言模型项目地址https://gitcode.com/zai-org/ChatGLM2-6B-code点击查看免费下载相关推荐LMDeploy 与 OpenCompass 联合评测指南两阶段学术能力评测实战LMDeploy 与 OpenCompass 联合评测指南两阶段学术能力评测实战 本指南以 LMDeploy 开源仓库的 模型评测文档 https://lin人工智能大模型模型推理服务推理引擎本地部署模型量化三步搞定国家中小学智慧教育平台电子课本下载开源工具让教育资源获取更简单三步搞定国家中小学智慧教育平台电子课本下载开源工具让教育资源获取更简单 在教育数字化的今天国家中小学智慧教育平台为师生提供了丰富的电子课本资源。然而很多教网页爬虫教育AIMLInterviews 目标检测指南两阶段与单阶段检测器原理、架构对比与 mAP 评估体系详解AIMLInterviews 目标检测指南两阶段与单阶段检测器原理、架构对比与 mAP 评估体系详解 本指南是 AIMLInterviews 项目 ML 系统示例工程教程人工智能上一篇Switch手柄与PC连接配置实战指南从驱动安装到模拟器适配全面解析下一篇beautiful-article 教程类tutorial文章写作规范让读者照着做就能跑通的长文实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考