行业资讯

Megatron-LLM环境搭建指南:NGC Docker镜像安装到数据编译的6步避坑教程

发布时间:2026/8/22 14:38:56
Megatron-LLM环境搭建指南:NGC Docker镜像安装到数据编译的6步避坑教程 Megatron-LLM环境搭建指南NGC Docker镜像安装到数据编译的6步避坑教程【免费下载链接】Megatron-LLMdistributed trainer for LLMs项目地址: https://gitcode.com/gh_mirrors/me/Megatron-LLMMegatron-LLM 是一个面向大语言模型LLM的开源分布式训练器distributed trainer for LLMs支持在单机多卡乃至多机集群上对 Llama、Falcon、Mistral 等模型进行预训练与微调。本教程面向新手带你用 6 步完成 Megatron-LLM 环境搭建——从克隆代码、启动 NGC Docker 镜像到编译 C 扩展与数据二进制化并附上最常见的两个报错的避坑方法。 开始前硬件要求速查在动手之前先确认你的 GPU 显存是否够用。下表来自官方 FAQ 的实测最小配置模型最小显存张量并行 (TP)流水线并行 (PP)LLaMa2-7B2 × 80GB21Mistral-7B4 × 80GB41Falcon-40B16 × 80GB82LLaMa2-70B32 × 80GB84 新手建议先用 7B 小模型在 2 张 80GB 卡上跑通全流程再考虑更大的模型。 第 1 步克隆 Megatron-LLM 项目代码在项目源码目录执行git clone https://gitcode.com/gh_mirrors/me/Megatron-LLM克隆后整个目录结构大致为训练入口 finetune.py、数据预处理工具 tools/preprocess_data.py、权重转换脚本 weights_conversion/hf_to_megatron.py以及核心训练库 megatron/ 目录。 第 2 步启动 NGC Docker 镜像⚠️ 关键避坑点官方推荐使用 NVIDIA 官方的 NGC PyTorch Docker 镜像nvcr.io/nvidia/pytorch:23.07-py3它已预装 CUDA、PyTorch 等深度学习环境可免去大量手动配置。将克隆好的源码挂载进容器并启动sudo docker run --gpus all -it --rm \ --shm-size128gb \ -v /path/to/Megatron-LLM/:/mpt/Megatron-LLM \ nvcr.io/nvidia/pytorch:23.07-py3⚠️避坑点 1--shm-size128gb必须加默认容器的共享内存太小后续用torchrun启动多进程数据加载或分片大模型权重时会报17300 Bus error (core dumped)错误。加上这个参数即可一次解决。进入容器后切换到挂载的项目目录cd /mpt/Megatron-LLM 第 3 步安装项目额外依赖NGC 镜像已包含大部分依赖只需补充安装 requirements.txt 中列出的少量包pip install -r requirements.txt该文件主要包含transformers、datasets、sentencepiece、flash-attn等依赖。若flash-attn编译失败可先注释该行跳过——它仅在训练时使用--use_flash_attn才需要。⚙️ 第 4 步编译 C helpers 扩展⚠️ 常见报错点项目中的数据集读取工具依赖一个 C 编写的helpers二进制模块必须手动编译源码位于 megatron/data/helpers.cpp编译脚本见 megatron/data/Makefilecd megatron/data make cd ../../⚠️避坑点 2如果跳过这一步后续任何涉及数据加载的脚本都会报ImportError: cannot import name helpers from megatron.data回到这一步执行make即可解决。 第 5 步预处理训练数据并编译为二进制Megatron-LLM 不直接读取原始文本需要先用 tools/preprocess_data.py 将原始数据编译为二进制索引文件.bin.idx训练时才能高速加载。第 1 小步准备原始数据。将数据整理为.jsonl格式每行一个 JSON 字典必须包含text字段{id: 0, text: The quick brown fox jumps over the lazy dog.} {id: 1, text: This is another document.}第 2 小步运行数据编译。以 LLaMa 系模型的 SentencePiece 分词器为例python tools/preprocess_data.py \ --input/path/to/raw.jsonl \ --output_prefix/path/to/tokenized/mydata \ --tokenizer_typeSentencePieceTokenizer \ --vocab_file/path/to/tokenizer.model \ --workers16 \ --no_new_tokens完成后会生成mydata_text_document.bin和.idx两个文件。训练时--data_path参数填写不含扩展名的完整路径。更多分词选项如--append_eod、--json-key可参考 docs/guide/tokenization.md。 第 6 步转换预训练权重并分片官方 Hugging Face 格式的权重无法直接被 Megatron 加载需要通过 weights_conversion/hf_to_megatron.py 转换。以 LLaMa2-7B 为例python weights_conversion/hf_to_megatron.py llama2 --size7 \ --out/path/to/megatron/weights/ \ --cache-dir/path/to/llama-2-7b/转换完成后如果要使用张量/流水线并行还需用 tools/checkpoint_util.py 将权重切分shard成多份python tools/checkpoint_util.py \ --target_tensor_parallel_size 2 \ --target_pipeline_parallel_size 1 \ --load_dir /path/to/megatron/weights/ \ --save_dir /path/to/sharded/weights/ \ --model_type llama2 \ --true_vocab_size 32000 \ --bf16 可选运行 verify_correctness.py 将 Megatron 实现与官方实现同时跑一遍并对比输出 logits平均绝对误差小于 0.0132 位精度说明转换成功。到这里环境搭建与数据准备全部完成接下来用torchrun启动 finetune.py 即可开始训练推荐超参可参考 examples/finetune.sh。️ 常见报错速查报错信息原因解决方法17300 Bus error (core dumped)容器共享内存不足启动 Docker 时加--shm-size128gbImportError: cannot import name helpers未编译 C 扩展进入megatron/data目录执行make详细说明见 docs/guide/faq.md。 小结6 步回顾✅ 克隆项目代码✅ 启动 NGC Docker 镜像记得加--shm-size128gb✅pip install -r requirements.txt安装依赖✅ 进入megatron/data执行make编译 helpers✅ 用preprocess_data.py将数据编译为二进制✅ 用hf_to_megatron.py转换权重 checkpoint_util.py分片完整流程的官方参考文档见 docs/guide/getting_started.md。跑通 7B 模型后可以尝试多机多卡扩展、指令微调instruction tuning等进阶玩法祝训练顺利【免费下载链接】Megatron-LLMdistributed trainer for LLMs项目地址: https://gitcode.com/gh_mirrors/me/Megatron-LLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考