打破顯存墻:謝賽寧團隊提出CLM,單卡RTX 4090「撬動」1億高斯點
3D Gaussian Splatting (3DGS) 是一種日益流行的新視角合成方法,給定 3D 場景的一組帶位姿的圖像(即帶有位置和方向的圖像),3DGS 會迭代訓練一個場景表示,該表示由大量各向異性 3D 高斯體組成,用以捕捉場景的外觀和幾何形狀。

用戶可以使用訓練好的場景表示來渲染先前未見過的視角的圖像。與其他新視角合成方法相比,3DGS 具有更快的渲染時間,同時能達到相當的圖像質量,因此迅速普及開來。
3DGS 在當下的 3D 建模、數字孿生、影視制作 (VFX)、VR/AR 與機器人視覺重建 (SLAM) 等領域已展現出革命性的應用潛力。
使用 3DGS 渲染的圖像質量取決于所訓練場景表示的保真度。捕捉大面積區域或包含復雜細節的場景需要更多的高斯體。因此,3DGS 的內存占用會隨著場景大小、場景復雜性或輸出圖像分辨率的增加而增長。
頂尖水平的 3DGS 實現運行在 GPU 上,而 GPU 的顯存并不充裕。因此,在擴展 3DGS 并將其應用于具有高圖像分辨率的大型復雜場景時,顯存容量已成為一個障礙。
謝賽寧團隊提出了 CLM 系統,該系統允許 3DGS 使用單塊消費級 GPU(例如 RTX 4090)渲染大型場景。

- 論文標題:CLM: Removing the GPU Memory Barrier for 3D Gaussian Splatting
- 論文地址:https://arxiv.org/abs/2511.04951v1
CLM 的設計基于這樣一種洞察:3DGS 的計算本質上是稀疏的,即每次訓練迭代只訪問場景高斯體的一個小子集。因此,只需將這個子集加載到 GPU 內存中,而將其余的高斯體卸載到更充裕的 CPU 內存中即可。
為了提高性能并減少通信開銷,CLM 基于對 3DGS 內存訪問模式的深入理解,采用了一種新穎的卸載策略。該策略利用了關于 3DGS 訓練流水線的四個觀察,最大限度地減少了性能開銷并能擴展到大型場景:
- 訪問集的提前計算: 每個視角(一張訓練圖像)所訪問的高斯體集合可以提前計算出來,這使得加載一次迭代所需的高斯體可以與上一次迭代的計算重疊進行。
- 重疊緩存:不同視角訪問的高斯體之間存在大量重疊,這使研究者能夠緩存重疊的高斯體,以減少每次訓練迭代期間的通信量。
- 空間局部性:訓練過程表現出空間局部性;同一區域中的視角傾向于訪問相同的高斯體。因此,可以仔細安排訓練迭代,以最大化重疊訪問并最小化總體通信量。
- 重疊計算:進一步利用空間局部性來重疊梯度計算和大部分的高斯參數更新。
評估表明,由此產生的實現可以在單個 RTX 4090 上渲染一個需要 1.02 億個高斯體的大型場景,并達到頂尖水平的重建質量。
此外當渲染可以裝入基線系統 GPU 顯存的小型場景時,與沒有卸載的基線系統相比,CLM 針對 3DGS 的特定卸載解決方案僅產生適度的性能開銷。
方法:基于稀疏性的卸載策略
團隊通過將部分高斯點參數存儲在固定頁主內存中,并在需要時動態加載到 GPU 內存,從而解決了前面提到的挑戰。此外,團隊還充分利用了 3DGS 的若干獨特特性,以顯著降低卸載帶來的通信開銷。
3DGS 計算具有高度稀疏性
3DGS 的計算過程是稀疏的:在渲染(無論是訓練階段還是推理階段)時,只有場景中一小部分高斯點會被實際使用。這是因為每個視角都對應一個相機位姿,只有位于相機視錐體(frustum)內的高斯點才可能對最終渲染圖像產生貢獻(如下圖所示)。

而事實上,3DGS 的渲染流程在處理某個視角之前,會顯式計算出該視角內的高斯集合,然后再對這些高斯點進行渲染處理(如下圖所示)。

