top of page

Ray Train DLC 让 EKS 上的分布式训练无需自行构建镜像

2小时前
讀畢需時 12 分鐘

AWS 于 10 月 28 日发布了一个八 GPU 训练示例,使用 Ray Train DLC,无需构建自定义容器镜像。其 Deep Learning Container 是一个打包的软件环境,提供训练框架和网络库。其余工作则集中在集群配置和工作负载验证上。

该示例在 AWS 托管的 Kubernetes 服务 Amazon EKS 上,跨两台 g6.12xlarge 实例运行语言模型 Qwen2.5-1.5B。Kubernetes 负责协调跨机器运行的容器化应用。AWS 使用 PyTorch FSDP,这是一种将模型状态分布到多个 GPU 上的训练方法,用以测试实例之间的通信。

这使得对比变得具体:一边是 AWS 维护的训练环境,另一边是团队自行维护相同的软件栈。但该示例使用随机 token 批次,即随机生成的模型输入。它验证的是基础设施,而非有实际价值的模型适配。团队可借此开始进行分布式执行,而数据集准备、评估和生产恢复仍是独立决策。

Ray Train DLC 为 EKS 团队带来了什么变化

最直接的变化,是从已发布镜像到分布式训练任务之间出现了一条有文档支持的路径。AWS 的分布式训练示例将其容器打包方式与具体的集群布局连接起来。该示例提供的内容比“训练更简单”这类笼统承诺更聚焦,也更具可操作性。

真正有价值的变化,在于共享训练环境由谁维护。

自定义镜像意味着应用团队要负责组装其依赖项。这项责任不止是安装 Python 框架。GPU 执行和通信依赖于必须协同工作的组件,其中包括训练脚本之外的库。

已发布的镜像为这项组装工作赋予了不同的所有者。应用团队仍需决定最终环境是否符合自身要求。不过,他们可以先评估已有构件,再决定是否自行维护一个等效环境。

这种区别在团队已明确训练目标时最为重要。花费在解决环境兼容性上的时间,并不会直接改善其数据集或评估流程。从首次实验中移除这部分工作,可以更早地研究工作负载本身。

该公告也需要放在准确的时间线中理解。AWS 的 Ray Train 容器更新日志显示,初始镜像于 2026 年 8 月 26 日发布,1.1 版本于 9 月 1 日发布。10 月的文章是使用这一容器系列的部署演练,而非其首次发布。

这一时间顺序改变了新闻价值。AWS 正在说明此前发布的打包环境如何融入可复现的分布式配置。重点应放在软件交付与集群运维之间的连接上,而不应暗示出现了一种新发明的训练算法。

对于工程管理者而言,这一决策更容易界定。他们可以询问:维护单独的训练镜像,是否能提供已发布环境缺少的能力。这比假定每个分布式训练项目都需要自行构建容器更具体。

对于平台工程师而言,该示例提供了一个可与本地需求比较的参考配置。差异会成为明确的评审事项。团队可以识别哪些变更属于其工作负载,哪些反映了既有基础设施惯例。

这条已发布路径也更容易解释例外情况。如果组织需要不同的框架构建版本或专用扩展,这一需求便可证明额外维护是合理的。此时,自定义镜像源于已记录的需求,而不再是默认起点。

这些都不能证明其具有普遍适用性。它们只是提供了一个团队可审视的务实替代方案。最恰当的解读是,AWS 降低了开始评估这一特定分布式训练配置所需的环境组装工作量。

压力转向自定义镜像维护

AWS 的训练容器栈包含分布式执行框架 Ray,以及机器学习框架 PyTorch。它还捆绑了 NVIDIA 的 GPU 计算平台 CUDA,以及 NVIDIA 用于 GPU 间通信的库 NCCL。

网络组件包括 Elastic Fabric Adapter,即 AWS 面向紧密耦合工作负载的网络接口,以及 AWS OFI NCCL 插件。该插件将 NCCL 与网络提供方连接起来。AWS 表示,会在发布版本前测试这一组合环境。

现在,选择自定义镜像的团队需要有理由自行承担同样的集成工作。

这并不意味着自定义环境已经过时。组织可能需要经过批准的依赖项、专用构建版本或内部发行方式。这些需求依然合理。压力在于,常规性地重复已有构件已经解决的打包工作。

