训练即服务!让模型训练回归算法语义,150行代码跑通RL
量子位·2026-03-11 09:18

文章核心观点 - ModelScope团队开源了名为Twinkle的模块化训练框架,旨在为大模型后训练(尤其是强化学习)提供一条同时兼顾“易用性”与“灵活性”的新路径[1] - 该框架采用Client-Server架构,通过将训练流程组件化、提供算法语义抽象的API,使算法开发者能专注于训练逻辑,而将底层调度、资源分配等工程复杂性交给框架处理[1][5][14] 框架定位与设计理念 - 针对现有训练框架的不足:完全自定制训练门槛高,需兼顾GPU调度、资源分配等工程细节;而通用框架(如ms-swift)封装较深,算法定制需修改源码,且算力与算法深度耦合[12] - 核心设计理念是“组件化”,将大模型训练中可独立构建的部分收敛为标准模块,如Dataset、Model、Sampler等,当前已支持20余种算法组件[16][45] - 旨在通过API将训练算法语义进行抽象,让开发者关注算法逻辑,而将复杂训练流程(如Rollout -> Reward -> Update)的准确实现交给框架[14] 系统架构与核心特点 - 采用解耦的Client-Server架构,提供最大灵活性[21] - 支持多种运行模式:包括本地一体化部署、远端集群部署以及直接使用公用Serverless训练服务[8] - 提供灵活的后端支持,包括Transformers、Megatron等多样化训练后端[9] - 支持多租户训练服务:可在共享的基础模型部署上,同时训练来自多个用户的LoRA,实现算力效率提升[10][27] - 支持Python源代码启动,约150行代码即可编排复杂的RL训练循环[1][34] 接口设计与控制能力 - 在兼容Tinker API(如forward_backward, optim_step, sample)的同时,提供了更丰富的原生API以实现细粒度控制[7][22] - 细粒度训练控制:将训练步骤解耦,允许用户像编写本地PyTorch代码一样编排复杂循环,支持计算loss而不反向传播、清空梯度、仅执行前向计算等操作[23] - 动态组件配置:支持在运行过程中动态更新模型核心组件(如loss函数、优化器、对话模板等),无需重启服务或重新加载权重[24] - 远程数据处理:架构支持存算分离,可将数据逻辑(如dataset和dataloader)卸载到服务端运行,以处理Driver进程无法运行的大数据量场景[25] 多租户与并发训练 - 凭借“LoRA池+租户应用”架构,支持N个租户在完全隔离的环境下于同一基础模型上并行训练[27] - 支持异构配置:每个租户可使用独特的训练数据、优化器及损失函数[27] - 应用示例:不同租户可并发进行SFT微调、预训练、GRPO损失计算及logps推理等不同任务[29][30][31][32] - 服务端实现具备自动化集群管理与动态扩缩容功能,为规模化训练服务奠定基础[32] 性能表现 - 基于Qwen3-4B模型和GSM8K数据集的评估显示,在训练效果(奖励曲线趋势)与训练效率方面,Twinkle与基线框架veRL表现相近或更优[49][54] - 在torchrun条件下,Twinkle完成一个global batch的平均耗时约为70秒,veRL约为80秒[54] - 在昇腾(国产化)硬件上,Twinkle完成一个global batch的平均耗时约为20秒,veRL约为30秒,显示出优化后的速度优势[56][59] 开源、生态与合作 - 项目代码在GitHub上完全开源,覆盖Client和Server全部实现[6][11] - 与招商银行信息技术部深度技术合作,兼顾易用性与生产可用性,并完成了对昇腾等国产化硬件的原生支持与优化[6][56] - 作为开源社区项目,鼓励开发者通过提交PR开发新组件、贡献组件至ModelHub、共建新项目等方式参与[55] - 在ModelScope上提供了可直接使用的Serverless训练服务,当前支持通过Tinker API访问,后续将开放更多原生API[11][40]