DLSS 5 신경 렌더링망을 Vulkan으로 재구현해 바이트 단위로 일치시켰다

Hacker News10일 전

OpenDLSS-NR은 NVIDIA의 DLSS 5 신경 렌더링 네트워크(DLSS-NR)를 Vulkan으로 다시 구현한 오픈소스 프로젝트다. 눈에 띄는 지점은 결과물의 화질이 아니라 재현 수준이다. 최종 프레임만 비슷하게 흉내 내는 것이 아니라, 네트워크 내부의 중간 텐서까지 원본과 바이트 단위로 같아야 통과하는 게이트를 걸어 두었다.

구조는 DLSS-NR 빌드 310.8.0과 동일한 71개 블록짜리 shifted-window 트랜스포머 U-net이다. 6개 풀링 레벨에 걸쳐 블록이 쌓이고 맨 아래에 전역 ViT가 놓인다. 활성값은 FP8(E4M3), 누산은 FP16으로 텐서코어에서 돌아가며 가중치 용량은 141MiB다. 저장소가 내세우는 일치 범위는 최종 출력뿐 아니라 75개 블록 경계 전부이며, 이는 바이트 단위 비교다.

입출력 정의도 문서화되어 있다. 엔진이 이미 그린 프레임의 저동적범위 프록시 한 장, 가우시안 노이즈 3개 레인, 이전 프레임 출력을 재투영한 값, 조건 스칼라 5개를 입력으로 받아 픽셀당 f32 4채널을 낸다. RGB 잔차 3채널과 시간적 블렌딩용 로짓 1채널이다. 해상도는 입력과 출력이 같으며, 업스케일러가 아니라 엔진이 그린 프레임을 다시 그리는 생성형 신경 렌더링이라는 설명이 붙는다.

같은 저장소 안에 두 번째 구현도 들어 있다. ports/browser-webgpu/는 텐서코어도, FP8도, 블록 간 융합도, 커널 체이닝도 없이 브라우저에서 동일한 바이트를 만들어낸다. 512x512 기준 72ms로, 네이티브 경로의 2.7ms와 비교된다. 정확성이 특정 하드웨어가 아니라 명세 자체에 있다는 점을 보여주려는 구성으로 읽힌다.

빌드와 검증 도구는 PowerShell 스크립트로 묶여 있다. glslang, Vulkan-Headers, volk, CMake, Ninja를 받아오는 스크립트와 셰이더·PTX·실행 파일을 만드는 스크립트가 있고, Filament 기반 데모는 별도 스크립트로 한 번 빌드한다. CLI는 bench, profile, parity, verify 네 가지 명령을 제공하며, parity는 기록된 원본 캡처와의 비트 일치를, verify는 블록 0을 커널 단위로 이분 탐색해 어긋난 지점을 찾는다. PTX 나눗셈기를 2^24 미만 전체에 대해 검사하는 파이썬 테스트도 포함된다. 성능 수치는 RTX 4070 SUPER에서 40프레임 최솟값 기준, 해상도와 무관하게 프레임당 241회 디스패치다.

배경에는 NVIDIA가 DLSS 5를 생성형 신경 렌더링이라는 용어로 규정하고 모델을 보고서로 공개한 흐름이 있다. 이 프로젝트는 그 명세를 역방향으로 검증하는 셈이다. 노이즈에서 디테일을 생성하고, 스타일 설정에 따라 톤과 구조, 피부 표현을 조정하는 네트워크를 다른 그래픽스 API 위에서 같은 숫자로 재현했다는 주장은, 모델 명세가 하드웨어 구현과 분리될 수 있는지를 실험한 결과물이기도 하다.

실무적으로는 cooperative matrix 기반 FP8 GEMM, 융합된 32채널 블록, QKV와 윈도우 어텐션 융합, expert MLP, 전역 어텐션, split-K GEMM, cp.async 링, 디바이스 카운터를 통한 배리어 없는 체이닝 같은 기법이 참조 구현과 PTX 생성기 양쪽으로 정리되어 있다는 점이 쓸모 있다. 비트 단위 일치를 통과 조건으로 삼는 테스트 설계 자체도 수치 연산 코드를 다루는 팀에 참고가 된다.

전제와 한계는 분명하다. 가중치는 저장소에 포함되지 않으며 사용자가 정해진 레이아웃의 모델 디렉터리로 직접 공급해야 한다. 블록 수가 다른 모델은 거부된다. parity 비교에 쓰이는 원본 캡처도 저장소에 없어서, 검증하려면 별도로 픽스처를 준비해야 한다. 실행 환경은 Windows와 Ada 이상 NVIDIA GPU, 그리고 VK_KHR_cooperative_matrix, VK_NV_cooperative_matrix2, VK_EXT_shader_float8, VK_NV_cuda_kernel_launch를 노출하는 드라이버로 제한된다. DLSS-SR은 다른 네트워크라 구현 대상이 아니고, 시간적 경로는 데모에서만 동작한다. dlss5vk 도구는 히스토리 없이 단일 프레임만 처리하며, 참조 캡처도 그 조건에서 만들어졌다.