开发者聊DeepSeek Harness:大模型训练框架该怎么瘦身
DeepSeek Harness (dsh) 今日发布,各方反响相当分化。我想分享一些个人看法,这些只是个人观点,不必过度解读。
我从 2023 年开始做 LLM 训练框架,你可能听过这个项目,它叫 LlamaFactory。
LLM 训练框架一开始没那么复杂,你只要实现 SFT 和 RLHF 就够了。但随着研究领域扩张,技术方向变多,我们有了越来越多算法变体:DPO、GRPO,现在还有 OPD。优化器栈也在不断扩张,出现了 BAdam、GaLore、Apollo、Muon 等等。
用户自然希望框架能支持所有这些技术。结果就是,框架随着时间推移不可避免地变得臃肿。
幸运的是,我从 @huggingface 学到了很多。Transformers 通过统一接口支持了 1000 多种模型架构,而 PEFT 支持了数十种 LoRA 变体。尤其是 AutoModel,这个设计非常巧妙,对我影响很大。
LlamaFactory 继承了这种类 huggingface 的工程理念。我们对数据、模型和训练算法做了解耦,同时保持了简洁的用户体验。在我看来,这是它能流行起来的主要原因之一。
2025 年,我加入 verl 团队学习,发现 RL 框架几乎经历了一模一样的过程。一开始所有功能都靠 if-else 分支实现,随着系统扩张,代码库逐渐转向抽象接口。
verl 的 Single Controller 是个很棒的设计:你只需要为单 GPU 编写程序,同一个程序就能扩展到多 GPU 运行。它底层依赖 Ray,帮那些不想成为分布式系统专家的算法研究者解决了很多系统层面的麻烦。
每个系统最终都会从简单走向复杂。训练框架是如此,Harness 也是如此。复杂系统往往容易变得不稳定,而抽象和解耦就是系统的「harness」,防止它跑起来之后脱缰失控。
2025 年 7 月,我提出了 LlamaFactory v1 的构想,它的核心理念很简单:一切皆是插件。我想要打造一个高效、透明、可扩展的训练框架。
从数据插件到分布式插件,目标是对数据、模型和分布式系统做解耦,让同一个训练程序可以在 1 块 GPU 或是 100 多块 GPU 上运行。目前它已经进入内部测试,不过说实话,距离成熟还有很长的路要走。
下方左图很清楚地展示了插件化的好处。没有插件的话,每次运行都可能触达各种各样的代码路径。而通过按需加载插件,不相关的路径会保持隔离,不会耦合在一起。
这是不是看起来很像 Agent Skills 的工作方式?完全没错。运行时激活的代码本质上就是程序的上下文,而插件就是仅在需要时才加载上下文的策略。
现在回到 dsh。dsh 基于 cordis 构建,借助它来提供
本文由 AI 翻译自英文原帖,技术名词保留英文。
查看 X 原帖