设想一个正在研究其训练任务能否跨机器运行的工程团队。它最初的问题是分布式行为。构建单独镜像,会在团队能够触及该问题之前引入另一项调查。

一个受维护的基线可以缩短这一过程。团队先评估参考环境,再记录任何实际的不兼容之处。其定制化决策随后基于从工作负载中收集的证据,而非执行前作出的假设。

这是运营层面的比较,而非声称某一种容器始终具有更高性能。经过谨慎维护的内部镜像同样可以满足相同的技术要求。差异在于所有权、更新流程,以及维持环境可用性所需的工作量。

已发布镜像也会改变团队描述自身平台工作的方式。打包更少的软件并不意味着贡献更少。平台工程师可以将注意力放在访问控制、资源调度、可观测性以及组织训练工作负载的需求上。

当基线是共享的,这些责任更容易被区分。如果多个实验采用同一环境,评审者就能专注于代码和配置之间的差异。每个实验都使用独立镜像,则会使这种比较更难组织。

这一收益仍取决于采用纪律。团队需要记录使用了哪些构件,以及引入了哪些额外依赖项。否则,名义上共享的基线可能掩盖不同任务间各异的执行环境。

因此,Ray Train DLC 提供的是一种维护选择,而不是免于维护的豁免。AWS 负责已发布环境的组装。采用该环境的组织则负责其验收标准、部署策略,以及何时更新的决策。

合理的内部评审应询问:自定义环境实现了什么、由谁维护,以及如何检查兼容性。这些问题并不预设已发布容器一定胜出,而是让取舍足够清晰以便评估。

更广泛的含义很直接:应用特定工作应当证明应用特定打包的合理性。当工作负载适配受维护环境时,自行拥有另一套构建就成为带有持续义务的选择。

FSDP 让网络成为训练设计的一部分

网络栈之所以重要,是因为分片改变了 GPU 的协作方式。在完全分片训练中,FSDP 会将参数、梯度和优化器状态分布到各个工作进程。参数保存学习到的数值,梯度引导更新,优化器状态则跟踪更新过程。

在分片单元进行计算之前,工作进程会收集其所需参数。在反向计算之后,它们会同步并划分梯度。这减少了重复状态,但也引入了训练设计必须容纳的通信。

内存节省和通信需求应属于同一项工程决策。

这种取舍解释了提供兼容网络库为何具有实际价值。训练环境需要的不只是能正常导入模型。它还必须支持所选分布式策略所需的数据交换。

相关比较并不只是更多 GPU 与更少 GPU 的对比,而是工作负载在计入通信后,是否能从状态分布中获益。成功启动只能证明执行可行;性能测量才能证明该安排是否有用。

PyTorch 为不同分片策略提供文档,是因为这种平衡会有所不同。完全分片会分布更多状态,而混合方法则将机器内分片与跨机器复制结合起来。这些选择的存在表明,不应将参考配置视为通用最优解。

另一套分布式训练系统 DeepSpeed 提供了重要的行业参照。其 ZeRO 方法同样会划分训练状态。PyTorch 明确指出,DeepSpeed 的 ZeRO Stage 3 是 FSDP 的灵感来源之一,这使 AWS 示例处于既有技术方向之中。

这一背景让新颖性保持在恰当尺度。AWS 在此的贡献涉及打包的执行环境及其部署路径。减少重复训练状态这一底层思路早于这份演练。

对于比较不同方案的团队而言,有价值的问题是哪种策略适合其模型与运行约束。容器的可用性可以降低研究某种方案所需的工作量,但无法决定不同分布式训练系统之间的比较结果。

硬件描述同样需要谨慎对待。AWS 列出的 g6.12xlarge 配备四块 NVIDIA L4 GPU、192 GiB 主机内存和 40 Gbps 网络。这些规格描述的是实例,而非该工作负载的实测训练吞吐量。

网络带宽数值本身无法回答一次实验会多快完成。训练包含计算和通信,二者的关系由工作负载决定。读者不应将硬件规格直接转化为应用性能结论。

同样的谨慎也适用于内存估算。持久模型状态并不代表训练期间的每一次分配。评估任务是否适配时,中间计算、临时缓冲区和工作负载设置也同样重要。

