Skip to main content
按「症状有多容易把人引到错误方向」排序。

仪表盘上有空闲 GPU,作业却一直排队

饿死这一种最像 bug。控制台永远显示「等待容量」,而制造这个流的正是平台自己—— lifecycle 作业和 Playground 会话各占一张卡,于是四卡作业每一轮都被跳过。

训练能起来但慢得离谱,或者卡在 all-reduce

多网卡机器上 FORGE_K8S_NCCL_SOCKET_IFNAME 没设,NCCL 挑错了网卡。 没有任何报错——只有很差的吞吐或者一次挂起。常见值是 bond0eth0ib0

集群起来了但 worker 注册不上

FORGE_KUBERAY_RAY_VERSION 和训练镜像里的 Ray 版本不一致。 唯一的线索是一行版本不匹配的警告,很容易淹没在启动输出里。

稍大一点的 batch 就 OOM

/dev/shm 还是容器默认的 64MB,而 Ray 的 object store 就在那里。 改 FORGE_K8S_SHM_SIZEFORGE_LOCAL_SHM_SIZE,并记住它由内存支撑—— 它加上内存上限不能超过物理内存。

多节点 run 续不上

FORGE_K8S_STORAGE_SHARED 是 true,但 PVC 是 RWO。RWO 不会让作业直接失败—— 它给每个 Pod 各自一个卷,于是 checkpoint 分片散落在不同节点上。 执行器的健康检查会把声明值和实际 PVC 核对,去读那个结果。

所有后台任务都停了

没有 Redis。后台角色需要一把共享锁,避免多个副本同时跑同一个任务。 单实例:可以接受。多副本:存储记账、诊断和每日日报根本没在跑。

权重下载卡住,或者失败在一个响应体里只有 URL 的 400 上

镜像的问题,或者 Xet。见离线内网部署

日志在滚但曲线是空的

Ingest。确认 FORGE_INGEST_URL 从 worker 节点可达,而不是从你的笔记本—— 那里的 127.0.0.1 是 worker 自己的回环。自定义训练器的话, 确认 starforge.report 真的被调用了。

重启之后所有人都掉线了

FORGE_WEB_JWT_SECRET 没设,所以每个进程各生成一把。设一个固定的强随机值。 副本多于一个时,这还意味着一个副本签的 token 会被其他副本拒绝。

GPU 长期显示「不可调度」

健康检查发现了 ECC 待退页、未纠正错误或硬件降频——或者有平台之外的进程占着这张卡。 容量视图会说明是哪一种。这类故障在任何地方都不报错;它们只产出坏结果或者悄悄变慢, 这正是这项检查存在的理由。

存储配额显示「未统计」

FORGE_STORAGE_SCAN_INTERVAL_S 是 0,或者扫描角色没在跑。 大目录树上一次完整扫描要几分钟,所以它是后台角色而不是请求时现算。

某个环境在准入时被拒

要么它需要沙箱而部署没配,要么它是 openenv-image——这套部署有意不托管它。 在准入时拒绝而不是在 launcher 里拒绝,意味着你在花掉一次资源分配之前就知道了。