Hacker News

OpenDLSS: A Vulkan Reimplementation of Nvidia's DLSS 5 Neural Rendering Network

OpenDLSS: NVIDIA DLSS 5 신경 렌더링 네트워크의 Vulkan 재구현

OpenDLSS는 NVIDIA DLSS 5의 신경 렌더링 네트워크를 Vulkan으로 재구현한 프로젝트입니다. 원본과 중간값까지 비트 단위로 일치한다고 밝히며, RTX 4070 SUPER에서 1080p 한 프레임을 7.8ms에 처리합니다. 모델 가중치는 제공하지 않으며, DLSS 업스케일링과는 별개의 네트워크입니다.

AI 요약

OpenDLSS는 NVIDIA DLSS 5의 신경 렌더링 네트워크를 Vulkan으로 구현한 프로젝트입니다. README는 DLSS-NR 빌드 310.8.0과 같은 71개 블록으로 구성하고, 최종 이미지뿐 아니라 75개 블록 경계의 중간값도 바이트 단위로 원본과 일치한다고 주장합니다. 브라우저에서 실행하는 WebGPU 구현도 별도로 제공하며, 텐서 코어와 FP8 없이 같은 결과를 내도록 설계했다고 설명합니다.

네트워크와 입력·출력

이 네트워크는 여섯 단계의 풀링 구조와 전역 ViT를 포함한 U-Net 형태의 shifted-window transformer입니다. 71개 블록에서 FP8 E4M3 활성값을 쓰고 FP16으로 누적하며, 가중치 크기는 141MiB입니다. 업스케일러가 아니라 엔진이 렌더링한 프레임을 같은 해상도로 다시 그리는 생성형 신경 렌더링 모델입니다. 입력은 렌더링 프레임을 낮은 동적 범위로 변환한 값, 가우시안 노이즈 세 채널, 재투영한 이전 프레임 출력, 조건값 다섯 개입니다. 출력은 픽셀마다 RGB 잔차와 시간 블렌딩 로짓을 담은 f32 네 채널입니다.

프로젝트는 네트워크의 시간 경로를 데모에 연결합니다. 모션 벡터로 이전 출력을 재투영하고, 네트워크가 만든 픽셀별 블렌딩 로짓으로 프레임 간 피드백을 처리합니다. 다만 명령행 도구는 원본 비교용 캡처와 같이 히스토리 없이 단일 프레임을 실행합니다. DLSS-SR은 별개의 네트워크라 구현 범위에 포함하지 않습니다.

구현과 성능

호스트 코드는 C++20으로 작성했으며, Vulkan에서 모델과 가중치를 읽고 네트워크 그래프를 실행합니다. GLSL 경로에는 FP8 행렬 곱, 융합 블록, QKV 및 윈도 어텐션, MLP 등이 들어갑니다. 빠른 경로는 Python 생성기가 만드는 PTX 커널을 사용합니다. mma.sync 기반 FP8 행렬 연산, cp.async, split-K GEMM, 전역 어텐션 스트리밍과 커널 간 카운터 체이닝을 활용합니다. Filament 기반 데모에서는 객체별 모션 벡터와 Vulkan 상호 운용을 위해 Filament를 패치합니다.

README에 공개된 RTX 4070 SUPER 측정치는 전체 네트워크를 실행한 40회 이상 측정의 최솟값입니다. 768×768에서 2.8ms, 1920×1080에서 7.8ms, 2560×1440에서 12.6ms, 3840×2160에서 29.3ms입니다. 모든 해상도에서 241회 디스패치하며, GPU 클록 상태가 바뀌므로 중앙값은 최솟값보다 몇 퍼센트 높을 수 있다고 덧붙입니다. WebGPU 구현은 512×512에서 72ms이며, 비교 대상으로 제시한 Vulkan 경로는 2.7ms입니다.

정확성 검증과 사용 조건

parity는 캡처 픽스처와 비교하고, verify는 블록 0을 커널 단위로 대조합니다. 픽스처에는 입력과 검사할 항목, 블록 경계·헤드·출력 참조값이 필요합니다. 참조값이 빠졌거나 그래프와 맞지 않는 경우 실행 전에 거부하도록 검증 절차를 둡니다. 기본 경로뿐 아니라 GLSL 대체 경로와 실행 옵션별로도 바이트 단위 일치 여부를 검사한다고 설명합니다.

가장 큰 제약은 가중치가 저장소에 없다는 점입니다. 사용자가 별도로 준비한 모델 디렉터리를 지정해야 하며, 저장소는 해당 디렉터리를 만드는 도구를 제공하지 않습니다. 실행 환경도 Windows, NVIDIA Ada 이상 GPU, 특정 Vulkan 확장과 Visual Studio 등을 요구합니다. 따라서 코드와 커널을 살펴보거나 구현을 재현하는 데 초점을 둔 프로젝트이며, 저장소만 내려받아 바로 DLSS 5를 실행하는 구성은 아닙니다.

