Skip to content

Install 3D Gaussian Splatting 2.10.3 [2026 Guide]

Deploy 3D Gaussian Splatting 2.10.3 via pip with CUDA 12, gsplat backend, train commands, verify steps, and real fix list for common install failures.

7 min readIntermediate

Why does every 3D Gaussian Splatting install die on day one?

Clone the famous repo, run conda env create, watch it die on CUDA skew, missing cl.exe, or a submodule that never cloned. Still how the 2023 reference tree fails on modern boxes. This guide gets a working 3D Gaussian Splatting train/render stack with packaged gaussian-splatting 2.10.3 (PyPI release dated Sep 8, 2026): same core algorithms, normal pip UX, maintained gsplat CUDA backend.

Bit-for-bit parity with Kerbl et al.? Keep graphdeco-inria/gaussian-splatting nearby. To train this week on CUDA 12, start with the wheel.

System requirements (before you pip anything)

Item Minimum Recommended
OS Linux or Windows 10/11 Ubuntu 22.04+ or Win11
GPU NVIDIA, Compute Capability 7.0+ RTX 30/40-class, 12GB+ VRAM
VRAM (train) ~6-8GB small scenes / heavy downscale 16-24GB for full paper-style quality
RAM / disk 16GB RAM, 20GB free (practical floor) 32GB+ RAM, SSD for datasets
Software Python 3.10+, NVIDIA driver, CUDA toolkit matched to PyTorch PyTorch ≥2.4, CUDA 12.4 toolkit, gsplat

Original project docs sized paper-quality runs around a 24GB card and CC 7.0+. Packaged builds run leaner – gsplat’s README claims up to ~4× less GPU memory (and up to ~15% less train time) versus the classic rasterizer on matched evals – but you still need NVIDIA. No AMD/Intel path in these stacks as of March 2026.

Funny how often the “GPU problem” is actually a compiler-path problem. The card is fine; the shell that launched pip never saw nvcc or cl.exe.

Download / official sources

Skip random one-click forks. The PyPI package is a documented refactor from commit a2a91d9, with gsplat/2DGS-style options on top of the same core math.

Install 3D Gaussian Splatting 2.10.3 step by step

Clean venv or conda env. Match the PyTorch CUDA tag to the toolkit on the machine – maintainers call out 12.4. Mismatch is how you get silent wrong-arch binaries or runtime lib import errors later.

# 1) Env
conda create -n gs310 python=3.11 -y
conda activate gs310

# 2) CUDA toolkit (12.4 via system install or conda-forge/nvidia)
# `nvcc --version` must work before gsplat's first import

# 3) PyTorch with matching CUDA (cu124/cu128 - pick what matches driver/toolkit)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124

# 4) Rasterizer + packaged 3DGS
pip install gsplat
pip install --upgrade gaussian-splatting

# Optional: live packaged git instead of the wheel
# pip install wheel setuptools
# pip install --upgrade git+https://github.com/yindaheng98/gaussian-splatting.git@master --no-build-isolation

