Command Palette
Search for a command to run...
PithTrain:一个紧凑且智能体原生的MoE训练系统
PithTrain:一个紧凑且智能体原生的MoE训练系统
Ruihang Lai Hao Kang Haozhan Tang Akaash R. Parthasarathy Zichun Yu Junru Shao Todd C. Mowry Chenyan Xiong Tianqi Chen
摘要
专家混合(MoE)已成为前沿语言模型的主流架构。为满足这一需求,生产级框架经过多年工程努力构建了优化的MoE训练栈。然而,针对新架构和系统优化演进这些栈仍然成本高昂。随着AI编程智能体的兴起,它们可以自动化部分训练框架开发并加速这一演进。但将它们应用于现有框架会带来隐性成本,这些成本在当今仅关注吞吐量的评估中不可见。我们将这一缺失的维度命名为智能体任务效率(ATE):即使用编程智能体理解、操作和扩展框架的成本。基于四项智能体原生设计原则,我们构建了PithTrain,一个紧凑的、智能体原生的MoE训练框架。我们进一步引入了ATE-Bench,涵盖现实世界的训练框架任务。我们的评估显示,PithTrain在吞吐量上可与生产级框架媲美,并且在ATE-Bench上,PithTrain实现了更高的智能体任务效率,智能体轮次最多减少62%,活跃GPU时间最多减少64%。
一句话总结
卡内基梅隆大学、Xlue和NVIDIA的研究人员提出了PithTrain,一个紧凑且agent原生的混合专家(Mixture-of-Experts)训练系统,引入了agent-task efficiency(ATE)和ATE-Bench,使coding agents能够理解和扩展该框架,agent turns减少多达62%,活跃GPU时间减少64%,同时与生产级框架的吞吐量相匹配。
核心贡献
- PithTrain是一个约11K行Python原生的MoE训练框架,从一开始就设计为agent原生,在NVIDIA H100和B200 GPU上匹配了生产级框架的训练吞吐量。
- 指导PithTrain的四个agent原生ML训练框架设计原则:代码紧凑性、Python原生组件、无隐式间接调用以及agent skills。
- ATE-Bench在固定agent和任务的情况下变化训练框架,一项实证研究表明,在PithTrain上Agent Turns减少多达62%,活跃GPU时间减少64%,并包含skills消融和案例研究。
引言
作者解决了为混合专家(MoE)语言模型演进分布式训练框架的挑战,其中生产栈依赖于分层Python设计,并包含大量编译扩展、插件系统和基于注册的间接调用。尽管这些设计能实现峰值吞吐量,但在将框架适配到新架构或优化时,它们使得AI coding agents定位、追踪和验证更改的成本高昂。现有的评估仅关注训练吞吐量,忽略了扩展系统所需的工程努力。为了解决这一问题,作者引入了PithTrain,一个从头开始构建为agent原生的端到端MoE训练框架。它遵循四个原则:代码紧凑性、Python原生组件、避免隐式间接调用的直接调用以及捆绑的agent skills。他们还定义了agent-task efficiency(ATE)并创建了ATE-Bench,这是一个在固定coding agent的情况下变化框架的基准,以衡量设计选择如何影响agent成本。PithTrain匹配了生产级框架的训练吞吐量,同时使coding agents能够以显著更少的turns和更少的GPU时间完成相同任务。
数据集
作者引入了ATE-Bench,一个精心设计的基准,用于评估跨训练框架的agent-task efficiency。它固定agent和任务,变化框架,因此性能差异可归因于框架设计。该基准包含20个任务,分为三个类别,每个类别反映了框架工作中的常见模式。
数据集组成与来源
- 该基准是一套手工制作的任务集,而非抓取或自动生成的数据集。
- 任务设计为在多个框架(如PithTrain和生产级框架)中有效,并避免特定于框架的怪异行为。
- 该套件涵盖三种重复出现的开发者活动:理解框架、将其作为性能分析工具操作以及用新功能扩展它。
各子集的关键细节
- Q&A(12个任务): 只读问题,其答案是代码的属性,而非运行时测量。例如:“设备网格是如何构建的?”这些问题经过筛选,在所有评估的框架中工作方式相同。
- 操作与性能分析(4个任务): 需要将框架作为工具运行、插桩和性能分析的任务。例如:捕获Nsight Systems性能分析并识别最耗时的CUDA内核。
- 新功能(4个任务): 针对已发布的参考实现,端到端移植新模型架构。例如:实现混合块注意力(MoBA)。这些涉及大量代码修改和测试驱动的迭代。
论文如何使用数据
- 该基准用于评估agent-task efficiency,方法是在不同框架上对每个任务运行固定的agent。
- 作者报告了五个独立的努力指标:会话持续时间、活跃GPU时间、agent turns、每轮上下文大小和输出tokens。不使用单一的标量指标。
- Agent的参与程度在类别间加深:Q&A是只读的,操作与性能分析增加了执行和少量插桩,新功能需要大量修改和迭代。
处理细节
- 每个任务都附有详细描述和按类别划分的正确性检查(在论文附录B中定义)。
- Q&A问题经过明确筛选,排除了特定于框架的行为,以确保跨框架有效性。
- 除任务定义和评估标准外,未描述任何裁剪或元数据构建;基准按原样用于框架比较。
方法
作者介绍了PithTrain,一个围绕四个agent原生原则设计的系统,以促进coding agent的交互。首先,他们优先考虑紧凑的代码库,确保整个框架能放入前沿coding agents的单个上下文窗口中,这与超过160K行的生产级框架形成对比。其次,该框架是Python原生的,允许agents在单一语言中导航代码,并消除了编译扩展的重建周期。第三,他们强制执行无隐式间接调用的规则。生产级框架通常通过运行时规范或插件注册表解析子模块,这模糊了局部可读性。如下图所示,PithTrain直接在自包含的文件中实例化层,而不是依赖具有隐式间接调用的共享层骨架。
第四,系统集成了任务特定的agent skills,它们是编码了已验证程序的程序化操作手册,用于重复性任务。
关于系统架构,代码库分为三层:应用层、引擎层和算子层。请参考框架图以查看组件分解和行数。为了保持紧凑性,PithTrain将其范围精确缩小到分布式混合专家(MoE)训练所需的组件,支持流水线并行、通过FSDP的数据并行、上下文并行、专家并行、FP8训练和DCP检查点。
为了实现有竞争力的训练吞吐量,作者实现了几种标准的MoE优化。他们采用了具有计算和通信重叠的DualPipeV流水线调度,在专家并行边界将每个transformer层分解为五个阶段,并在单独的流上运行all-to-all通信。他们对除MoE前向和后向传递之外的所有transformer计算应用了fullgraph模式的torch.compile,以在编译时拒绝图断裂。其他优化包括wgrad延迟、融合的SwiGLU内核、专家并行调度去重、跨微批次的FP8权重缓存,以及用于token散射和量化的融合Triton内核。
最后,agent skills围绕三个核心属性设计:特定范围、明确的前提条件和可验证的成功。下图使用validate-correctness skill说明了这些属性。描述和触发器定义了范围,前提条件部分列举了环境和数据假设,以便及早发现缺失状态,过程以返回可复现的PASS或FAIL判定的脚本调用结束。
实验
评估使用ATE-Bench比较了PithTrain与Megatron-LM和TorchTitan在训练吞吐量和agent-task efficiency方面的表现,该基准固定agent和任务,以隔离框架设计在Q&A、性能分析和新功能集成方面的影响。PithTrain在训练吞吐量上匹配或超过了生产级框架,同时大幅减少了agent的工作量:其紧凑、Python原生且无隐式间接调用的代码库带来了更少的agent turns、更低的上下文使用量和更少的GPU时间,因为故障会以可读的traceback在本地显现,而不是出现不透明的C++错误或隐藏的注册表。消融研究证实,仓库内的skills通过为重复性任务提供固定计划,进一步降低了agent的推理开销,而关于集成MoBA的案例研究表明,编辑在所有框架中占主导地位,但PithTrain较低的探索成本和单文件修复与其他系统中的多文件调试和内存压力重运行形成对比。
PithTrain是唯一满足所有四个agent原生设计原则的框架:紧凑的Python代码库,无隐式间接调用,并内置agent skills。像Megatron-LM和DeepSpeed这样的生产级框架拥有大型、多语言的代码库,并存在隐式间接调用,而TorchTitan是Python原生的,但仍依赖间接调用且代码库更大。这些结构差异直接影响agent的工作量,紧凑性和局部可读性减少了探索并使修复保持在本地。PithTrain的代码库(11K行)比TorchTitan(38K)小三倍多,比Megatron-LM(149K)和DeepSpeed(167K)小一个数量级以上。只有PithTrain避免了隐式间接调用,以牺牲跨模型重用为代价换取局部可读性,帮助agents识别在调用点运行的是哪段代码。PithTrain和TorchTitan是Python原生的,消除了编译扩展的重建周期,并呈现出可读的traceback,这与Megatron-LM和DeepSpeed不同。Agent skills仅存在于PithTrain中,通过提供固定程序,在重复性训练系统任务上将agent turns减少多达70%。在MoBA集成案例研究中,PithTrain的紧凑性和无间接调用使修复保持在agent编辑的本地,而Megatron-LM需要多文件修复。
PithTrain保持代码库紧凑,约11K行,整个栈用Python编写,除了用于自定义内核的Python DSL。扁平的文件结构和无插件注册表消除了隐式间接调用,同时每个MoE模型位于自包含的文件中,以利于局部可读性。Agent skills作为专用文件放置在项目根目录下,使重复性任务易于自动化。整个栈是Python原生的,仅对自定义内核依赖Python DSL,避免了混合语言的复杂性。扁平的代码组织,无插件注册表或运行时规范,消除了隐式间接调用,因此模型是自包含的且易于导航。Agent skills作为专用文件存在于项目根目录下,直接编码了正确性验证和性能分析等任务的程序。
PithTrain提供了一组skills,编码了重复性训练框架任务的程序,每个都具有特定范围、明确前提条件和可验证的成功检查。当agents将这些skills用于验证和性能分析任务时,其推理开销大幅下降,而GPU时间几乎保持不变。在MoBA集成案例研究中,PithTrain紧凑的代码库和无隐式间接调用导致与其他框架相比更少的探索和更低的每轮上下文。启用skills后,两个任务的agent turns分别下降了70%和52%,表明agent遵循固定计划而不是迭代推导。活跃GPU时间在有skills和无skills时几乎相同,因为GPU工作由固定的训练运行决定,而非agent。在MoBA集成中,PithTrain的编辑输出tokens在三个框架中最低,其每轮上下文窗口始终低于Megatron-LM。PithTrain上的故障局限于单个文件,而Megatron-LM的故障跨越多个文件,反映了PithTrain的紧凑性和无隐式间接调用。
在NVIDIA H100和B200 GPU上的五个MoE训练配置中,PithTrain在四种情况下匹配或超过了Megatron-LM的吞吐量,在第五种情况下仅落后1.4%。TorchTitan要么内存不足,要么吞吐量低于其他两个框架。这些结果证实,紧凑的Python原生代码库可以实现有竞争力的训练吞吐量。在B200节点上使用FP8精度时,PithTrain的性能比Megatron-LM高出多达27%。TorchTitan在两个配置上遇到内存不足错误,并在所有其他配置上显示出最低的吞吐量。
在代码库Q&A任务上,PithTrain与Megatron-LM和TorchTitan相比,始终减少了agent的工作量。Agent turns相对于Megatron-LM下降多达67%,每轮上下文和输出tokens也更低,反映出紧凑的代码库和较少的隐式间接调用。除一个问题外,PithTrain在所有问题上所需的agent turns均少于Megatron-LM,最大降幅达67%(例如Q2:Megatron-LM上54 turns vs PithTrain上18 turns)。PithTrain上的每轮上下文始终更低,通常少数千个tokens,表明在Q&A任务期间搜索空间更小。
评估比较了PithTrain(一个紧凑且Python原生的训练框架,内置agent skills)与生产级框架Megatron-LM、DeepSpeed和TorchTitan在代码库Q&A、MoBA集成案例研究以及H100和B200 GPU上的吞吐量基准测试中的表现。PithTrain的小代码库、扁平结构以及避免隐式间接调用大幅减少了agent的探索,使修复保持在本地,并降低了每轮上下文,而其agent skills进一步降低了重复性任务上的推理开销。尽管设计极简,PithTrain在大多数配置下匹配或超过了Megatron-LM的吞吐量,证实了一个局部可读、agent原生的代码库能够以少得多的agent工作量实现有竞争力的训练性能。