news 2026/9/25 3:18:27

MindSpeed-LLM 数据预处理完整指南:预训练与SFT数据一键转换实操

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MindSpeed-LLM 数据预处理完整指南:预训练与SFT数据一键转换实操

MindSpeed-LLM 数据预处理完整指南:预训练与SFT数据一键转换实操

【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址: https://gitcode.com/Ascend/MindSpeed-LLM

MindSpeed-LLM(昇腾LLM分布式训练框架)通过一条preprocess_data.py命令,即可将原始文本数据一键转换为预训练和 SFT(监督微调)可用的二进制索引格式,覆盖 Alpaca、ShareGPT、多轮对话、DPO 配对等多种数据风格。本文面向新手,手把手演示从数据准备到转换输出的完整流程,帮你快速跑通昇腾环境下的模型数据管道。

🧭 为什么需要数据预处理?

大模型训练不直接吃"原始文本",而是先经过:

原始数据(json/parquet 等)→ 分词(Tokenizer)→ 模板拼接(Prompt Template)→ 二进制索引(.bin + .idx)

这一步决定了训练时的读取效率和训练效果。MindSpeed-LLM 将这一整套流程封装在入口脚本 preprocess_data.py 中,底层由 data_handler.py 提供二十余种数据处理器(Handler),你只需选择对应的处理器名称即可。

📦 准备工作:环境与数据

1️⃣ 加载昇腾环境变量(按实际安装的 Toolkit 路径修改):

source /usr/local/Ascend/ascend-toolkit/set_env.sh

2️⃣ 准备两样东西:

  • 原始数据集:支持.parquet / .csv / .json / .jsonl / .txt / .arrow格式,可以是一个文件,也可以是一个目录(目录则批量处理全部文件)
  • 模型词表目录:如./model_from_hf/qwen3_hf/,用于分词

官方文档提供了常见数据集的下载方式,可参考 预训练数据集处理文档 与 Alpaca风格文档。

🚀 场景一:预训练数据一键转换

预训练数据最简单——只需要一个text文本列。以 Qwen3 为例,项目内置脚本为 data_convert_qwen3_pretrain.sh:

python ./preprocess_data.py \ --input ./dataset/train-00000-of-00042-d964455e17e96d5a.parquet \ --tokenizer-name-or-path ./model_from_hf/qwen3_hf/ \ --tokenizer-type PretrainedFromHF \ --handler-name GeneralPretrainHandler \ --output-prefix ./dataset/enwiki \ --json-keys text \ --workers 4 \ --log-interval 1000

关键参数解读:

参数作用新手提示
--handler-name数据处理器预训练固定用GeneralPretrainHandler
--json-keys提取的列名默认text,多列可写多个
--tokenizer-type分词器类型PretrainedFromHF表示用 HF 模型目录
--output-prefix输出文件前缀会生成xxx_document.bin/.idx文件
--workers并行进程数数据量大时可调大加速

其他模型的预训练转换脚本都遵循examples/mcore/模型名/data_convert_xxx_pretrain.sh的命名规范,可参考 DeepSeek4 数据转换脚本。

🗣️ 场景二:SFT 指令微调数据转换

SFT 数据比预训练多一步:按模型对话模板拼接 prompt。以 Alpaca 风格单轮指令数据为例:

python ./preprocess_data.py \ --input ./dataset/train-00000-of-00001-a09b74b3ef9c3b56.parquet \ --tokenizer-name-or-path ./model_from_hf/qwen25_hf/ \ --output-prefix ./finetune_dataset/alpaca \ --handler-name AlpacaStyleInstructionHandler \ --tokenizer-type PretrainedFromHF \ --workers 4 \ --prompt-type qwen \ --pack --neat-pack \ --seq-length 4096

新手必懂的 3 个 SFT 要点:

①--prompt-type决定对话模板

模板定义了模型"长什么样",内置选项包括qwen、qwen3、llama3、chatml、glm4、deepseek3等 30 余种,完整清单见 templates.json。请务必选择与目标模型一致的模板。

②--map-keys解决字段对不上的问题

