maanHimself/OpenDLSS-NR

A Vulkan reimplementation of NVIDIA's DLSS 5 Neural Rendering network, bit-exact against the original.

OpenDLSS‑NR – NVIDIA DLSS 5 神經渲染的 Vulkan 重新實作

這是什麼

  • 以 C++20 和 Vulkan 編寫,忠實且位元精確地重現 NVIDIA DLSS 5 神經渲染(NR)網路。它執行 NVIDIA 在 DLSS 5 build 310.8.0 中提供的相同 71 區塊 Swin‑ViT U‑Net,並在張量核心上使用 FP8(E4M3)算術。
  • 儲存庫還包含一個純 WebGPU 版本,可在瀏覽器中執行(無張量核心、無 FP8),以及一個將網路整合到開源 Filament 渲染器的示範。

為何重要

  • DLSS 5 的 NR 是一個生成式神經渲染步驟,可增加細節、校正色調並改善皮膚品質,而不改變輸出解析度(它不是升級器)。OpenDLSS‑NR 讓研究人員和開發人員可以在自己的硬體上實驗完全相同的模型、檢查中間激活值,並進行效能基準測試。
  • 所有中間張量和最終影像都與專有實作逐位元組匹配,這在逆向工程的 AI 模型中很少見。

主要元件

元件 提供的功能
src/ 主機端 C++20 程式碼:Vulkan 設定、模型載入、權重佈局、CPU 參考實作,以及 dlss5vk 命令列工具。
shaders/ 實作精確 FP8 GEMM、注意力、MLP 和其他區塊的 GLSL 核心。這些是參考路徑(無融合)。
scripts/ptx/ 產生低階 PTX 核心(使用 mma.sync FP8 × FP16)的 Python 生成器,用於高效能路徑,具有融合操作和基於計數器的鏈接。
demo/ 基於 Filament 的檢視器,可載入 glTF 場景、顯示 ImGui 控制項,並在每一幀執行網路(包括時間回饋迴圈)。
ports/browser-webgpu/ WebGPU 移植版本,可在瀏覽器中重現相同的數值結果,但速度較慢(512×512 時約 72 ms)。

如何執行

  1. 先決條件 – Windows、具備所需 Vulkan 擴充功能的 NVIDIA Ada 世代 GPU(或更新)、Visual Studio 2022、Python 3、Node.js,以及 Vulkan‑Headers/GLSLang 工具鏈(儲存庫可自動取得這些)。
  2. 取得工具 – scripts\fetch_tools.ps1(新增 glslang、Volk、CMake、Ninja 等)。
  3. 建置引擎 – scripts\build.ps1 編譯著色器、PTX,並產生 build\dlss5vk.exe。
  4. 可選示範設定 – 取得並修補 Filament(fetch_filament.ps1 / build_filament.ps1),然後建置示範(build_demo.ps1)。
  5. 執行 –
    • dlss5vk.exe bench --model <model_dir> --width 768 --height 768 進行快速計時。
    • dlss5vk.exe parity … 與參考測試資料比較(位元精確度測試)。
    • demo\dlss5-demo.exe 啟動互動式檢視器(拖放 glTF 或選擇內建場景)。

效能快照(RTX 4070 SUPER,40 幀中位數,每幀整個網路):

解析度 每幀時間
768×768 2.8 ms
1920×1080 7.8 ms
2560×1440 12.6 ms
3840×2160 29.3 ms

模型處理

  • 儲存庫不包含 141 MiB 的 FP8 權重。使用者必須提供遵循 README 中描述的 manifest.json 佈局的模型目錄。載入器驗證清單,將打包的位元組重新佈局為核心預期的矩陣形式,並拒絕任何具有不同區塊數量的模型。

驗證與精確度

  • parity 和 verify 命令將 GPU 輸出與 NVIDIA 提供的捕獲測試資料(未包含)進行比較。比較是位元精確的;失敗會報告為零符號差異、單碼偏差(對於 8 位元捕獲)或完全不符。PTX 生成的核心和 GLSL 參考路徑在使用適當開關時都能通過這些測試。

調整旋鈕

  • 環境變數(DLSS5VK_UNFUSED、DLSS5VK_CHAIN、DLSS5VK_PTX_GEMM 等)可讓您在快速融合 PTX 路徑和較慢但易於除錯的 GLSL 路徑之間切換、啟用/停用 split‑K GEMM、控制屏障插入等,同時保持數值一致性。

限制

  • 僅實作 NR 網路;DLSS‑SR(超解析度)分支不存在。
  • 需要近期 Ada 世代 NVIDIA GPU 和特定的 Vulkan 擴充功能;它無法在較舊硬體或非 Windows 平台上執行。
  • 模型權重必須單獨取得,並受 NVIDIA 的授權條款約束。

授權

  • 儲存庫中的程式碼以 MIT 授權。第三方元件(Filament、glslang 等)列在 NOTICE 中。

OpenDLSS‑NR 為社群提供了一個透明、可重現的平台,用於研究 NVIDIA 最新的生成式神經渲染技術,包括低階 PTX 核心、參考 GLSL 路徑,以及可直接執行的示範。

相關

  • 專案
  • 專案
  • 專案
  • 專案