实用的理解是,分片形成了一种工程上的交换:它通过增加协调来降低某些内存需求。打包的网络栈处理了这项交换中必要的一部分,但并不决定它对每个工作负载是否有利。

这正是通信路径应得到明确验证的原因。容器提供组件,而实验必须确认这些组件在实际集群上的表现。

容器保持不变,而集群配置发生变化

AWS 的KubeRay 部署指南展示了该镜像如何融入 Kubernetes。KubeRay 是一种 operator,即管理 Ray 资源的控制器。其 RayCluster 配置描述了协调用 head 和 worker pods,后者是运行容器的 Kubernetes 单元。

该指南将 GPU worker 与 head 节点分离。它还要求镜像中的 Ray 版本、Ray 声明的 GPU 数量以及 Kubernetes 资源分配保持一致。这些都是围绕镜像的配置责任。

跳过镜像构建,意味着集群配置仍是部署中需要明确处理的一部分。

这一边界很有用,因为它将原本容易混淆的问题区分开来。镜像决定所提供的软件环境。集群配置决定该环境在何处运行,以及其进程可获得哪些设备。

设备可用性尤为重要。容器内的库无法替代其预期使用设备的实际访问权限。因此,部署审查必须同时检查打包的依赖项,以及分配给 worker 的资源。

Ray Train 的启动器增加了另一层协调机制。其 TorchTrainer 会在多个 worker 进程之间运行训练函数。ScalingConfig 描述 worker 数量和加速器需求,使这些决策不必写入每个 worker 的训练循环中。

这种分离为团队提供了更清晰的变更组织方式。模型实验不应自动要求采用不同的集群拓扑。集群容量发生变化,也不应自动意味着必须重写模型训练逻辑。

对于可复现的评估而言,有价值的产物是围绕执行过程作出的完整选择集合。其中包括镜像标识、集群配置、任务代码和工作负载设置。仅记录模型名称会留下过多无法解释的部分。

“可复现”一词也应有明确的边界。重复部署输入,与保证训练结果完全一致并不是一回事。团队应说明其复现的是基础设施、执行行为,还是模型质量结果。

公开的配置有助于建立其中第一种复现。它提供了一个参考基准,可据此审查本地修改。它并不能免除团队解释修改后的设置为何表现不同的必要性。

对工作负载的变更也应获得与基础设施变更同等的关注。提交任务时添加依赖项,可以保留基础镜像,同时改变任务环境。这些新增内容也应纳入实验记录。

这正是团队文档具有实际运维价值的地方。工程师需要能够访问产生某项观察结果的配置,以及该观察结果本身。一张已完成任务的截图无法解释其背后的每一项决策。

一个可搜索的知识库可以帮助团队保留部署决策和排查记录。这有助于审查和交接,同时不会取代配置文件或日志。

因此,固定镜像的方法改变了复杂性的组织方式。它将软件打包作为共享基线,并让部署差异在配置中保持可见。在将参考设置视为自身标准之前,团队仍需要检查这些差异。

合成运行并不能证明微调有效

示例中的随机输入是一种有意的简化。它们可在不将数据集纳入初始设置的情况下验证执行路径。只要读者理解结果证明了什么,这种做法就适合用于基础设施检查。

一次成功完成的分布式任务与一个经过有效训练的模型,需要不同的证据。

前者涉及执行:worker 启动、参与并完成所请求的计算。后者涉及学习:所得模型在定义的任务上表现可接受。两种结果都不会自动带来另一种结果。

这一差异尤为重要,因为简报描述的是微调,即对现有模型进行额外训练。该示例在该模型上演练训练操作。随机输入无法证明其在真实任务上有所提升。

因此,采用该示例的团队必须定义其数据要回答的问题。这包括决定训练后何种行为可被视为可接受。缺少这一定义时,基础设施成功可能成为衡量产品进展的误导性替代指标。

评估也会改变对 loss(训练中使用的数值目标)的解读。报告的 loss 值描述的是已配置的计算过程。它本身并不能证明经过适配的模型满足部署要求。

下一个边界涉及已保存的进展。Ray 的持久化存储指南要求多节点训练将 checkpoint 保存到共享目标位置。checkpoint 会保留训练状态,使任务能够恢复,或让其结果可在后续使用。

Ray 将保存 checkpoint 的工作负载与仅报告指标的运行区分开来。未保存 checkpoint 时,指标可以在本地聚合。因此,一次合成执行检查可以完成,却无法证明较长训练工作负载所需的存储行为。