Alpaca 风格默认列名为instruction / input / output。如果你的数据集列名不同(比如question / answer),用字段映射解决,例如 DPO 场景下的 data_convert_llama2_pairwise.sh:

--map-keys '{"prompt":"question", "query":"", "system":"system"}'

③--pack --neat-pack提升训练效率

把多条短样本打包进一条 4096 长度的序列,显著减少通信开销,适合样本普遍偏短的场景,参考 Qwen2.5 打包脚本。

🔧 进阶:常见数据风格速查

数据风格handler-name典型场景
单轮指令(Alpaca)AlpacaStyleInstructionHandler最常见的 SFT 格式
多轮对话(ShareGPT)SharegptStyleInstructionHandler多轮对话数据
预训练纯文本GeneralPretrainHandler大规模语料
DPO 偏好对AlpacaStylePairwiseHandler偏好对齐训练
思考链(CoT)R1AlpacaStyleInstructionHandler推理模型训练

更多处理器的实现都集中在 data_handler.py,ShareGPT 风格数据格式详见 官方文档。

💡多轮对话训练小技巧:Qwen3 等推理模型建议加--enable-thinking true(见 data_convert_qwen3_instruction.sh),开启思考模式的数据构建。

✅ 转换结果与常见坑

转换成功后,--output-prefix目录下会生成.bin(token 数据)和.idx(偏移索引)成对文件,训练脚本中通过--data-path直接引用即可。

新手常见 3 个坑:

  1. --output-prefix所在目录必须已存在,否则会报错,先mkdir -p创建
  2. 模板选错会导致训练 loss 异常:--prompt-type必须匹配模型,不确定时对照 supported_models.md
  3. 超长样本会被截断:超过--seq-length的样本默认丢弃,日志中会出现Dropped lengthy example警告,属正常现象

📚 小结

MindSpeed-LLM 的数据预处理核心就一句话:选对 Handler + 配好模板 + 指定词表路径,一条命令完成转换。

  • 预训练 →GeneralPretrainHandler,最简单
  • SFT →AlpacaStyleInstructionHandler/SharegptStyleInstructionHandler+--prompt-type
  • 大吞吐 → 加--pack --neat-pack打包

准备好数据后,即可进入 预训练入门 开启正式训练。祝训练顺利!🎉

【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址: https://gitcode.com/Ascend/MindSpeed-LLM

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 3:17:19

Finagle gRPC Context 集成指南:让 gRPC Context 跨 Twitter Future 边界传播

后端RPC框架 【免费下载链接】finagle A fault tolerant, protocol-agnostic RPC system 项目地址: https://gitcode.com/gh_mirrors/fi/finagle 点击查看 免费下载 导读 finagle-grpc-context 是 Finagle 仓库中的一个轻量级 Java 集成模块,它通过覆盖…

作者头像 李华
网站建设 2026/9/25 3:17:04

ServerPackCreator API 使用指南:如何集成到你的 Java/Kotlin 项目

ServerPackCreator API 使用指南:如何集成到你的 Java/Kotlin 项目 【免费下载链接】ServerPackCreator Create a server pack from a Minecraft Forge, NeoForge, Fabric, LegacyFabric or Quilt modpack! 项目地址: https://gitcode.com/gh_mirrors/se/ServerPa…

作者头像 李华
网站建设 2026/9/25 3:15:30

Interlaken协议详解:从XAUI到150Gbps芯片间互联选型与调试

简介:这份PPT教案面向芯片设计、高速接口验证与数字IC学习者,系统讲解Interlaken芯片间高速数据传输协议。内容从协议与XAUI、SPI的带宽对比切入,逐层展开协议层与帧层结构:64bit控制字/数据字的突发组装、BurstMax/BurstMin/Burs…

作者头像 李华
网站建设 2026/9/25 3:15:16

课程论文怎么快速起步:选题、提纲和初稿工作流

课程论文怎么快速起步:选题、提纲和初稿工作流 写课程论文的时候,是不是经常卡在第一步?选题没头绪、提纲改了又改、开头憋了半天写不出来……尤其是面对一堆资料的时候,脑子直接一团浆糊,根本不知道从哪下手。别慌&a…

作者头像 李华