
verl v0.4.x 的 CUDA 12.4 / Torch 2.6 镜像体系基于 Megatron vLLM/SGLang 的 RL 后训练环境搭建指南【免费下载链接】verlverl/HybridFlow: A Flexible and Efficient RL Post-Training Framework项目地址: https://gitcode.com/GitHub_Trending/ve/verlverl 为 verl v0.4.x 阶段提供了一套与之配套的 Docker 镜像体系本指南以docker/verl0.4-cu124-torch2.6-fa2.7.4/目录下的 README.md 及其 6 份 Dockerfile 为核心完整梳理这套镜像的版本矩阵、Base/App/Preview 三层结构、DeepEP 与 NVSHMEM 的构建细节以及如何在镜像内安装 verl 并运行 Megatron 后端的 PPO/GRPO 训练。读完本文你将能按需选型镜像标签、理解每个 Dockerfile 层级的职责并掌握在镜像内落地 RL 训练的最小操作路径。一、这套镜像解决什么问题verl 是一个以 HybridFlow 思想为核心的 RL 后训练框架其训练链路通常同时依赖三类重型组件训练后端FSDP 或 Megatron-LM、推理/rollout 后端vLLM、SGLang 或 TRTLLM、以及底层加速库flash-attn、TransformerEngine、Apex、DeepEP 等。这些组件之间存在大量版本耦合——例如 SGLang 与 vLLM 的依赖冲突、flashinfer 与 torch 的 ABI 匹配、Megatron-LM 与 TransformerEngine 的配对关系——手工装配极易踩坑。docker/verl0.4-cu124-torch2.6-fa2.7.4/正是为 verl v0.4.x 定制的镜像工厂它以 NVIDIA 官方 PyTorch 容器为基础统一锁定 CUDA 12.4 torch 2.6.0 flash-attn 2.7.4 的组合并在此基础上分别装配 SGLang、vLLM、Megatron-LM、TransformerEngine 与 DeepEP形成 Base / App / Preview 三个层次的镜像产物供开发与 CI 直接拉取使用。二、镜像体系总览与版本矩阵该目录 README.md 首先给出了整条镜像链路的骨架版本cuda12.4 cudnn9.8.0 torch2.6.0 flash_attn2.7.4 sglang0.4.6.post5 vllm0.8.5.post1 nvidia-cudnn-cu129.8.0.87 transformer_engine2.3 megatron.corecore_v0.12.2 # Preview transformer_engine2.5 megatron.corecore_r0.13.0其中transformer_engine/megatron.core有两套取值正式版配套TE 2.3 megatron.core core_v0.12.2Dockerfile 实际锁定的 TE 源码 tag 为v2.2.1、Megatron-LM 分支为core_v0.12.2Preview 系列则升级为TE 2.5release_v2.5 megatron.core core_r0.13.0用于提前验证新版本 Megatron 内核。2.1 镜像标签清单README 的 Target 一节明确列出了三类发布产物类别镜像标签说明Baseverlai/verl:base-verl0.4-cu124-cudnn9.8-torch2.6-fa2.7.4仅含 CUDA/Torch/FlashAttn/Apex/TransformerEngine 等基础加速栈不含推理与训练框架Appverlai/verl:app-verl0.4-sglang0.4.6.post5-vllm0.8.5-mcore0.12.2-te2.2SGLang 与 vLLM 双推理后端 Megatron core_v0.12.2Appverlai/verl:app-verl0.4-sglang0.4.6.post5-vllm0.8.5-mcore0.12.2-te2.2-deepep上述基础上额外内置 DeepEPAppverlai/verl:app-verl0.4-vllm0.8.5-mcore0.12.2-te2.2仅 vLLM 推理后端 Megatron core_v0.12.2Appverlai/verl:app-verl0.4-vllm0.8.5-mcore0.12.2-te2.2-deepepvLLM 版 DeepEPPreviewverlai/verl:app-verl0.4-sglang0.4.6.post5-vllm0.8.5-mcore0.13.0-te2.2-previewSGLang vLLM Megatron core_r0.13.0Previewverlai/verl:app-verl0.4-vllm0.8.5-mcore0.13.0-te2.2-previewvLLM Megatron core_r0.13.0README 特别提示了 SGLang 与 vLLM 的耦合关系SGLang 0.4.6.post5 的某些操作依赖 vLLM因此 SGLang 版镜像会同时装入 vLLM 0.8.5.post1但两者在部分包如 flashinfer上存在冲突风险这也是 App 镜像要拆出纯 vLLM变体的原因。三、Base 镜像从 NVIDIA 官方容器重建 CUDA 12.4 栈Base 镜像由 Dockerfile.base 构建起点是 NVIDIA 官方nvcr.io/nvidia/pytorch:24.08-py3Ubuntu 22.04 CUDA 12.6 Python 3.10其构建逻辑可分为几个关键阶段。3.1 基础环境与镜像源配置Dockerfile 开头统一设置MAX_JOBS、VLLM_WORKER_MULTIPROC_METHODspawn、HF_HUB_ENABLE_HF_TRANSFER1等环境变量并通过APT_SOURCE/PIP_INDEX两个构建参数默认指向清华镜像源mirrors.tuna.tsinghua.edu.cn方便国内构建加速同时安装tini、aria2等工具aria2 用于后续大文件下载。3.2 卸载官方镜像自带的 PyTorch 全家桶并重建关键一步是彻底卸载 nv-pytorch 容器预装的 fork 版本避免版本漂移RUN pip uninstall -y torch torchvision torchaudio \ pytorch-quantization pytorch-triton torch-tensorrt \ xgboost transformer_engine flash_attn apex megatron-core grpcio随后通过 apt 仓库安装 CUDA 12.4 工具链cuda-toolkit-12-4并通过update-alternatives将默认 CUDA 切换到/usr/local/cuda-12.4、删除残留的 CUDA 12.6再以 pip 安装标准发布版torch2.6.0及配套torchvision0.21.0/torchaudio2.6.0。3.3 flash-attn 与 C ABI 匹配flash-attn 采用预编译 wheel 安装版本为flash_attn-2.7.4.post1cu12torch2.6cxx11abiFALSE。这里的cxx11abiFALSE非常关键torch 2.6.0cu124 对应cxx11abiFalse而torch 2.6.0cu126为cxx11abiTrue安装前必须核对 wheel 的 ABI 标记与 torch 构建一致否则会出现符号链接错误。这一 ABI 约束在 App 镜像的 flashinfer 安装注释中也被再次强调详见下文。3.4 依赖修复与 cudnn/ApexBase 镜像还包含一系列fix 包操作卸载易冲突的pynvml/nvidia-ml-py后统一升级为nvidia-ml-py12.560.30并锁定fastapi0.115.0、optree0.13.0、pydantic2.9、grpcio1.62.1随后安装 cudnn 9.8.0cudnn-cuda-12与从源码编译的 Apex启用--cpp_ext/--cuda_ext。此外还预装 Nsight Systems 2025.3.1 性能剖析工具、修复 opencv 的opencv-fixer并安装 tensordict 0.6.2、ray、transformers、datasets、peft、liger-kernel、xgrammar 等 verl 训练所需的 Python 依赖。四、App 镜像推理后端与 Megatron 训练栈的装配App 镜像以 Base 镜像为FROM负责装入推理后端SGLang/vLLM、训练后端Megatron-LM TransformerEngine以及 DeepEP。目录中共有 5 份 App/Preview Dockerfile差异集中在推理后端与 Megatron 版本组合上。4.1 SGLang vLLM 组合版Dockerfile.app.sglang.vllm.mcore0.12 的装配顺序为安装sglang[all]0.4.6.post5并通过--find-links https://flashinfer.ai/whl/cu124/torch2.6/flashinfer-python指定 flashinfer 的 cu124/torch2.6 专用 wheel 源同时安装torch-memory-saver用于显存管理。安装vllm0.8.5.post1SGLang 0.4.6.post5 的部分操作依赖 vLLM并注释警告两者存在包冲突风险。重新固定 tensordict 0.6.2、transformers、numpy2.0.0 等依赖执行与 Base 相同的 fix 包操作并补装nvidia-cudnn-cu129.8.0.87。从 GitHub 源码分别安装 TransformerEnginev2.2.1--no-deps --no-build-isolation与 Megatron-LMcore_v0.12.2最后安装mbridgeverl 与 Megatron 之间的桥接库。需要注意Dockerfile 中安装了transformers[hf_xet]4.52.0以规避 transformers 4.53.0 带来的兼容问题。4.2 纯 vLLM 版Dockerfile.app.vllm.mcore0.12 不含 SGLang其差异化步骤是 flashinfer 的手动安装从 GitHub Release 下载flashinfer_python-0.2.2.post1cu124torch2.6的cp38-abi3wheel 并安装。Dockerfile 中的注释解释了版本约束的来龙去脉torch-2.6.0cu124为cxx11abiFalsetorch-2.6.0cu126为cxx11abiTrue需按实际 torch 版本选择 flashinfer 构建vLLM 0.8.3 不支持flashinfer0.2.3因此锁定 flashinfer0.2.2.post1。4.3 Preview 版升级 Megatron 内核Dockerfile.app.sglang.vllm.mcore0.13.preview 与 Dockerfile.app.vllm.mcore0.13.preview 仅将 TransformerEngine 换为release_v2.5、Megatron-LM 换为core_r0.13.0其余步骤与对应正式版完全一致用于验证新版 Megatron 内核的兼容性。五、DeepEP 变体NVSHMEM GDRCopy 的完整编译链带-deepep后缀的镜像如 Dockerfile.app.sglang.vllm.mcore0.12.deepep、Dockerfile.app.vllm.mcore0.12.deepep在完成上述装配后追加了 DeepEP 的编译链。DeepEP 是 DeepSeek 开源的 MoE 全对全通信内核verl 的 Megatron 后端借助它与 NVSHMEM 实现高效的专家并行通信。构建流程分四步准备 IBGDA 依赖将libmlx5.so.1软链为libmlx5.so克隆源码拉取gdrcopy v2.3.1GPUDirect RDMA 拷贝库与DeepEP固定提交a84a248并下载 NVSHMEM 3.2.5 源码后应用 DeepEP 提供的third-party/nvshmem.patch编译 deepep-nvshmem通过 cmake 构建环境变量矩阵值得关注——NVSHMEM_SHMEM_SUPPORT0、NVSHMEM_UCX_SUPPORT0、NVSHMEM_USE_NCCL0、NVSHMEM_MPI_SUPPORT0、NVSHMEM_PMIX_SUPPORT0仅开启NVSHMEM_IBGDA_SUPPORT1与NVSHMEM_USE_GDRCOPY1并将产物安装到/workspace/deepep-nvshmem/install随后将NVSHMEM_DIR注入LD_LIBRARY_PATH与PATH安装 DeepEP进入 DeepEP 目录执行python setup.py install。Dockerfile 还提示必须设置 MPI 相关环境变量CPATH/usr/local/mpi/include、LD_LIBRARY_PATH追加/usr/local/mpi/lib与/usr/local/x86_64-linux-gnu否则构建会报错。这套 DeepEP 栈主要面向大规模 MoE 模型的 Megatron 训练场景。六、在镜像内安装 verl 并启动 Megatron 训练6.1 镜像启动与 verl 安装仓库顶层 docker 说明 给出了标准操作流程拉取镜像后创建容器并以sleep infinity保持存活随后docker exec进入容器将仓库挂载到/workspace/verldocker create --runtimenvidia --gpus all --nethost --shm-size10g \ --cap-addSYS_ADMIN -v .:/workspace/verl --name verl image:tag sleep infinity docker start verl docker exec -it verl bash由于这套镜像已内置 SGLang、vLLM、Megatron-LM、TransformerEngine、Apex、flash-attn、DeepEP 等全部运行时依赖进入容器后只需以无依赖方式安装 verl 本体即可git clone https://github.com/verl-project/verl cd verl pip3 install --no-deps -e .若希望切换推理框架则用带 extra 的安装方式分别装配 vLLM 或 SGLang 侧依赖pip3 install -e .[vllm]/pip3 install -e .[sglang]。6.2 运行 Megatron 后端的 RL 训练镜像内可运行的典型任务是 examples/grpo_trainer/run_qwen3_8b_megatron.sh 这类脚本——它演示了 verl 在Megatron 训练 vLLM/SGLang rollout混合拓扑下的 GRPO 训练配置。脚本中以model_enginemegatron指定训练后端通过actor_rollout_ref.actor.megatron.tensor_model_parallel_size默认 2与pipeline_model_parallel_size默认 2设置 Megatron 的张量/流水线并行度rollout 侧则用actor_rollout_ref.rollout.name${INFER_BACKEND}vllm/sglang/trtllm 可选与tensor_model_parallel_size独立配置推理并行度并通过actor_rollout_ref.actor.use_kl_lossTrue、kl_loss_coef0.001等参数开启 KL 惩罚。与 v0.4.x 镜像对应的训练入口为python3 -m verl.trainer.main_ppov0.4 时代的经典入口后续版本演进为verl.trainer.main该入口在 verl/trainer/main_ppo.py 中实现。使用这套镜像时需注意先确认所选 App 镜像是否包含目标模型与目标后端所需组件——纯 vLLM 变体不含 SGLang 与 DeepEPPreview 变体面向 Megatron core_r0.13.0 内核普通训练应优先选择 mcore0.12.2 正式版。七、选型建议与注意事项基于 README 与 Dockerfile 中的显式注释整理选型要点如下推理后端选择需要同时对比 SGLang 与 vLLM 推理效果时选sglang0.4.6.post5系列仅使用 vLLM 时优先vllm0.8.5纯 vLLM 变体可规避 README 提示的 SGLang/vLLM 包冲突。Megatron 内核版本生产训练用mcore0.12.2te2.2正式版想提前验证core_r0.13.0新内核时选-preview标签。MoE 大模型场景训练 DeepSeek 系等大规模 MoE 模型时选-deepep变体以获得 DeepEP NVSHMEM 的专家并行通信能力。ABI 一致性torch 2.6.0cu124 对应cxx11abiFalse安装 flash-attn、flashinfer 等预编译库时必须匹配该 ABI 标记这是该版本镜像最容易出错的环节。版本漂移风险Base 镜像会卸载 NVIDIA 官方容器自带的 PyTorch fork 与加速库后重建因此不要在官方nvcr.io/nvidia/pytorch:24.08-py3之上直接叠加 verl而应使用本目录提供的分层构建结构保证版本矩阵一致。八、总结docker/verl0.4-cu124-torch2.6-fa2.7.4/目录是 verl v0.4.x 时代一套结构完整、版本锁定的镜像工程Base 层负责从 NVIDIA 官方容器重建 CUDA 12.4 torch 2.6.0 flash-attn 2.7.4 基础栈App 层在其上装配 SGLang/vLLM 推理后端与 Megatron-LM/TransformerEngine 训练栈-deepep变体进一步内置 DeepEP NVSHMEM 通信内核Preview 变体则前瞻性地验证 Megatron core_r0.13.0。理解这套分层与标签语义即可为 verl v0.4.x 的 PPO/GRPO 训练快速选择最合适的镜像规避推理后端冲突、ABI 不匹配等典型装机问题直接进入训练配置与调优环节。【免费下载链接】verlverl/HybridFlow: A Flexible and Efficient RL Post-Training Framework项目地址: https://gitcode.com/GitHub_Trending/ve/verl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考