新闻详情

新闻详情

首页 / 资讯中心 / 详情

Data-Juicer 自动化评测实战:基于 HELM 与 Megatron-LM 的模型训练检查点评测与可视化

发布时间:2026/9/29 2:23:26来源:尧图网络
Data-Juicer 自动化评测实战:基于 HELM 与 Megatron-LM 的模型训练检查点评测与可视化
人工智能大模型数据工程数据清洗数据增强数据质检【免费下载链接】data-juicerData processing for and with foundation models! ➡️ ➡️ 项目地址https://gitcode.com/gh_mirrors/da/data-juicer点击查看免费下载本篇指南围绕 Data-Juicer 项目中的自动化评测工具Auto Evaluation Toolkit展开介绍如何在 Megatron-LM 训练 GPT2 模型的过程中自动对训练检查点执行 Stanford HELM 评测并将结果记录到 WandB 可视化。读者将掌握从环境准备、数据预处理、启动训练到运行evaluator.py自动化评测、再用wandb_writer.py汇总排行榜的完整闭环方案并可将其与 Data-Juicer 的数据预处理流程结合形成数据 → 训练 → 评测 → 数据优化的反馈循环。什么是自动化评测为什么要自动化评测自动化评测指的是在模型训练过程中自动使用评测数据集对每个训练检查点checkpoint执行评测并记录评测结果从而实时持续监控模型能力随训练迭代的变化。在大模型训练中仅靠训练 loss 无法准确反映模型的实际能力。需要借助多种评测数据集从知识问答、阅读理解、常识推理、文本摘要等不同维度评价模型并与其他基线模型如公开的 GPT、LLaMA 等做横向对比从而回答两个关键问题模型是否还有继续训练的价值如果指标已收敛甚至退化继续训练只会浪费算力当前数据预处理配置是否合理评测结果可以直接反哺数据清洗与配比方案。然而检查是否有新检查点 → 运行评测 → 记录评测结果 → 结果可视化这套流程重复繁琐且容易出错。Data-Juicer 的自动化评测工具将这一流程封装为一键式解决方案大幅节省人力成本同时将自动化评测与数据预处理结合可及时根据评测结果判断数据预处理阶段配置的合理性形成反馈循环更快地找出更合理的数据处理方法。工具整体架构与核心调用链自动化评测的入口是 evaluator.py它以 YAML 配置 命令行参数驱动主流程位于Evaluator.evaluate()evaluator.pybegin_iteration 开始 循环cur_iter end_iteration 1. 等待并启动 Megatron-LM 文本生成服务加载对应 iteration 的检查点 2. 运行 HELM 评测helm-run helm-summarize 3. 停止生成服务 4. cur_iter iteration_interval从源码结构看evaluator.py支持两种评测类型--eval-type与两种模型类型--model-type参数可选值默认说明--eval-typehelm/gpthelmhelm使用 Stanford HELM 框架评测gpt使用 OpenAI API 评测见 gpt_eval/README_ZH.md--model-typemegatron/huggingfacemegatron被评测模型类型当前 HELM 评测主要面向 Megatron-LM 检查点评测结果通过 recorder/wandb_writer.py 写入 WandB 项目完成指标曲线绘制与排行榜构建。后续章节以官方样例HELM 自动化评测 Megatron-LM 训练的 GPT2 模型为主线逐步展开。第 1 步准备环境NGC 容器 第三方依赖HELM 与 Megatron-LM 的依赖项繁杂为减少安装冲突官方推荐基于 NGC Pytorch 容器nvcr.io/nvidia/pytorch:22.12-py3构建环境。该样例至少需要一张 V100 或更高规格的显卡计算资源允许时可扩展支持更大的模型。假设数据集 jsonl 位于/dataset/dataset.jsonlData-Juicer 代码位于/code/data-juicer启动容器docker pull nvcr.io/nvidia/pytorch:22.12-py3 docker run --gpus all --ipchost --ulimit memlock-1 -it --rm \ -v /dataset:/workspace/data \ -v /code/data-juicer:/worksapce/data-juicer \ nvcr.io/nvidia/pytorch:22.12-py3容器成功运行后进入 Data-Juicer 的第三方生态目录安装 Megatron-LM 与 HELM并登录 WandBcd /workspace/data-juicer/thirdparty/LLM_ecosystems ./setup_megatron.sh ./setup_helm.sh wandb login两个安装脚本位于 thirdparty/LLM_ecosystems/ 下其内部逻辑从源码看setup_megatron.sh克隆 NVIDIA Megatron-LM 并git reset 040eac9 --hard固定到指定 commit应用定制补丁 patch/megatron.diff随后pip install flash-attn flask flask_restful jsonlines asyncio wandb sentencepiecesetup_helm.sh若无 conda 则先安装 MinicondaMiniconda3-py38_23.1.0-1克隆 Stanford CRFM 的 helm 并git reset 33ca6e62 --hard固定 commit应用补丁 patch/helm.diff创建 Python 3.8 的 conda 环境crfm-helm并pip install -e .。工具包使用 WandB 监控训练期间指标趋势。若有自建 WandB 实例可执行wandb login --host URL of your wandb instance后输入 API 密钥。安装完成后在容器外运行docker commit container_id>cd /workspace/data-juicer/thirdparty/LLM_ecosystems/Megatron-LM python tools/preprocess_data.py \ --input /workspace/data/dataset.jsonl \ --output-prefix dataset \ --vocab /workspace/data-juicer/demos/gpt2-vocab.json \ --dataset-impl mmap \ --tokenizer-type GPT2BPETokenizer \ --split-sentences执行后会生成dataset_text_document.bin与dataset_text_document.idx两个文件位于/workspace/data下供后续训练阶段直接读取。第 3 步启动 Megatron-LM 训练并产出检查点进入 Megatron-LM 目录以后台方式运行训练脚本cd /workspace/data-juicer/thirdparty/LLM_ecosystems/Megatron-LM nohup bash /workspace/data-juicer/demos/auto_eval_helm/pretrain_example.sh train.log 21 pretrain_example.sh会执行 GPT2 模型的训练从/workspace/data读取.bin和.idx二进制数据集文件训练 200000 个 iteration并每隔 2000 个 iteration 将模型以检查点形式保存在/workspace/data/checkpoints/GPT2目录下。可通过修改该脚本来调整模型规模、数据集路径、检查点路径等参数更详细的 Megatron-LM 配置可查阅其官方文档该脚本为配套样例脚本可在demos目录中按实际命名查找/生成。说明原文档所述pretrain_example.sh等样例文件属于配套 demo 目录当前仓库中实际可复用的完整配置文件已归档至 tools/evaluator/config/ 与 tools/evaluator/recorder/config/下文将给出对应替代。第 4 步启动自动化评测进入自动化评测工具目录并执行cd /workspace/data-juicer/tools/eval python evaluator.py --config /workspace/data-juicer/demos/evaluator.yaml \ --begin-iteration 2000 --end-iteration 200000 \ --interation-interval 2000 --check-interval 30该脚本会每隔 30 分钟--check-interval 30单位分钟检测一次/workspace/data/checkpoints/GPT2目录从 2000 iteration 开始、每隔 2000 iteration对检查点执行一次 HELM 评测并将评测结果记录至 WandB直到评测完 200000 iteration 对应的检查点为止。可在 WandB 上实时查看已完成的评测结果下图展示了模型训练到 140000 iteration 时 WandB 上的可视化展示。evaluator.py 命令行参数详解结合 tools/evaluator/README_ZH.md 与 evaluator.py 源码parse_argsL12-L21参数必填默认值说明--config是—包含评测设置的 YAML 文件--begin-iteration否等于--iteration-interval首个需要评测的检查点 iteration未提供时自动取 iteration-interval 值--end-iteration否无限持续监控最后一个需要评测的检查点 iteration不设置则进程持续监控训练产生的新检查点--iteration-interval否1000两次评测之间的 iteration 间隔--check-interval否30两次检查是否有满足条件检查点的时间间隔分钟--model-type否megatronmegatronMegatron-LM 检查点或huggingfaceHuggingFace 模型--eval-type否helmhelm默认当前仅支持评测 Megatron-LM 模型或gptOpenAI API 评测注意源码中--check-iterval存在拼写parse_args定义为--check-iterval而使用处为args.check_iterval实际命令行以--check-interval形式在文档与 README 中使用请以你安装版本的实际 argparse 帮助输出为准。YAML 配置文件详解配置文件的根键为auto_eval完整模板见 config/evaluator_example.yamlauto_eval: project_name: str # 项目名称 model_name: str # 模型名称 cache_dir: str # 缓存目录路径缺省为当前工作目录下的 cache源码 L52 自动创建 megatron: process_num: int # 运行 megatron-lm 文本生成服务所需的进程数 megatron_home: str # Megatron-LM 代码根目录缺省为当前工作目录 checkpoint_path: str # 检查点保存根目录 tokenizer_type: str # 目前支持 gpt2 或 sentencepiece vocab_path: str # gpt2 tokenizer 专用vocab 文件路径 merge_path: str # gpt2 tokenizer 专用merge 文件路径 # tokenizer_path: str # sentencepiece tokenizer 专用model 文件路径 max_tokens: int # 执行生成任务时最大生成的 token 数量缺省 512 token_per_iteration: float # 训练时每次迭代使用的 token 数量单位B用于换算训练 token 数 # log_path: str # megatron 服务日志路径缺省为 cache_dir/megatron.log # port: int # megatron 生成服务端口缺省 5000 helm: helm_spec_template_path: str # HELM 评测模板文件默认 tools/evaluator/config/helm_spec_template.conf helm_output_path: str # HELM 输出目录路径 helm_env_name: str # HELM 的 conda 环境名缺省 crfm-helm # eval_instances: int # 每个任务评测实例数缺省 100 # benchmarks: list # 需记录的指标缺省使用 HELM 16 组核心指标 gpt_evaluation: # 仅 --eval-type gpt 时需要 openai_api_key: str openai_organization: str question_file: str # 默认 tools/evaluator/gpt_eval/config/question.jsonl baseline_file: str # 默认 tools/evaluator/gpt_eval/answer/openai/gpt-3.5-turbo.jsonl prompt_file: str # 默认 tools/evaluator/gpt_eval/config/prompt.jsonl reviewer_file: str # 默认 tools/evaluator/gpt_eval/config/reviewer.jsonl answer_file: str # 生成的回答文件路径 result_file: str # 生成的评价文件路径 wandb: project: wandb project name # 缺省取 project_name base_url: your wandb base url # 自建 wandb 实例地址底层执行逻辑源码视角Evaluator.load_config()evaluator.py会读取配置并根据 tokenizer 类型校验vocab_path/merge_pathgpt2或tokenizer_pathsentencepiece同时为 HELM 生成cache_dir/helm_config.yaml含服务端口与 tokenizer 信息。每次评测的完整动作等待检查点megatron_checkpoint_exists()L221-L227读取latest_checkpointed_iteration.txt判断目标 iteration 是否已生成且iter_{:07d}目录存在否则按check_interval轮询等待启动生成服务run_megatron_server()L138-L171通过torchrun以megatron_process_num个进程启动tools/run_text_generation_server.py加载指定 iteration 检查点监听megatron_server_port缺省 5000执行 HELM 评测run_helm_eval()L236-L280先用replace_pattern将模板中的model占位符替换为mymodel/{project}-{model}/{iteration}再调用helm-run -n 4 -m {eval_instances} --conf-paths {helm_spec_path} --suite {suite} -o {helm_output_path}与helm-summarize均运行在helm_env_nameconda 环境中写入 WandBwrite_wandb()L285-L296构造HelmWriter并传入helm_output_dir、helm_suite_name、token_per_iteration等将指标曲线写入项目wandb_project。评测任务集配置helm_spec_template.conf官方样例的 HELM 测试集配置位于 config/helm_spec_template.conf通过修改此模板可调整评测任务。完整版覆盖 MMLU 全学科子集、RAFT 子集、IMDB、boolq、narrative_qa、natural_qa、quac、hellaswag、msmarco、cnndm/xsum 摘要、truthful_qa、civil_comments 等而样例中仅选用 MMLU 的一个子集、boolq、narrative_qa 以及 hellaswag 作为演示优先级priority数值越小越优先执行。模板中以model占位模型名由evaluator.py在运行时替换{description: boolq:modelmodel,data_augmentationcanonical, priority: 1} {description: narrative_qa:modelmodel,data_augmentationcanonical, priority: 2} {description: commonsense:modelmodel,datasethellaswag,methodmultiple_choice_separate_original,data_augmentationcanonical, priority: 1}第 5 步汇总评测结果、构建排行榜为体现模型训练效果可借助wandb_writer.py将多个模型的评测结果汇总到同一排行榜进行比较脚本位于 recorder/wandb_writer.py用法为python wandb_writer.py --config config_file [--print-only]config_fileYAML 配置文件--print-only仅将结果打印到命令行、不写 WandB用于调试。使用步骤对应原文档示例先将基线模型的各项评测结果直接记录到 WandBcd /workspace/data-juicer/tools/eval/recorder python wandb_writer.py --config /workspace/data-juicer/demos/baselines.yaml确认所有参与排行榜的模型评测结果均已记录后用排行榜配置构建榜单cd /workspace/data-juicer/tools/eval/recorder python wandb_writer.py --config /workspace/data-juicer/demos/leaderboard.yamlwandb_writer.py 配置说明recorder/README_ZH.md 提供了三种典型场景的配置模板位于 recorder/config/ 的leaderboard_example.yaml、llama_example.yaml、mymodel_example.yaml通用配置项为project: str # wandb 项目名 base_url: str # wandb 实例 url从 HELM 输出目录提取评测结果source: helmevals: - eval_type: helm model_name: str # 模型名字 source: helm # helm 或 file helm_output_dir: your helm output dir path helm_suite_name: your helm suite name token_per_iteration: tokens per iteration in billions benchmarks: # 需要记录到 wandb 的评测指标 - name: mmlu metrics: [EM] - name: boolq metrics: [EM] - name: narrative_qa metrics: [F1] - name: hellaswag metrics: [EM]直接从配置文件读取结果source: file用于快速记录已有评测结果例如基线模型evals: - eval_type: helm model_name: llama-7B source: file token_num: 1000 # 该模型训练时使用的 token 数量单位B eval_result: mmlu: {EM: 0.345} boolq: {EM: 0.751} narrative_qa: {F1: 0.524} hellaswag: {EM: 0.747}构建排行榜leaderboard: True leaderboard_metrics: # 榜单指标仅有包含全部指标评测结果的模型才会进入榜单 - mmlu.EM - boolq.EM - quac.F1 - hellaswag.EM excluded_models: # 不参与排行榜的模型名称 - model to exclude该工具默认使用 HELM 的 16 组核心指标mmlu.EM、raft.EM、imdb.EM、truthful_qa.EM、summarization_cnndm.ROUGE-2、summarization_xsum.ROUGE-2、boolq.EM、msmarco_trec.NDCG10、msmarco_regular.RR10、narrative_qa.F1、natural_qa_closedbook.F1、natural_qa_openbook_longans.F1、civil_comments.EM、hellaswag.EM、openbookqa.EM等作为默认评测/排行榜指标配置中未提供benchmarks或leaderboard_metrics时自动采用。扩展GPT 评测模式与配套生态除 HELM 外工具还支持基于 OpenAI API 的 GPT 评测--eval-type gpt其评测流程为run_megatron_inference()evaluator.py先用torchrun调用 Megatron-LM 的tools/inference.py以gpt_evalformatter 对question_file中的问题批量生成回答再由GPTEvaluator调用 OpenAI API 完成打分。问题集、提示词、评审提示等模板位于 gpt_eval/config/question.jsonl、prompt.jsonl、reviewer.jsonl基线回答示例位于 gpt_eval/answer/openai/。评测器与记录器均可独立运行evaluator.py负责边训练边评测wandb_writer.py负责事后汇总可视化两者通过共享 WandB 项目衔接可灵活接入自建评测数据或第三方模型结果。实战注意事项硬件与多机拓扑评测机与训练机建议分离至少 2 台 GPU 机器并通过共享文件系统NAS挂载相同路径如/mnt/shared将 Data-Juicer、数据集、检查点均置于共享目录训练机产出检查点、评测机轮询评测配置文件路径原 demo 文档中的demos/evaluator.yaml、demos/helm_spec_template.conf、demos/baselines.yaml、demos/leaderboard.yaml等样例配置在当前仓库中已归档为 tools/evaluator/config/evaluator_example.yaml、tools/evaluator/config/helm_spec_template.conf 与 tools/evaluator/recorder/config/ 下的三个示例文件可直接复制后修改使用持续监控模式不设置--end-iteration时进程将无限轮询适合长时间训练场景配合--check-interval控制检测频率可减少空转开销与数据预处理闭环将评测脚本接入 Data-Juicer 的数据处理流水线之后每次数据清洗策略调整都可以快速得到一组指标对比从而迭代出更优的数据方案。赞分享人工智能大模型数据工程数据清洗数据增强数据质检【免费下载链接】data-juicerData processing for and with foundation models! ➡️ ➡️ 项目地址https://gitcode.com/gh_mirrors/da/data-juicer点击查看免费下载相关推荐fairseq 中的 Megatron-11b基于 Megatron-LM 的 110 亿参数语言模型并行训练与 Wikitext-103 评估实战fairseq 中的 Megatron 11b基于 Megatron LM 的 110 亿参数语言模型并行训练与 Wikitext 103 评估实战 导读 本人工智能深度学习预训练NLP语音游戏 DLSS 版本怎么换、怎么回退DLSS Swapper 完整教程游戏 DLSS 版本怎么换、怎么回退DLSS Swapper 完整教程 游戏更新后塞来一个新 DLSS 版本画面开始闪你又不想动游戏目录里的文件。DLSS桌面应用Gensim Word2Vec 模型实战指南从预训练模型到自定义训练、评估与可视化Gensim Word2Vec 模型实战指南从预训练模型到自定义训练、评估与可视化 本篇技术指南以 Gensim 官方示例 run_word2vec.py h人工智能NLP机器学习深度学习上一篇OpenOOD支持的10大基准数据集从MNIST到ImageNet的全面覆盖下一篇Swashbuckle.AspNetCore 高级配置与自定义指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