这一区别具有实际后果。在将该设置用于有价值的训练之前,团队应验证自己能够保存并重新加载所需状态。重启容器不等同于恢复实验进展。

所有权问题在这里再次出现。公开镜像可以提供兼容的库,但采用该镜像的团队仍需定义产物存储的位置以及谁可以访问它们。这些要求来自工作负载和组织本身。

性能主张同样需要独立证据。源教程建立了一项配置并描述了其验证路径。它不应被解读为一项独立比较,证明这种安排是 Qwen 的最快选择。

公平的比较应在保持工作负载和测量条件一致的前提下考察不同方案。否则,输入处理或训练设置的差异可能掩盖基础设施比较实际衡量的内容。

也没有必要虚构批评性反应,来让这篇报道显得存在争议。文档中列出的技术限制已经提供了足够的审视空间。恰当的问题是:现有证据是否支持预期的运维决策。

对于基础设施概念验证而言,该示例涵盖了一条明确的执行路径。若要用于生产环境,团队还需要关于自身数据、产物、恢复能力和任务结果的额外证据。将这些决策分开处理,能让示例及其局限性都更易于使用。

关注真实工作负载、传输证据和镜像更新

接下来值得关注的是具体的工程观察结果。在未来几个月,读者应寻找能够将公开环境与真实训练工作需求联系起来的证据。有三个信号最为重要,并且存在明确的优先顺序。

最有力的后续证据将展示:在合成输入被替换后,哪些内容仍然可重复。

首先,关注同时包含训练行为和任务评估的真实工作负载报告。报告应清晰说明模型、数据处理方式和设置,以便解读其结果。仅仅完成任务无法证明经过适配的模型质量。

checkpoint 恢复能力应与这些证据一同呈现。一个能够从保存状态成功恢复的工作负载,回答了合成运行尚未解决的运维问题。这将强化采用该环境的理由,使其价值超越初步连通性验证。

令人失望的任务结果并不会自动否定容器。数据和训练选择同样会影响结果。有价值的报告应将执行失败与建模失败分开,明确系统中哪一部分需要关注。

其次,关注与受控性能测量相结合的传输证据。传输证据是指显示 worker 实际使用了哪条通信路径的观察结果。这些观察结果应与吞吐量结果一同提供,而不应仅因使用了支持 EFA 的实例就被推断出来。

比较还应区分连通性与效率。确认预期路径能够运行,是解读结果的必要前提。但这并不能证明工作负载有效利用了可用硬件。

公开这些条件的报告将强化打包方案的论点。它们会表明,团队能够在自己的环境中检查所提供技术栈的行为。无法解释的差异则会指出仍需进一步诊断或更清晰指导的领域。

第三,关注镜像更新如何融入可重复实验。AWS 的变更日志已将发布版本及其捆绑组件区分开来。采用该容器的团队应评估自身的更新流程如何保留先前执行环境的身份标识。

摘要(digest)即容器镜像的内容标识符,有助于记录特定运行中使用的产物。该记录应与配置和工作负载变更一同保存。否则,团队可能难以确定究竟是哪项变更造成了不同结果。

这一信号关系到 Ray Train DLCs 持续维护的价值主张。当组织能够审慎采用更新,并清晰排查回归问题时,公开环境才能提供持久价值。最初省去构建步骤,只是这种关系的一部分。

对于当前正在评估该示例的读者,应先界定你的决策所需的证据。将公开配置作为参考,记录精确环境,并将连通性检查与工作负载结果区分开来。然后引入真实数据,验证已保存状态的恢复能力,并在一致条件下比较测量结果。将部署记录与训练发现放在一起,以便其他工程师理解发生了哪些变化。Ray Train DLCs 为团队提供了一个持续维护的起始环境;采用团队则需提供证据,证明它适合自身工作。你当前训练流程中,哪些部分确实需要自定义镜像,哪些部分又更适合先评估这一共享基线?

 
 

免费开始使用

一款本地优先的AI助手

为了获得更好的人工智能体验,

remio 目前仅支持Windows 10+ (x64)和M-Chip Mac 。

你的 AI 工作伙伴

和 remio 一起高效工作

规划、创作、交付

一站式完成

bottom of page