Grendel-GS 使用教程
1. 项目介绍
Grendel-GS 是一个分布式系统下 3D Gaussian Splatting 训练的实现。该项目旨在帮助 3DGS 利用分布式系统支持实现其扩展性,类似于当前大型语言模型依赖的分布式系统。通过使用 Grendel,您的 3DGS 训练可以利用多个 GPU 的能力,实现显著更快的训练速度,支持 GPU 内存中更多的 Gaussian,并最终允许重构更大区域、更高分辨率的场景以获得更好的 PSNR。Grendel-GS 保留了原始算法,使其成为任何 Gaussian Splatting 工作流程或应用中原始 3DGS 实现的直接和安全替代。
2. 项目快速启动
环境准备
确保您的机器上安装了 Conda、与 CUDA 兼容的 GPU 和 CUDA 环境。然后安装以下必要的包:
- PyTorch
- Torchvision
- Plyfile
- tqdm
确保 PyTorch 版本 >= 1.10 以支持分布式训练的 torchrun
。最后,编译并安装两个依赖的 CUDA 仓库 diff-gaussian-rasterization
和 simple-knn
,它们包含用于渲染等的自定义 CUDA 核心。
使用以下命令创建环境:
conda env create --file environment.yml
conda activate gaussian_splatting
克隆仓库
由于仓库包含子模块,请使用以下命令克隆:
git clone git@github.com:nyu-systems/Grendel-GS.git --recursive
单 GPU 训练
对于单 GPU 非分布式训练,且批量大小为 1 的情况:
python train.py -s <path to COLMAP dataset> --eval
分布式训练
对于 4 GPU 分布式训练,且批量大小为 4 的情况:
torchrun --standalone --nnodes=1 --nproc-per-node=4 train.py --bsz 4 -s <path to COLMAP dataset> --eval
3. 应用案例和最佳实践
- 案例一:使用 Grendel-GS 在 4K 场景下训练 Mega-NeRF Rubble,支持超过 4000 万个 Gaussian,而不会出现内存溢出。
- 案例二:在仅 45 秒内将 Temple&Tanks Truck 场景训练至 PSNR 23.79(基于 7000 张图像)。
4. 典型生态项目
目前,Grendel-GS 是一个独立的开源项目,它基于原始的 3DGS 实现进行扩展。其生态项目可能包括:
- 其他基于 Gaussian Splatting 的渲染和训练项目。
- 利用 Grendel-GS 进行扩展的定制化 CUDA 核心开发。
- 针对特定应用场景优化的 Grendel-GS 集成。
以上是 Grendel-GS 的基本使用教程,希望对您有所帮助。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考