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)。 |
如何執行
- 先決條件 – Windows、具備所需 Vulkan 擴充功能的 NVIDIA Ada 世代 GPU(或更新)、Visual Studio 2022、Python 3、Node.js,以及 Vulkan‑Headers/GLSLang 工具鏈(儲存庫可自動取得這些)。
- 取得工具 –
scripts\fetch_tools.ps1(新增 glslang、Volk、CMake、Ninja 等)。 - 建置引擎 –
scripts\build.ps1編譯著色器、PTX,並產生build\dlss5vk.exe。 - 可選示範設定 – 取得並修補 Filament(
fetch_filament.ps1/build_filament.ps1),然後建置示範(build_demo.ps1)。 - 執行 –
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 路徑,以及可直接執行的示範。
相關
- 專案
- 專案
- 專案
- 專案