原生 Web 三件套做个人博客:筛选、主题切换与目录高亮 2026/9/29 7:56:49

原生 Web 三件套做个人博客:筛选、主题切换与目录高亮

1. 用一个周末把博客站做出来:原生 Web 三件套的取舍与边界做个人博客系统页面搭建这件事,最容易被带偏的地方不是写不出来,而是还没开始就先把脚手架装上。我见过太多人在第一步就卡住:为了一个只有十几篇文章的个人站&#xff0…

阅读更多 →
从零构建buzz热度分析系统:数据管道、算法与传播链路还原 2026/9/29 7:56:49

从零构建buzz热度分析系统:数据管道、算法与传播链路还原

1. 从一个单词说起:为什么"buzz"值得单独拿出来聊第一次看到"buzz"这个词被当作一个项目标题,我脑子里蹦出来的不是蜜蜂,而是三个场景:会议室里大家交头接耳的那种"嗡嗡声"、社交媒体上突然炸开的一…

阅读更多 →
Folium VideoOverlay 视频叠加层完全指南:在交互地图上动态叠加视频图层 2026/9/29 7:56:42

Folium VideoOverlay 视频叠加层完全指南:在交互地图上动态叠加视频图层

数据可视化数据分析GIS 【免费下载链接】folium Python Data. Leaflet.js Maps. 项目地址: https://gitcode.com/gh_mirrors/fo/folium 点击查看 免费下载 Folium 的 VideoOverlay(folium.raster_layers.VideoOverlay)用于把一段视频当作一…