實驗發現,在大場景中,單個視角訪問的高斯點數量占比通常不到 1%,可通過計算場景中視角 i 的稀疏度
來量化這一點:
,其中,
是視角 i 所涉及的高斯點集合,N 是高斯點的總數。
結果表明:場景越大,其稀疏度越高(即 ρ 越小)。這符合預期,因為雖然高斯點數量會隨場景規模增大而增加,但相機視錐體所覆蓋的體積與場景整體大小無關。
在最大的數據集上,團隊發現:
- 每個視角平均只訪問了 0.39% 的高斯點;
- 單個視角訪問的高斯點數量上限為 1.06%。
團隊利用這種稀疏性,通過 3DGS 的視錐剔除(frustum culling)邏輯,提前識別出每個視角(以及其對應的 microbatch)所需的高斯點子集,并僅將這些必要的高斯點傳輸至 GPU,從而顯著降低內存占用與數據傳輸量。
視角間的稀疏模式具有空間局部性
同一場景的不同視角,其稀疏模式雖不同,但存在重疊。換句話說,對于視角 i 和 j,
,但它們的交集
中的高斯點數,與這兩個視角之間的空間位置與角度相似度密切相關。
團隊利用這種空間局部性(spatial locality),來優化 CPU 與 GPU 之間的數據傳輸:
- microbatch(微批次)調度優化:提前計算每個 microbatch 的稀疏模式,并合理安排它們的處理順序,使得相鄰批次之間的訪問模式盡可能重疊,從而提高緩存命中率。
- GPU 緩存機制:將連續 microbatch 中頻繁訪問的高斯點保存在 GPU 緩存中,從而減少重復的數據傳輸,顯著降低通信開銷。
稀疏模式的高效計算
在傳統 3DGS 實現中,所有高斯點參數被存儲在單個張量中,并且在 GPU 上執行視錐剔除以確定某個視角的稀疏模式。然而,這種做法要求所有高斯點都預先加載到 GPU 內存,這與「僅加載必要高斯點」的設計目標相沖突。
因此,團隊通過僅使用部分高斯信息來預估稀疏模式,避免了不必要的 GPU 內存占用,為后續的高效卸載與緩存策略奠定了基礎。
系統設計
CLM 的核心思路是:通過將高斯參數和部分優化器計算卸載到 CPU 端,來擴展有效的 GPU 顯存容量;同時基于 3DGS 稀疏性和空間局部性的觀察結果,最大限度地減少 GPU-CPU 通信與 CPU 計算的開銷。
目前 CLM 的實現基于 CUDA,但其設計與渲染后端無關,也可移植到 Vulkan 平臺。
整體來看,CLM 的訓練流程基本是這樣進行的:首先,CLM 選取一批訓練圖像及其對應視角,并使用視錐剔除計算出每個視角 i 所需的高斯集合
,可將其稱為「視錐內高斯」(in-frustum Gaussians)。
接著,將一個 batch 劃分為多個 microbatch(微批次),以便在訓練中啟用流水線執行。更重要的是,CLM 根據視錐剔除的輸出結果,優化 microbatch 的執行順序,以最大化空間局部性。
最后,每個 microbatch 在流水線中執行,使得通信與計算(GPU 與 CPU)能夠重疊進行。
具體而言:處理 microbatch 時,CLM 會將所需的視錐內高斯加載到 GPU 內存,通過 Gaussian Caching(高斯緩存機制) 避免重復加載連續 microbatch 中共享的高斯點。之后 GPU 執行前向與反向傳播,梯度被傳回 CPU,而一個并行 CPU 線程執行 Adam 優化器,更新高斯參數。

如上圖所示:
- 加載 microbatch i 的視錐高斯時,與 microbatch i?1 的 GPU 反向計算重疊;
- 傳輸 microbatch i 的梯度時,與 microbatch i+1 的 GPU 前向計算重疊。
而對于那些在某個 microbatch 中最后被更新的高斯點,CLM 會在 CPU 上完成其對應的 Adam 更新,并與后續microbatch的 GPU 前向 / 反向計算并行執行。
經過一系列的實驗、評估,可以發現:CLM 具備更大規模的模型訓練能力,通過將部分計算與數據卸載至 CPU,CLM 使得 3DGS 的可訓練模型規模相比純 GPU 訓練基線提升了最高 6.1 倍;更高的重建質量,CLM 能夠訓練更大的模型,從而提升場景重建精度;更低的通信與卸載開銷。
了解更多詳細內容,請參考原論文!




































