ARTICLE DETAIL

资讯详情

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

Megatron-LM 单节点 GB200 测试移植指南:从 2 节点 MR 功能测试创建 1 节点 mr-github 变体

Megatron-LM 单节点 GB200 测试移植指南:从 2 节点 MR 功能测试创建 1 节点 mr-github 变体 Megatron-LM 单节点 GB200 测试移植指南从 2 节点 MR 功能测试创建 1 节点 mr-github 变体【免费下载链接】Megatron-LMOngoing research training transformer models at scale项目地址: https://gitcode.com/GitHub_Trending/me/Megatron-LM本篇指南讲解 Megatron-LM 中一项具体的 CI 工程实践如何将现有2 节点8 GPU的 GB200 合并请求MR作用域功能测试系统性地移植为1 节点4 GPU的mr-github作用域测试。读者将掌握 GB200 测试配方的组织方式、基于 TP/PP/EP 的并行度裁剪分类规则、_1node模型配置目录的创建方法以及如何为gpt-1node.yaml/moe-1node.yaml配方文件追加products条目并分配mr-github作用域从而在资源占用更小的前提下扩大 GB200 的 CI 覆盖。GB200 单节点测试的背景与动机在 NVIDIA GB200 硬件平台上每个节点包含4 张 GPU。因此一个 2 节点测试合计使用8 张 GPU其 1 节点变体只使用4 张 GPU。Megatron-LM 的 CI 中MR 合并前需要跑一批功能测试来快速验证改动是否破坏核心训练路径。将这些测试中占用 2 个节点的用例裁剪为单节点用例可以在不牺牲覆盖面的前提下显著降低 CI 的资源需求与排队时间——这就是“onboard GB200 1-node GitHub MR tests”这一工程任务的出发点。该技能由 NVIDIA 维护作者 Oliver Koenig以 Apache-2.0 协议开源技能元数据与评估基准分别记录在 skills/mcore-onboard-gb200-1node-tests/skill-card.md 和 skills/mcore-onboard-gb200-1node-tests/SKILL.md。GB200 测试配方与模型配置的组织结构GB200 功能测试由两类文件共同定义这也是本次移植工作中需要操作的两类对象。测试配方文件RecipeGB200 相关的配方文件集中在tests/test_utils/recipes/gb200/目录下配方文件说明gpt.yamlGPT 稠密模型测试nodes: 2, gpus: 4共 8 GPUmoe.yamlMoE 混合专家测试nodes: 2, gpus: 4共 8 GPUmoe-1node.yaml已存在的 1 节点 MoE 测试nodes: 1, gpus: 4共 4 GPUgpt-1node.yaml1 节点 GPT 测试不存在时需新建此外该目录还包含gpt-dynamic-inference.yaml、moe-dynamic-inference.yaml、nemotron.yaml、hybrid-perf.yaml、unit-tests.yaml等面向推理、Nemotron、混合模型与单元测试的 GB200 配方参见 tests/test_utils/recipes/gb200/本任务聚焦于gpt与moe两类训练功能测试。模型配置目录Model Config每个测试用例的模型参数存放在功能测试用例目录下tests/functional_tests/test_cases/{model}/{test_case}/model_config.yaml1 节点变体使用_1node后缀的目录tests/functional_tests/test_cases/{model}/{test_case}_1node/model_config.yaml其中{model}取gpt、moe等。例如 MoE 侧已落地的用例gpt3_moe_mcore_te_ep8_resume_torch_dist_muon_1node对应目录 tests/functional_tests/test_cases/moe/gpt3_moe_mcore_te_ep8_resume_torch_dist_muon_1node/。model_config.yaml采用三段式结构ENV_VARS环境变量如CUDA_DEVICE_MAX_CONNECTIONS、NCCL_ALGO、MODEL_ARGS训练超参与并行度参数、TEST_TYPE测试类型如ckpt-resume以及LAUNCHER如ft_launcher。测试作用域Scope约定配方文件products:块中的每条记录通过scope字段决定测试在哪些 CI 阶段运行。本任务涉及的作用域有mr2 节点 MR 测试合并请求触发通常运行在专门的多节点机器上mr-slim2 节点 MR 精简子集mr-github1 节点 GitHub MR 测试本任务的落点mr-github-slim1 节点 GitHub MR 精简子集仅给每份配方中 12 个最具代表性的测试nightly/weekly夜间 / 周度测试mr-broken/nightly-broken已知挂起或有问题的用例会被暂时标记为禁用例如gpt3_mcore_te_tp2_pp2_ep4_etp1_resume_torch_dist_attn_cudagraph因 hang 被标记为mr-broken见 tests/test_utils/recipes/gb200/moe.yaml。关键原则只挑选scope: [mr, ...]或scope: [mr-slim, ...]的 2 节点测试作为候选跳过nightly、weekly、mr-broken作用域以及那些已经存在于*-1node.yaml文件中的用例避免重复覆盖。六步移植工作流第 1 步筛选候选测试扫描 tests/test_utils/recipes/gb200/gpt.yaml 与 tests/test_utils/recipes/gb200/moe.yaml 的products:块找出所有scope含mr或mr-slim的条目。以当前仓库为例gpt.yaml中符合mr条件的用例包括gpt3_mcore_te_tp1_pp1_resume_torch_dist_dist_optimizergpt3_mcore_te_tp2_pp1_gdngpt3_mcore_reruns_persistent_1gpt3_mcore_te_tp1_pp4_vp1_dist_optimizer_overlap_grad_reduce_param_gather_overlap_optimizergpt3_mcore_te_tp4_pp1_resume_torch_dist_dist_optimizer_overlap_grad_reduce_param_gathermoe.yaml中符合mr条件的用例包括gpt3_moe_mcore_te_ep8_resume_torch_dist_dist_muongpt3_moe_mcore_te_ep8_resume_torch_dist_muongpt3_moe_mcore_te_tp4_ep2_etp2_pp2_resume_torch_dist_dist_optimizer这些正是需要生成_1node变体的目标。第 2 步读取并提取模型配置的并行度参数对每个候选用例读取其model_config.yaml提取以下关键并行度参数--tensor-model-parallel-size (TP) --pipeline-model-parallel-size (PP) --expert-model-parallel-size (EP) --expert-tensor-parallel-size (ETP) --context-parallel-size (CP) --global-batch-size --micro-batch-size这些参数在 megatron/core/parallel_state.py 与 megatron/training/arguments.py 中定义并初始化对应的进程组是判断世界规模world size与进程组能否成立的基础。第 3 步分类——直接拷贝还是需要适配世界规模的通用公式为world_size TP × PP × DP其中 DP ≥ EP从 8 GPU 收缩到 4 GPU 时按以下条件分类处理条件处理方式TP × PP ≤ 4直接拷贝。配置保持不变DP 自动减半。TP × PP 8例如 tp4 pp2降低 PP。令PP PP / 2例如 pp2→1并验证TP × PP_new ≤ 4。EP 4例如 tp1 pp1 下 ep8降低 EP。令EP 4。专家总数num-experts保持不变每个 EP rank 持有的专家数随之增加。EP 4且TP × PP 4同时按上述规则降低 PP 与 EP。ETP 测试要求EP × ETP ≤ TP × DPPP 降低后检查EP × ETP ≤ TP × DP_new。通常在 pp→1 时自然满足。不要修改 GBS全局批大小——减少的 DP 由梯度累积gradient accumulation自动吸收从而保持全局训练语义与 golden values 的一致性。第 4 步创建_1node模型配置目录对于“直接拷贝”类用例可以简单地复制配置目录# Trivial copy mkdir -p tests/functional_tests/test_cases/{model}/{test_case}_1node cp tests/functional_tests/test_cases/{model}/{test_case}/model_config.yaml \ tests/functional_tests/test_cases/{model}/{test_case}_1node/model_config.yaml # 然后使用编辑工具应用并行度修改EP 或 PP对于需要适配的用例复制后再修改MODEL_ARGS中的并行度参数。仓库中的真实差异印证了这一模式——对比gpt3_moe_mcore_te_ep8_resume_torch_dist_muon与其_1node变体唯一的差异正是- --expert-model-parallel-size: 8 --expert-model-parallel-size: 4其余参数--num-experts: 8、--global-batch-size: 32、--micro-batch-size: 4等原样保留与“EP 8→4、专家数不变、GBS 不变”的规则完全一致。第 5 步创建或更新配方文件GPT 测试——若tests/test_utils/recipes/gb200/gpt-1node.yaml不存在则克隆gpt.yaml的spec块并将nodes改为 1按此模板编写type: basic format_version: 1 maintainers: [mcore] loggers: [stdout] spec: name: {test_case}_{environment}_{platforms} model: gpt # 或 moe build: mcore-pyt-{environment} nodes: 1 gpus: 4 n_repeat: 5 platforms: dgx_gb200 script_setup: | # 从 gpt.yaml / moe.yaml 原样复制 ... script: |- # 从 gpt.yaml / moe.yaml 原样复制 ...其中script_setup完成环境准备设置umask 077、写.netrc、clone 仓库、checkout MR commit 与 backwards-ref 等script则组装环境变量并调用测试执行脚本bash ./tests/functional_tests/shell_test_utils/run_ci_test.sh ${ARGUMENTS[]}MoE 测试——向已存在的 tests/test_utils/recipes/gb200/moe-1node.yaml 追加条目。第 6 步添加 products 条目作用域分配约定每份配方中12 个最具代表性的测试scope: [mr-github, mr-github-slim]其余所有测试scope: [mr-github]products: - test_case: [test_case_1node] products: - environment: [dev] scope: [mr-github, mr-github-slim] # 或 [mr-github] platforms: [dgx_gb200]仓库中gpt-1node.yaml的落地示例tests/test_utils/recipes/gb200/gpt-1node.yaml- test_case: [gpt3_mcore_te_tp1_pp1_resume_torch_dist_dist_optimizer_1node] products: - environment: [dev] scope: [mr-github, mr-github-slim] platforms: [dgx_gb200] - test_case: [gpt3_mcore_te_tp4_pp1_resume_torch_dist_dist_optimizer_overlap_grad_reduce_param_gather_1node] products: - environment: [dev] scope: [mr-github, mr-github-slim] platforms: [dgx_gb200]而大部分用例如gpt3_mcore_te_tp1_pp4_vp1_uneven_pipeline_1node只挂mr-github。另有少量用例以mr-github-temp-disabled临时禁用待问题修复后再启用。并行度裁剪速查表原始配置8 GPU1 节点配置4 GPU说明tp1 pp1 ep1 → dp8tp1 pp1 ep1 → dp4直接拷贝tp2 pp1 ep1 → dp4tp2 pp1 ep1 → dp2直接拷贝tp1 pp2 ep1 → dp4tp1 pp2 ep1 → dp2直接拷贝tp4 pp1 ep1 → dp2tp4 pp1 ep1 → dp1直接拷贝tp1 pp4 ep1 → dp2tp1 pp4 ep1 → dp1直接拷贝tp1 pp1 ep8 → dp8tp1 pp1 ep4 → dp4EP 8→4tp4 pp2 ep2 etp2 → dp1tp4 pp1 ep2 etp2 → dp1PP 2→1这个速查表覆盖了本次移植中绝大多数的并行度组合前五行是TP × PP ≤ 4的直接拷贝场景DP 减半第六行对应ep8的 EP 缩减场景仓库中gpt3_moe_mcore_te_ep8_resume_torch_dist_muon_1node即此模式最后一行对应tp4 pp2的 PP 缩减场景仓库中gpt3_mcore_te_tp4_pp2_resume_torch_dist_reshard_8x1xNone_1node即此模式。落地验证仓库中的真实实现本次移植工作流已在当前仓库中大规模落地可以直接对照验证GPT 侧gpt-1node.yaml已包含 30 个_1node用例按tp1_pp1、tp1_pp2、tp1_pp4、tp2_pp1、tp2_pp2、tp2_pp2_cp2PP 2→1、tp4_pp1、tp4_pp2PP 2→1分块组织见 tests/test_utils/recipes/gb200/gpt-1node.yaml。其中gpt3_mcore_te_tp2_pp2_cp2_*_1node与gpt3_mcore_te_tp4_pp2_resume_torch_dist_reshard_8x1xNone_1node正是“PP 2→1”适配的实例。MoE 侧moe-1node.yaml已包含ep8变体EP 8→4与tp4_ep2_etp2_pp2变体PP 2→1见 tests/test_utils/recipes/gb200/moe-1node.yaml。模型配置侧tests/functional_tests/test_cases/gpt/与tests/functional_tests/test_cases/moe/下均已存在对应的_1node/model_config.yaml目录。测试执行机制配方script中组装的环境变量TRAINING_SCRIPT_PATH、TRAINING_PARAMS_PATH、GOLDEN_VALUES_PATH、DATA_PATH等由 tests/functional_tests/shell_test_utils/run_ci_test.sh 消费。该脚本会校验全部必填变量、提升文件描述符与进程数的软限制、按N_REPEAT重复执行训练脚本并将结果与golden_values_{environment}_{platforms}.json中的基准值比对这正是 1 节点变体必须保持 GBS 等全局语义不变的原因——只有保证训练语义一致golden values 才能继续复用。移植完成检查清单完成一个用例的移植后逐项核对已识别gpt.yaml和moe.yaml中所有mr作用域测试且未被*-1node.yaml覆盖已逐个读取候选用例的模型配置已分类为“直接拷贝”或“需要适配”已为每个测试创建_1node/model_config.yaml已在需要处应用 EP 或 PP 缩减已创建/更新配方 YAMLnodes: 1, gpus: 4已分配mr-github作用域每份配方 12 个代表性测试另加mr-github-slim已验证mr-github-slim不会过载精简套件应保持小规模总结将 2 节点 GB200 MR 功能测试移植为 1 节点mr-github测试本质上是围绕world_size TP × PP × DPDP ≥ EP这条主线做并行度降维TP × PP ≤ 4时直接拷贝、DP 自动减半TP × PP 8时 PP 减半EP 4时 EP 降至 4 而专家总数不变全程保持 GBS 不变以复用 golden values。本文给出的六步工作流、分类规则、速查表与检查清单配合仓库中已落地的gpt-1node.yaml/moe-1node.yaml及大量_1node模型配置目录构成了一套可复制、可验证的 GB200 CI 覆盖扩展方法可帮助 CI 工程师与开发者快速为 Megatron-LM 的 GB200 平台补齐单节点 MR 级别的功能测试矩阵。【免费下载链接】Megatron-LMOngoing research training transformer models at scale项目地址: https://gitcode.com/GitHub_Trending/me/Megatron-LM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表