ARTICLE DETAIL

资讯详情

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

Megatron-LM 如何用 preprocess_data_fast.py 与 GigaToken 加速大数据集预处理?

Megatron-LM 如何用 preprocess_data_fast.py 与 GigaToken 加速大数据集预处理? Megatron-LM 如何用 preprocess_data_fast.py 与 GigaToken 加速大数据集预处理【免费下载链接】Megatron-LMOngoing research training transformer models at scale项目地址: https://gitcode.com/GitHub_Trending/me/Megatron-LM在 Megatron-LM 中训练大规模 Transformer 前需要把 JSONL 语料转换成 Megatron 的二进制格式.bin/.idx。默认工具 tools/preprocess_data.py 按文档逐条切分到--workers个子进程里分词再逐条写入数据集语料达到千万、上亿行时这一步会耗时数小时到数天。docs/user-guide/data-preparation.md 给出了替代方案tools/preprocess_data_fast.py 用 GigaToken 一次性对整个 JSONL 文件做并行分词再通过一次批量写入完成数据集构建。这篇文章说明如何切换到这条快速路径、如何验证输出与慢速脚本完全一致以及如何把结果接进训练脚本。适用前提输入是 JSONL 文件每行一个 JSON 对象如{text: ...}分词器为 Hugging Face 或 Megatron 内置类型GigaToken 加速目前仅支持这两类库。准备条件输入数据JSONL 文件每行一个 JSON 对象文本字段默认text可用--json-keys指定其他字段名{text: Your training text here...} {text: Another training sample...}安装 GigaTokenpip install gigatoken如果启用了--use-gigatoken但没有安装该包构建 tokenizer 时会抛出ModuleNotFoundError。另外脚本依赖的IndexedDatasetBuilder.add_documents()要求awkward库缺失时也会报ModuleNotFoundError并提示pip install awkward见 megatron/core/datasets/indexed_dataset.py。tokenizer与preprocess_data.py相同例如HuggingFaceTokenizer配--tokenizer-model或GPT2BPETokenizer配--vocab-file/--merge-file。为什么 preprocess_data_fast.py 更快docs/user-guide/data-preparation.md 中给出的两个脚本差异preprocess_data.pypreprocess_data_fast.py分词方式按文档切分分散到--workers个进程整个文件一次分词由gigatoken内部并行数据集写入每个文档调用一次add_document()整个文件批量add_documents()额外要求—gigatoken包、--use-gigatoken参数实现上tools/preprocess_data_fast.py 对每个--json-keys指定的字段调用tokenizer.tokenize_files(args.input, key)用 GigaToken 把整个 JSONL 文件编码成一个 token-id 数组然后一次性交给builder.add_documents()写出并finalize。分词并行度由gigatoken内部处理因此该脚本没有--workers参数。运行快速预处理命令来自 docs/user-guide/data-preparation.md其中--input、--output-prefix和--tokenizer-model替换为你自己的数据与 tokenizer 路径python tools/preprocess_data_fast.py \ --input data.jsonl \ --output-prefix processed_data \ --json-keys text \ --tokenizer-type HuggingFaceTokenizer \ --tokenizer-model /path/to/tokenizer.model \ --use-gigatoken \ --append-eod主要参数参数说明--input输入JSONL文件路径--output-prefix输出二进制文件.bin和.idx的前缀--json-keys空格分隔的待分词 JSON 字段列表每个字段有独立的处理流程和输出分片--tokenizer-type/--tokenizer-model同preprocess_data.py--use-gigatoken启用 GigaToken 加速分词必需--append-eod为每个文档追加一个 end-of-document token执行过程中会依次打印Processing key: ...、Tokenizing file...、Adding encoded documents to IndexedDataset...结束时输出总耗时Data preprocessing is finished. Elapsed time: 158.20 seconds耗时数值仅用于说明输出格式实际以你的数据规模为准。验证输出正确性两个脚本处理同一输入时输出应当是逐文档一致的。仓库测试 tests/unit_tests/data/test_preprocess_data_fast.py 采用的验证方式可以直接照搬分别用preprocess_data.py和preprocess_data_fast.py对同一 JSONL 做预处理使用相同 tokenizer 参数注意preprocess_data.py需要额外传--workers等运行时参数用megatron.core.datasets.indexed_dataset.IndexedDataset打开两边生成的数据集断言文档数相同、逐文档 token 序列相同对生成的.bin和.idx文件计算哈希两边应当一致。数据集文件命名为{output-prefix}_{key}_document如processed_data_text_document.bin/.idx与preprocess_data.py的partitions1时的命名一致因此两条路径的产物可以互换使用。文档给出的性能参考docs/user-guide/data-preparation.md 用Qwen/Qwen3-8B的 HuggingFace tokenizer 对整个 JSONL 文件做了基准测试结果如下文档示例数据不代表你的环境必然得到相同数值输入规模preprocess_data.pypreprocess_data_fast.py加速比10M 行23 min约 7,246 docs/s2.7 min约 61,728 docs/s约 8.5x80M 行214.3 min约 6,222 docs/s25.3 min约 52,701 docs/s约 8.5x文档结论两个规模下preprocess_data_fast.py均稳定快约 8.5 倍来源是整文件 GigaToken 分词与批量add_documents()写入。接入训练预处理完成后训练脚本中用--data-path引用输出前缀并按需拆分训练/验证/测试集见 docs/user-guide/data-preparation.md--data-path processed_data \ --split 949,50,1 # Train/validation/test split限制与差异点tokenizer 类型限制tokenize_files()仅在huggingface和megatron两个 tokenizer 库、且构建时启用use_gigatokenTrue时可用其他库如 SentencePiece、TikToken会抛NotImplementedError。无句子切分preprocess_data.py支持--split-sentencesBERT 类任务按句子分词时需要preprocess_data_fast.py没有这个选项只能按文档整体分词。需要句子级数据集时仍要走原脚本。无 workers 调参快速脚本不提供--workers、--find-optimal-num-workers等参数分词并行由gigatoken内部完成。若启用了--use-gigatoken而环境未装gigatoken构建 tokenizer 时直接抛ModuleNotFoundError而不是静默回退到慢速路径。代码层面的细节可以继续参考 tools/preprocess_data_fast.py、docs/user-guide/features/tokenizers.md 中 GigaToken 章节以及 tests/unit_tests/data/test_preprocess_data_fast.py 的等价性测试。【免费下载链接】Megatron-LMOngoing research training transformer models at scale项目地址: https://gitcode.com/GitHub_Trending/me/Megatron-LM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表