Hacker News 반응

  • @Borealid — 메인 README가 LLM으로 작성된 프로젝트에는 관심이 생기지 않습니다. 작성자는 자신이 무엇을 만들었고 어떻게 쓰는지 직접 설명할 시간이 없었나요?
    • @fwlr — 생각해 보면 작성자는 자신이 한 일은 없다고 썼고, 사용법은 쓸 수 없다고 썼네요.
    • @MadameMinty — 사실과 다른 내용이 더 신경 쓰입니다. git-ignored라고 두 번 적었는데, 저장소에 있는데다 저장소에 있는 걸 왜 굳이 언급하나요?
    • @rvz — README의 90% 넘게 LLM이 썼고 소설만큼 길다면 읽지 않겠습니다. 작성자도 읽거나 쓰지 않았다고 여기겠습니다. 작성자가 DLSS 내부를 깊이 설명할 만큼 경험이 없다면 이해도 못 할 잡음입니다.
  • @franticgecko3 — 가중치 없이 이 프로젝트가 얼마나 쓸모 있나요? NVIDIA의 강점은 스튜디오와 함께 게임별 학습 데이터를 만들고 게임마다 모델을 배포하는 것 아닌가요? 제가 아는 게 오래됐나요, 아니면 이제 범용 모델 하나를 쓰나요?
    • @GaggiX — 게임마다 모델을 배포하지 않습니다. 게임별로 학습한 건 DLSS 1뿐입니다.
    • @strangecasts — DLSS 1 때는 그랬지만 DLSS 2부터 모델은 범용입니다. 게임별 조정은 효과 강도를 바꾸거나 일부 객체를 마스킹하는 추론 단계에서 합니다. NVIDIA의 기술 보고서도 신경 렌더링을 설명합니다.
  • @flohofwoe — 1080p에서 거의 8ms라니 상당히 비싸 보입니다. 원본도 렌더링 시간 예산을 이만큼 잡아먹나요?
    • @robinduckett — 원본은 프레임 속도를 절반 이상 떨어뜨리는 경우가 많습니다.
    • @MYEUHD — 그렇습니다. 해상도와 GPU에 따라 다릅니다. RTX 5060은 1080p에서 9.9ms, RTX 5070은 1440p에서 10.2ms, RTX 5080은 2160p에서 13.7ms, RTX 5090은 2160p에서 8.2ms입니다.
    • @LaurensBER — 대부분 게임에서는 5090이 아니면 60FPS 이상을 원할 때 사실상 쓰기 어렵습니다. 현재 구현은 실용적인 게임 플레이 수단이라기보다 기술 데모에 가깝습니다. NVIDIA도 성능을 개선하고 있다고 밝혔습니다.
  • @TheJCDenton — “원본과 비트 단위로 정확히 일치”한다니 어떤 마술인가요? 정말 인상적인 작업입니다.
    • @robinduckett — 주장은 현실과 다른 경우가 대부분입니다.
  • @Lerc — 입력으로 Z 버퍼를 받지 않는 점이 의외입니다. 유용한 정보를 줄 텐데요. ControlNet에서도 유용한 입력 중 하나잖아요.
    • @avaer — 비교적 작은 RGB-깊이 모델도 성능이 좋습니다. RGB에 깊이 정보가 잘 담겨 있다는 뜻일 수 있으니, 깊이를 더해도 정보량은 크게 줄지 않고 대역폭만 들 수 있습니다.
    • @rcarmo — 공식 구현은 엔진에서 다른 정보도 받는 것 같습니다. 몇 달 전 공개 데모나 기사에서 LOD와 UV 맵 힌트를 언급한 걸로 기억합니다.
  • @dtf — 이 저장소와 꽤 비슷해 보이는 다른 저장소가 있네요. https://github.com/aloshdenny/open-dlss
    • @godbox — 커밋도 같은 시각에 정확히 똑같은데 저장소 이름과 작성자는 다릅니다. 대체 무슨 일인가요?
    • @_ache_ — 라이선스에는 저작권자가 maan이라고 적혀 있습니다. 그러니 aloshdenny가 커밋을 훔쳤거나 maan의 별칭이겠네요.
    • @esperent — 훔친 건 아닙니다. MIT 라이선스고 저작자 표시도 남아 있습니다.
    • @beefsack — GitHub API의 created_at을 보면 maanHimself 저장소가 aloshdenny보다 35시간 먼저 만들어졌습니다. maanHimself의 pushed_at도 aloshdenny의 생성 시각보다 앞섭니다. 이것만으로 원 작성자라고 단정할 수는 없지만, 그럴 가능성이 커 보입니다.

원문: Hacker News / 번역·요약: Trawling