阅读更多 →
LangGraph 多智能体编排实战:状态机、断点续跑、人工介入,一次讲透 2026/9/29 7:56:35

LangGraph 多智能体编排实战:状态机、断点续跑、人工介入,一次讲透

单 Agent 会遇到天花板:工具一多就乱选、长任务一断就从头再来。LangGraph 用「把流程画成状态机」的方式解决这些问题,这也是它成为 2026 年生产级 Agent 首选的原因。附完整可运行代码。 文章目录一、为什么不是 LangChain 而是 LangGraph二、环境与最…

阅读更多 →
Codex、Claude Code、OpenCode接入火山方舟:配置与排错全指南 2026/9/29 7:56:35

Codex、Claude Code、OpenCode接入火山方舟:配置与排错全指南

最近一段时间,后台私信里被问到最多的组合就是 Codex、Claude Code、OpenCode 这三款 AI 编码工具怎么接火山方舟。原因我很理解:这三款工具本身都是各自赛道里最能打的那一档,但它们默认的模型服务门槛不低——Codex 默认走 OpenAI&#xff…

阅读更多 →
wescode 从入门到实践:安装配置与远程开发完全指南 2026/9/29 7:56:35

wescode 从入门到实践:安装配置与远程开发完全指南

要说清楚 wescode 是什么,得先从一个老开发者的视角捋一捋:这些年代码编辑器从记事本一路进化到 EDI,再到现在满地开花的 AI 辅助 IDE,工具越来越智能,但折腾安装配置的功夫也一个没少。wescode 就是这样一个存在——它…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