[Hacker News 요약] OpenDLSS: NVIDIA DLSS 5 신경망의 Vulkan 재구현
0
설명
개발자 maanHimself가 NVIDIA의 DLSS 5 신경망 렌더링 네트워크를 Vulkan API를 사용하여 재구현한 프로젝트인 OpenDLSS-NR을 GitHub에 공개했습니다.
이 프로젝트는 원본 DLSS 5 네트워크와 비트 단위로 정확하게 일치하는 것을 목표로 하며, FP8 연산을 활용하여 성능을 최적화합니다.
이는 오픈 소스 커뮤니티가 NVIDIA의 독점 기술을 탐구하고 활용할 수 있는 새로운 가능성을 열어줍니다.
### 배경 설명
NVIDIA의 DLSS(Deep Learning Super Sampling) 기술은 게임 및 그래픽 애플리케이션에서 실시간 레이 트레이싱과 같은 고사양 렌더링을 지원하기 위해 딥러닝을 활용하는 핵심 기술입니다. 특히 DLSS 5는 '신경망 렌더링(Neural Rendering)'이라는 개념을 도입하여, 기존 프레임에 노이즈와 스타일 설정을 주입하여 디테일을 생성하고 톤, 구조, 피부 질감을 조정하는 방식으로 작동합니다. 이는 단순히 해상도를 높이는 업스케일링을 넘어, 렌더링 과정 자체를 신경망으로 보강하는 접근 방식입니다.
이러한 독점 기술의 내부 작동 방식을 이해하고, 더 나아가 오픈 소스 생태계에서 활용할 수 있도록 하는 것은 그래픽스 및 AI 연구 커뮤니티에 큰 의미를 가집니다. OpenDLSS-NR 프로젝트는 NVIDIA의 DLSS 5 신경망 구조를 Vulkan API를 통해 재구현함으로써, 개발자들이 이 기술의 원리를 깊이 있게 탐구하고 자체적으로 적용할 수 있는 기반을 마련합니다. 특히, 원본과 '비트 단위로 정확하게(bit-exact)' 일치하는 것을 목표로 하는 점은 이 프로젝트의 기술적 완성도를 높이며, 연구 및 개발에 있어 신뢰성을 제공합니다.
### OpenDLSS-NR 프로젝트 개요
OpenDLSS-NR은 GitHub 사용자 maanHimself가 개발한 오픈 소스 프로젝트로, NVIDIA의 DLSS 5 신경망 렌더링 네트워크를 Vulkan API를 사용하여 재구현했습니다. 이 프로젝트의 핵심 목표는 원본 DLSS 5 네트워크와 '비트 단위로 정확하게(bit-exact)' 일치하는 것입니다. 이는 단순히 최종 결과물의 유사성을 넘어, 네트워크 내부의 모든 연산 결과가 동일해야 함을 의미합니다. 이를 위해 71개의 Swin/ViT 블록으로 구성된 신경망 구조를 사용하며, Tensor 코어에서 FP8(E4M3) 연산을 활용하여 효율성을 높였습니다. 또한, FP16 누적 연산을 통해 정밀도를 유지합니다. 이 프로젝트는 NVIDIA가 2023년 8월 1일(추정)에 발표한 DLSS 5: Generative Neural Rendering 보고서에 설명된 모델을 기반으로 합니다.
### 기술적 특징 및 구현 세부 사항
OpenDLSS-NR은 U-Net 구조에 쉬프트 윈도우 트랜스포머 블록과 전역 ViT를 결합한 71개의 블록으로 구성된 신경망을 사용합니다. 활성화 함수는 FP8(E4M3)을 사용하고, 누적 연산은 FP16으로 수행됩니다. 모델의 가중치는 총 141MiB입니다. 이 신경망은 입력으로 렌더링된 프레임, 노이즈, 이전 프레임의 재투영된 출력, 그리고 5개의 조건 스칼라를 받아, 각 픽셀마다 4개의 f32 채널(RGB 잔차 및 시간적 블렌딩 로짓)을 출력합니다. 입력과 출력은 동일한 해상도를 가지며, 이는 업스케일링 기술과는 구분됩니다. 또한, 브라우저 환경에서 실행 가능한 WebGPU 포트도 제공되어, Tensor 코어나 FP8 연산 없이도 동일한 결과를 얻을 수 있음을 보여줍니다. 빌드 및 실행을 위해 PowerShell 스크립트와 CMake, Ninja 등의 도구가 사용되며, Vulkan SDK 설치 없이도 빌드가 가능하도록 구성되어 있습니다.
### 성능 및 정확성 검증
RTX 4070 SUPER GPU에서 전체 네트워크를 프레임당 처리하는 성능 테스트 결과, 768x768 해상도에서 2.8ms, 1920x1080에서 7.8ms, 2560x1440에서 12.6ms, 3840x2160에서 29.3ms의 최소 처리 시간을 기록했습니다. 이는 GPU가 지속적인 부하 상태에서 두 가지 클럭 상태를 번갈아 사용하기 때문에 중앙값은 이보다 약간 높을 수 있습니다. 프로젝트는 'parity' 명령어를 통해 원본의 기록된 캡처와 비트 단위의 정확성을 검증하며, 'verify' 명령어를 통해 블록별 커널 단위의 일치 여부를 확인할 수 있습니다. 이를 위해 'fixture'라는 개념을 도입하여 입력 데이터와 검증 기준을 정의합니다. 다양한 튜닝 스위치를 통해 특정 연산의 GLSL 구현으로 되돌리거나, 체인 방식을 변경하는 등 디버깅 및 성능 분석을 위한 옵션을 제공합니다.
### 가치와 인사이트
OpenDLSS-NR 프로젝트는 NVIDIA의 최신 그래픽스 기술인 DLSS 5 신경망 렌더링을 오픈 소스로 재구현함으로써, 개발자 커뮤니티에 귀중한 학습 자료와 개발 기반을 제공합니다. 이는 단순히 기술의 재현을 넘어, 딥러닝 기반 렌더링 기술의 내부 작동 원리를 깊이 이해하고, 이를 바탕으로 새로운 애플리케이션이나 개선된 기술을 개발할 수 있는 가능성을 열어줍니다. 특히, 비트 단위의 정확성을 추구하는 접근 방식은 연구 및 개발 과정에서 높은 신뢰성을 보장하며, 게임 개발자, 그래픽스 엔지니어, AI 연구원들에게 실질적인 도움을 줄 수 있습니다. 또한, Vulkan API를 사용함으로써 플랫폼 독립적인 그래픽스 구현을 지향하며, WebGPU 포트는 웹 기반 그래픽스에서도 이 기술을 활용할 수 있는 잠재력을 보여줍니다.
### 기술·메타
- Vulkan API
- C++20
- GLSL, PTX
- Swin Transformer, ViT
- FP8, FP16 연산
- WebGPU (포트)
- CMake, Ninja
- Filament (데모용)
### 향후 전망
OpenDLSS-NR 프로젝트는 NVIDIA의 DLSS 기술에 대한 접근성을 높여, 향후 오픈 소스 그래픽스 생태계에서 딥러닝 기반 렌더링 기술의 발전과 확산에 기여할 것으로 예상됩니다. 경쟁 측면에서는, 다른 업스케일링 및 렌더링 개선 기술과의 비교 연구가 활발해질 수 있으며, 이를 통해 각 기술의 장단점이 더욱 명확해질 것입니다. 제품 측면에서는, 이 프로젝트를 기반으로 한 새로운 렌더링 솔루션이나 게임 엔진 플러그인이 등장할 가능성이 있습니다. 커뮤니티 측면에서는, 더 많은 개발자들이 참여하여 버그 수정, 성능 최적화, 새로운 기능 추가 등 프로젝트 발전에 기여할 것으로 기대됩니다. 다만, NVIDIA의 DLSS 기술은 지속적으로 업데이트될 것이므로, OpenDLSS-NR 역시 이러한 변화에 맞춰 지속적인 유지보수 및 업데이트가 필요할 것입니다.
📝 원문 및 참고
- Source: Hacker News
- 토론(HN): [news.ycombinator.com](https://news.ycombinator.com/item?id=49906100)
- 원문: [링크 열기](https://github.com/maanHimself/OpenDLSS-NR)
---
출처: Hacker News · [원문 링크](https://github.com/maanHimself/OpenDLSS-NR)
이 글에 대한 한 줄 의견
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 로그인하면 바로 의견을 남길 수 있습니다.