First import gsplat JIT-compiles CUDA kernels. Needs nvcc on PATH, a C++ toolchain, headers, and spare RAM. Machine wedged mid-compile? export MAX_JOBS=1 and pin arch – e.g. export TORCH_CUDA_ARCH_LIST=8.9 for your SM. Custom Python builds sometimes also need C_INCLUDE_PATH pointed at the right include dir (community workaround territory; see gsplat issue discussions such as #539).

Pro tip: On Windows, open the “x64 Native Tools” VS prompt (or put MSVC cl.exe on PATH) before that first gsplat import. Classic 3DGS pain was the pip subprocess building diff-gaussian-rasterization without a compiler – WinError 182 / metadata-generation-failed shows up the same way when MSVC is missing.

First-time configuration + sample data

Happy path: official Tanks & Temples / Deep Blending COLMAP bundle from INRIA (tandt_db zip on the project page).

mkdir -p data output && cd data
wget https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip
unzip tandt_db.zip
cd ..

# Packaged quick start: densify mode, 30k iters, truck scene
python -m gaussian_splatting.train -s data/truck -d output/truck -i 30000 --mode densify

No YAML for the default path. Early flags: -s COLMAP source, -d output, -i iterations, --mode densify. Package docs also describe gsplat-2dgs backend switches, depth regularization, and exposure-related options once a basic run works – check the PyPI install/quick-start section for the exact flag names on 2.10.3 rather than copying blog folklore.

Your own captures? Poses are on you. This package does not ship dataset creation. Use original convert.py from graphdeco or nerfstudio ns-process-data if you already live there.

Verify the install works

python - <<'PY'
import torch
import gsplat
import gaussian_splatting
print("torch", torch.__version__, "cuda", torch.cuda.is_available())
print("device", torch.cuda.get_device_name(0) if torch.cuda.is_available() else "cpu")
print("gsplat OK", getattr(gsplat, "__version__", "unknown"))
print("gaussian_splatting import OK")
PY

# After a short train (or point -d at a finished run)
python -m gaussian_splatting.render -s data/truck -d output/truck -i 7000 --mode densify
python -m gaussian_splatting.viewer -d output/truck -i 7000

You want: CUDA True, a real GPU name, no libcudart / extension import errors, and point_cloud/iteration_*/point_cloud.ply under -d. Import “hangs” on first run? Usually JIT – watch CPU/RAM; killing mid-link leaves a bad torch_extensions cache.

Common install errors and fixes

1. metadata-generation-failed / WinError 182 while building rasterizer wheels
OS cannot run the compiler binary setup found. Install VS Build Tools (C++ workload), launch from Native Tools, set DISTUTILS_USE_SDK=1, put MSVC Hostx64x64 on PATH, reinstall with pip install . --no-build-isolation inside extension folders if you are on original submodules. Graphdeco issue traffic on Win11 (including #1322) maps to this pattern.

2. libcudart.so.12 (or .11) missing at import
Extension linked against a different CUDA runtime than LD_LIBRARY_PATH. Align driver ↔ toolkit ↔ torch+cuXXX. Export CUDA_HOME and toolkit lib64, then reinstall gsplat and gaussian-splatting.

3. gsplat JIT: no nvcc / pyconfig.h / RAM thrash

export PATH=/usr/local/cuda-12.4/bin:$PATH
export CUDA_HOME=/usr/local/cuda-12.4
export TORCH_CUDA_ARCH_LIST=8.6 # your GPU's SM version
export MAX_JOBS=1
# custom Python builds may also need:
# export C_INCLUDE_PATH=/path/to/python/include
python -c "import gsplat"

4. Original environment.yml on CUDA 12 hosts
Official README path still assumes CUDA SDK 11.x, not 12. Forcing the old yml on a 12-only machine is why submodule builds fail metadata or wheels. Prefer the pip stack above. If you need the reference optimizer anyway: plain conda Python, pip install torch...cu128 (or your tag), submodules with --no-build-isolation, explicit TORCH_CUDA_ARCH_LIST. Some newer toolchains also need a #include <cstdint> patch in rasterizer_impl.h – community fix, not upstream gospel.

Upgrade, original-repo note, uninstall

Upgrade packaged tool:

pip install --upgrade gsplat gaussian-splatting

API pin: pip install gaussian-splatting==2.10.3.

Still want the original optimizer?

git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
cd gaussian-splatting
# Manual torch+cuda 12 env beats stock environment.yml on modern GPUs
python train.py -s /path/to/colmap_scene

Pull latest main if you need fixes landed after the fork point; do not assume every packaged flag exists there.

Uninstall / cleanup:

pip uninstall -y gaussian-splatting gsplat
rm -rf ~/.cache/torch_extensions # bad JIT builds
conda env remove -n gs310 # if conda
# delete output/ and large COLMAP trees when finished

Is a “correct” research clone worth a day of toolchain archaeology when the PyPI build already trains your scene? Depends whether you are shipping views or reproducing a table.

Next move: truck scene, 30k densify, viewer on an early iteration while it finishes. PLY shows up and the viewer loads – you are done fighting install folklore.

FAQ

Is gaussian-splatting 2.10.3 the same as the official INRIA code?

Core algorithms track the fork commit a2a91d9. Packaging, gsplat backend, and extra modes (2DGS-style paths, depth reg, exposure tools as documented on PyPI) are additive. Need pure paper reproduction and SIBR viewer binaries? Graphdeco repo + INRIA downloads.

How much VRAM do I need for my own room scan?

Single-room phone capture, COLMAP’d, often fits 8-12GB if you downscale images or thin the set. Big outdoor scenes still lean 16-24GB unless you cull hard or stay on gsplat’s lighter raster path. OOM at densification? Drop resolution first. There is no NeRF-style mini-batch knob to nudge.

Docker or nerfstudio instead?

Yes – when you want a lockfile. splatfacto already sits on gsplat; ns-process-data then ns-train splatfacto is the short path from video to splat. Use this pip package when you want a thin trainer without the full nerfstudio stack.