Skip to main content
StarForge —— LLM 后训练控制平面:环境、训练、评测、Playground、部署,Reflow 闭合整个回路 StarForge —— LLM 后训练控制平面:环境、训练、评测、Playground、部署,Reflow 闭合整个回路 StarForge 是围绕后训练作业的那一整圈事情的控制平面。它管的是:谁可以跑什么、 用哪个获批的运行时和数据、在哪些 GPU 上、在什么配额之下—— 以及把结果带回来:指标、日志、评测、产物、一个模型版本、一次部署, 还有那些最终会变成下一版训练数据的生产流量。 它对两件事刻意保持中立。哪个框架训练模型——NeMo-RL、verl、TRL、OpenRLHF,或者你自己的; 以及哪个后端运行它:Docker、裸机 agent、KubeRay 还是 Slurm。 一份 JobSpec 表达意图,平台把它送到其中任何一个上。 它不做的事,是拥有作业内部跑的东西。那属于训练框架,以及你的代码。
从一个空目录到 GPU 集群上的一次 GRPO 训练,四条命令,loss 曲线实时流进 Web 控制台。 你的笔记本上从头到尾没有任何集群凭据。

快速开始

安装、登录、提交,看着第一个数据点落在曲线上。

核心概念

实验、run、recipe、profile、执行器——后面一切都在用这几个名词。

它做什么

StarForge 是覆盖整个后训练生命周期的控制平面。它负责解析、校验、存储、调度和分发, 并且有意不去拥有作业内部跑的东西——那归训练框架。

选一条路

我要训模型

先快速开始,然后是提交sweep流水线

我要扩展平台

九个扩展点:recipe、benchmark、环境、rubric、插件。

我要运维这套东西

四种执行器、233 项配置、认证、存储、升级。

一次完整的 run

1

搭骨架

sf init 创建项目。sf new 把方法模板拷进 experiments/<name>/, 并在 recipe.lock.json 里固定确切的 recipe 和框架版本。
2

校验

sf validate 按方法声明检查类型、取值范围和 batch size 整除关系——在你的机器上,几秒钟, 在任何东西入队之前。
3

提交

sf submit 打包工作树,拒绝把任何看起来像密钥的东西放进去,然后把作业交给服务端。 准入检查配额、recipe 握手和镜像允许列表,通过后入队。
4

观察

作业通过 ingest 回传生命周期打点、指标、样本、日志和产物。控制台实时画出来。
5

决策

sf bench 打分、与之前的 run 对比、在 Playground 里聊一聊、导出成 HuggingFace 格式, 或者注册成一个模型版本并部署。

什么东西在哪里跑

控制平面从不执行第三方代码,训练者也从不拿到受保护数据集的原始内容。 两者都是结构上的保证,不是制度上的约定:见扩展点

两个仓库

提交要求 git 工作树干净,否则需要 --allow-dirty。这是让一个结果在半年后还能追溯到确切 commit 最便宜的办法——而那时候它恰好很重要,也恰好没人记得了。