
如何中断与恢复 Spirula Studio 训练checkpoint 断点续训完整指南【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studioSpirula Studio 是一款跨厂商Vulkan / CUDA的 3D Gaussian Splatting 训练器覆盖视频 → splat → 网格的完整流程。面对动辄数万步的长训练断电、显存不足或临时想调参都是家常便饭——本文将带你掌握它的 checkpoint 断点机制如何优雅中断训练、checkpoint 目录里到底存了什么、以及怎样用--resume一键断点续训让训练随时停、随时续。训练中断的 3 种方式Spirula Studio 的中断设计围绕一个核心思想定期自动存档任何时刻退出都能找回最近进度。CLI 直接退出spirula train按CtrlC终止进程。训练器默认每steps_per_save步默认 2000 步见 src/config/TrainConfig.h自动保存一次 checkpoint即使进程被强制结束也能回退到最近一次存档继续。GUI 停止训练图形界面的训练会话支持 pause/stop导航离开或退出时会弹出停止并保存确认框实现见 src/app/gui/TrainRunner.h 与 src/app/README.md确认后即可安全离开。只留最新存档save_only_latest_checkpoint默认为true每次保存后自动清理旧 checkpoint 目录磁盘上始终只保留最近一份省去手动清理。认识 checkpoint 目录step-*.ckpt 里都有什么每次存档都会在运行目录run dir下生成一个形如step-000002000.ckpt/的文件夹结构如下命名与解析逻辑见 src/checkpoint/Resume.hrun_dir/ ├── config.json # 本次运行的完整训练配置 ├── step-000002000.ckpt/ # 一个存档点 │ ├── state.tar # 续训载荷state.json 清单 每块 GPU 缓冲一个 .npy │ └── splat.ply # 推理产物过滤、反量化后可直接渲染/建网格的高斯 └── step-000004000.ckpt/ # 下一个存档点……state.tar是一个零依赖的 tar 包内含state.json步数、高斯数量、SH 阶数等运行时清单和按池槽命名的扁平.npy数组。读写工具全部内建无需 Python 环境格式实现见 src/core/CheckpointIO.h 与 src/engine/EngineCheckpoint.cpp。splat.ply是随时可交付的成果无论你是否续训它都可以直接交给spirula-mesh做网格提取或在 Web 查看器中查看。存档时 GPU 缓冲分块拷回主机不额外占用显存多 GB 级别的状态也能稳定落盘。断点续训的前提先开启 save_full_checkpoint这是新手最容易踩的坑 ⚠️默认情况save_full_checkpoint falsecheckpoint 只保存推理/外观参数和splat.ply不含世界高斯参数与优化器状态无法恢复训练。开启--save-full-checkpoint 1后存档才会额外写入全部世界参数与优化器状态成为可续训的完整 checkpoint。恢复前程序会做资格检查check_resumable见 src/checkpoint/Resume.cpp若检测到该存档不可续训会提前报出清晰错误并提示你重跑源训练时加上--save-full-checkpoint 1而不是加载到一半才失败。这类存档仍然可用于推理和建网格。 建议任何预计要分阶段完成、或可能中途调整的长训练都从启动就开启该开关。一键恢复--resume 的两种用法恢复入口是--resume参数解析与配置合并逻辑见 src/checkpoint/Resume.h 和 src/app/TrainerCore.cpp支持两种写法1️⃣ 指向运行目录 —— 自动选最新存档./build_vulkan/spirula train --resume outputs/myrun-20260925程序会按step-*命名规则找到该目录下编号最大的 checkpoint数字填充命名保证字典序即数值序见 src/checkpoint/Resume.cpp。2️⃣ 指向具体存档 —— 精确回退到某一步./build_vulkan/spirula train --resume outputs/myrun-20260925/step-000030000.ckpt恢复时的配置合并规则续训不是盲恢复配置按以下优先级分层叠加checkpoint 自带的config.json作为基础——它记录了当初架构参数因此续训时甚至不需要再传--data输出目录默认回到原 run 文件夹新存档、评估图与日志和旧的一起存放命令行上指定的 preset 会重新施加其覆盖项显式传入的命令行参数优先级最高程序记录的是你实际敲了哪些参数而非与默认值比较因此把某项改回默认值也生效。恢复动作本身发生在引擎骨架搭建完成后按state.json重建优化器布局再逐块把.npy拷回 GPU步数从存档处继续优化器动量、学习率状态完整延续。想改参数布局checkpoint 会自动适配续训时如果改变了模型布局Spirula Studio 也能处理适配逻辑在 src/checkpoint/Adapt.cpp调小cap_max优先丢弃尾部未饱和的高斯再按最低不透明度淘汰其余参数无损迁移更换sh_degree、增删 bilagrid / PPISP 通道缓冲在主机侧重写为目标布局全程不分配显存——这正是为上次训练显存爆了、换个更小布局续训的场景设计的量化缓冲会经过引擎自己的编解码器解码再重编码与训练核共用同一份代码路径。适配完成后引擎拿到的就是一个普通的state.tar后续流程与同布局续训完全一致。顺便区分--init-ply 热启动 ≠ 断点续训--init-ply file.ply|run_dir|step-*.ckpt用已训练好的 PLY 作为初始高斯启动全新训练步数从 0 开始、优化器从零起步。适合数据集扩充后在旧模型上继续精修而--resume才是原封不动接着练。两者同时给出时--resume优先并给出提示。常见问题速查问题原因与对策checkpoint ... is NOT resumable该存档未开save_full-checkpoint只含推理参数重训时加--save-full-checkpoint 1该存档仍可拿splat.ply做推理/建网格no state.tar or step-*.ckpt found路径既不是 run 目录也不是.ckpt目录确认指向的是run_dir或run_dir/step-*.ckpt本身max_num_splats mismatch手动改了容量且超出自动适配范围让cap_max不增大或依赖布局适配流程磁盘紧张保持save_only_latest_checkpoint 1默认即开启只留最新一份存档小结掌握 Spirula Studio 的断点续训只需要记住三步训练前预计长训练就加--save-full-checkpoint 1这是续训的门票中断时随时CtrlC或 GUI 停止——每 2000 步可调的自动存档是天然的安全网恢复时--resume指向 run 目录最新或具体step-*.ckpt定点配置自动合并布局变更还能自适应重写。更多细节可参阅官方文档索引 docs/README.md 与应用说明 src/app/README.md 中的 Resume 章节让长训练从此没有从头再来。【免费下载链接】spirula-studioCross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA.项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考