Instant Neural Graphics Primitives with a Multiresolution Hash Encoding

2023. 8. 16. 16:35View Synthesis

Instant Neural Graphics Primitives with a Multiresolution Hash Encoding

 

Thomas Müller, Alex Evans, Christoph Schied, Alexander Keller

 

Abstract

fully connected neural networks에 의해 매개 변수화된 신경망 그래픽 프리미티브는 학습 및 평가에 많은 비용이 들 수 있습니다.

우리는 품질을 희생하지 않고 더 작은 네트워크를 사용할 수 있도록 하는 다용도의 새로운 입력 인코딩으로 이 비용을 절감하여 부동 소수점 및 메모리 액세스 작업의 수를 크게 줄입니다: 작은 신경망은 확률적 그래디언트 강하를 통해 값이 최적화된 학습 가능한 피쳐 벡터의 다중 해상도 해시 테이블에 의해 증강됩니다.

다중 해상도 구조를 통해 네트워크는 해시 충돌을 모호하게 하지 않도록 하여 현대 GPU에서 병렬화하기에는 간단한 아키텍처를 만들 수 있습니다.

우리는 낭비되는 대역폭과 계산 작업을 최소화하는 데 초점을 두고 완전히 융합된 CUDA 커널을 사용하여 전체 시스템을 구현함으로써 이 병렬성을 활용합니다.

우리는 몇 가지 크기의 결합 속도 향상을 달성하여 고품질 신경 그래픽 프리미티브를 몇 초 만에 학습할 수 있고, 1920×1080의 해상도로 수십 밀리초 만에 렌더링할 수 있습니다.

 

 

1  Introduction

컴퓨터 그래픽 프리미티브는 기본적으로 외관을 매개변수화하는 수학적 함수에 의해 표현됩니다.

수학적 표현의 품질과 성능 특성은 시각적 충실성에 중요합니다: 우리는 고주파 로컬 세부 사항을 포착하면서 빠르고 간결하게 유지되는 표현을 원합니다.

신경 그래픽 프리미티브로 사용되는 multi-layer perceptrons (MLP)으로 표현되는 함수는 형상 [Martel et al. 2021; Park et al. 2019] 및 radiance fields [Liu et al. 2020; Mildenhall et al. 2020; Muller et al. 2020, 2021]와 같이 이러한 기준(다양한 정도)과 일치하는 것으로 나타났습니다.

 

이러한 접근 방식의 중요한 공통점은 신경망 입력을 더 높은 차원의 공간에 매핑하는 인코딩이며, 이는 소형 모델에서 높은 근사 품질을 추출하는 데 핵심적입니다.

이러한 인코딩 중 가장 성공적인 것은 학습 작업의 많은 부분을 차지하는 학습 가능한 작업별 데이터 구조 [Liu et al. 2020; Takikawa et al. 2021]입니다.

이를 통해 더 작고 더 효율적인 MLP를 사용할 수 있습니다.

그러나 이러한 데이터 구조는 학습 프로세스를 복잡하게 하거나 방법을 특정 작업으로 제한하거나 제어 흐름과 포인터 추적이 비용이 많이 드는 GPU의 성능을 제한할 수 있는 휴리스틱 및 구조 수정(예: 가지치기, 분할 또는 병합)에 의존합니다.

 

이러한 문제를 작업과 독립적으로 적응적이고 효율적인 다중 해상도 해시 인코딩으로 해결합니다.

몇 초 동안의 학습 후에 다양한 작업에 대한 SOTA 품질을 산출하는 단 두 개의 값—매개 변수 수 𝑇와 원하는 최상의 해상도 𝑁_max—로 구성됩니다(그림 1).

 

작업에 독립적인 적응성과 효율성 모두의 핵심은 해시 테이블의 다중 해상도 계층입니다:
 • 적응력: 우리는 그리드의 캐스케이드를 피쳐 벡터의 해당 고정 크기 배열에 매핑합니다.

coarse 해상도에서 그리드 포인트에서 배열 엔트리로의 1:1 매핑이 있습니다.

fine 해상도에서 배열은 해시 테이블로 처리되고 공간 해시 함수를 사용하여 인덱싱되며, 여기서 여러 그리드 포인트는 각 배열 엔트리에 별칭을 부여합니다.

이러한 해시 충돌은 충돌하는 학습 그레디언트를 평균으로 하게 하며, 이는 가장 큰 그레디언트(loss 함수와 가장 관련이 많은)가 지배적임을 의미합니다.

따라서 해시 테이블은 가장 중요한 fine 스케일 세부 정보를 가진 희소 영역에 자동으로 우선 순위를 부여합니다.

이전 작업과 달리, 학습 중 어느 지점에서도 데이터 구조에 대한 구조 업데이트가 필요하지 않습니다.
 • 효율성: 해시 테이블 룩업은 O(1)이며 제어 흐름을 필요로 하지 않습니다.

이는 트리 순회에 고유한 실행 발산과 직렬 포인터 체이싱을 피하면서 현대 GPU와 잘 매핑됩니다.

모든 해상도에 대한 해시 테이블을 병렬로 쿼리할 수 있습니다.

우리는 네 가지 대표적인 작업에서 다중 해상도 해시 인코딩을 검증합니다(그림 1 참조):
 (1) Gigapixel image: MLP는 고해상도 이미지의 2D 좌표에서 RGB 색상으로의 매핑을 학습합니다.
 (2) Neural signed distance functions (SDF): MLP는 3D 좌표에서 표면까지의 거리까지의 매핑을 학습합니다.
 (3) Neural radiance caching (NRC): MLP는 몬테카를로 경로 추적자로부터 주어진 장면의 5D 라이트 필드를 학습합니다.
 (4) Neural radiance and density fields (NeRF): MLP는 이미지 관찰 및 해당 원근 변환에서 주어진 장면의 3D 밀도 및 5D 라이트 필드를 학습합니다.

 

다음에서는 먼저 사전 신경망 인코딩을 검토한 다음 인코딩(섹션 2)과 구현(섹션 4)을 설명하고 마지막으로 실험(섹션 5)과 논의(섹션 6)를 설명합니다.

 

 

2  Background and Related Work

머신러닝 모델의 입력을 고차원 공간으로 인코딩하는 초기 예로는 단일 핫 인코딩 [Harris and Harris 2013]과 데이터의 복잡한 배열을 선형으로 분리할 수 있는 커널 트릭 [Theodoridis 2008]이 있습니다.

 

신경망의 경우, 입력 인코딩은 반복 아키텍처의 어텐션 구성 요소 [Gehring et al. 2017] 및 그에 따라 신경망이 현재 처리 중인 위치를 식별하는 데 도움이 되는 트랜스포머 [Vaswani et al. 2017]에서 스칼라 위치 x ∈ R을 L ∈ N 사인 및 코사인 함수의 다중 해상도 시퀀스로 인코딩합니다

이는 NeRF 알고리즘 [Mildenhall et al. 2020]에서 공간 방향으로 변화하는 라이트 필드 및 체적 밀도를 인코딩하기 위해 컴퓨터 그래픽에서 채택되었습니다.

이 라이트 필드의 5개의 차원은 위의 공식을 사용하여 독립적으로 인코딩됩니다; 이는 나중에 랜덤으로 배향된 평행 파면 [Tancik et al. 2020] 및 세부 수준 필터링 [Barron et al. 2021a]으로 확장되었습니다.

이 인코딩 제품군을 주파수 인코딩이라고 부를 것입니다.

특히, 가시성 함수의 근사화와 같은 다른 컴퓨터 그래픽 작업에서 주파수 인코딩 및 선형 변환이 사용되었습니다 [Annen et al. 2007; Jansen and Bavoil 2010].

 

Müller et al. [2019; 2020]은 단일 규모의 비용으로 경계 도메인에서 주파수 인코딩보다 더 정확한 결과를 얻을 수 있는 커널 래스터화에 기반한 단일 핫 인코딩의 연속 변형을 제안했습니다.

 

Parametric encodings.

최근에는 고전적인 데이터 구조와 신경 접근법 사이의 선을 블러하게 하는 매개 변수 인코딩을 통해 SOTA 결과를 얻고 있습니다.

이 아이디어는 그리드 [Chabra et al. 2020; Jiang et al. 2020; Liu et al. 2020; Mehta et al. 2021; Peng et al. 2020a; Sun et al. 2021; Tang et al. 2018; Yu et al. 2021a] 또는 트리 [Takikawa et al. 2021]을 통해 이러한 매개 변수를 검색하고 (선택적으로) 입력 벡터 x ∈ R^𝑑에 따라 보간합니다.

이 배열은 더 작은 계산 비용으로 더 큰 메모리 공간을 거래합니다: 네트워크를 통해 역방향으로 전파되는 각 그래디언트에 대해, fully connected MLP 네트워크의 모든 가중치가 업데이트되어야 하는 반면, 학습 가능한 입력 인코딩 파라미터("feature vector")에 대해, 매우 적은 수의 값만이 영향을 받습니다.

예를 들어, 피쳐 벡터의 삼선 보간 3D 그리드를 사용하면 인코딩으로 역방향 전파되는 각 샘플에 대해 그러한 그리드 포인트 8개만 업데이트되면 됩니다.

이러한 방식으로, 전체 파라미터 수가 고정 입력 인코딩보다 파라메트릭 인코딩에 대해 훨씬 더 높지만, 학습 중 업데이트에 필요한 FLOP 및 메모리 액세스의 수는 크게 증가하지 않습니다.

MLP의 크기를 감소시킴으로써, 그러한 파라메트릭 모델은 일반적으로 근사 품질을 희생하지 않고 훨씬 더 빠르게 수렴하도록 학습될 수 있습니다.

 

또 다른 매개 변수 접근 방식은 도메인 R^2의 트리 세분화를 사용하며, 여기서 큰 auxiliary coordinate encoder neural network (ACORN) [Martel et al. 2021]은 x 주변의 리프 노드에서 조밀한 피쳐 그리드를 출력하도록 학습됩니다.

그런 다음 약 10,000개의 엔트리를 가진 이러한 조밀한 피쳐 그리드는 Liu et al. [2020]에서와 같이 선형 보간됩니다.

이 접근 방식은 이전의 매개 변수 인코딩과 비교하여 더 큰 정도의 적응력을 산출하는 경향이 있지만, 충분히 많은 입력 x가 각 리프 노드에 속할 때만 상각될 수 있는 더 큰 계산 비용입니다.

Sparse parametric encodings.

기존의 매개 변수 인코딩은 비 매개 변수의 이전 인코딩보다 훨씬 더 큰 정확도를 산출하는 경향이 있지만 효율성과 범용성 측면에서도 단점이 있습니다.

학습 가능한 피쳐의 조밀한 그리드는 신경망 가중치보다 훨씬 더 많은 메모리를 소비합니다.

절충점을 설명하고 방법에 동기를 부여하기 위해 그림 2는 몇 가지 다른 인코딩에 대한 neural radiance field의 재구성 품질에 대한 효과를 보여줍니다.

(a) 입력 인코딩 없이 네트워크는 상당히 부드러운 위치 함수만 학습할 수 있으므로 라이트 필드의 근사치가 좋지 않습니다.

주파수 인코딩 (b)를 통해 동일한 적당히 크기의 네트워크(8개의 히든 레이어, 각 256개의 너비)가 훨씬 더 정확하게 장면을 표현할 수 있습니다.

중간 이미지 (c)는 총 3,360만 개의 학습 가능한 매개 변수에 대해 128^3개의 3선 보간, 16차원 피쳐 벡터의 조밀한 그리드를 가진 더 작은 네트워크를 쌍으로 연결합니다.

각 샘플이 8개의 그리드 포인트에만 영향을 미치기 때문에 많은 수의 학습 가능한 매개 변수를 효율적으로 업데이트할 수 있습니다.

 

그러나 조밀한 그리드는 두 가지 방법으로 낭비적입니다.

첫째, 빈 공간의 영역에 표면 근처의 영역에 수행하는 것만큼 많은 피쳐를 할당합니다.

매개 변수의 수는 O(N^3)만큼 증가하는 반면 관심 있는 가시 표면은 O(N^2)만큼만 증가합니다.

이 예에서 그리드는 해상도 128^3이지만 셀의 53807(2.57%)만이 가시 표면에 닿습니다.

 

둘째, 자연 장면은 매끄러움을 나타내어 다중 해상도 분해의 사용을 동기화합니다 [Chibane et al. 2020; Hadadan et al. 2021].

그림 2 (d)는 2차원 피쳐 벡터를 포함하는 16^3 - 173^3의 해상도를 가진 8개의 공위치 그리드에 보간된 피쳐가 저장된 인코딩을 사용한 결과를 보여줍니다.

이들은 연결되어 네트워크에 대한 16차원 (c) 입력을 형성합니다.

(c)와 같은 매개 변수 수가 절반 미만임에도 불구하고 재구성 품질은 유사합니다.

 

관심 표면이 a priori로 알려진 경우, octree [Takikawa et al. 2021] 또는 sparse grid [Chabra et al. 2020; Chibane et al. 2020; Hadadan et al. 2021; Ziang et al. 2020; Liu et al. 2020; Peng et al. 2020a]는 조밀 그리드에서 사용되지 않는 피쳐를 제거하는 데 사용될 수 있습니다.

그러나 NeRF 설정에서는 학습 중에만 표면이 나타납니다.

NSVF [Liu et al. 2020] 및 여러 동시 작업 [Sun et al. 2021; Yu et al. 2021a]은 피쳐 그리드의 영역이 필요에 따라 점진적으로 정제되고 제거되는 다단계의 coarse to fine 전략을 채택합니다.

효과적이지만, 이는 희소 데이터 구조를 주기적으로 업데이트해야 하는 보다 복잡한 학습 프로세스로 이어집니다.

 

우리의 방법—그림 2(e,f)—은 낭비를 줄이기 위해 두 가지 아이디어를 결합합니다.

우리는 재구성 품질을 위해 매개 변수의 수를 교환하도록 조정할 수 있는 하이퍼 매개 변수 T인 학습 가능한 피쳐 벡터를 콤팩트 공간 해시 테이블에 저장합니다.

학습 중 점진적인 가지치기나 장면의 기하학에 대한 priori 지식에 의존하지 않습니다.

(d)의 다중 해상도 그리드와 유사하게, 우리는 MLP를 통과하기 전에 보간된 출력이 연결되는 서로 다른 해상도로 인덱싱된 여러 개의 개별 해시 테이블을 사용합니다.

재구성 품질은 매개 변수가 20배 적음에도 불구하고 조밀한 그리드 인코딩과 비교할 수 있습니다.

 

3D 재구성 [Nießner et al. 2013]에 공간 해싱 [Teschner et al. 2003]을 사용한 이전 연구와 달리, 우리는 탐색, 버킷 또는 체인과 같은 일반적인 방법으로 해시 함수의 충돌을 명시적으로 처리하지 않습니다.

대신, 우리는 신경망에 의존하여 해시 충돌 자체를 모호하게 하지 않고 제어 흐름 발산을 방지하여 구현 복잡성을 줄이고 성능을 향상시킵니다.

또 다른 성능 이점은 표현되는 데이터와 독립적인 해시 테이블의 예측 가능한 메모리 레이아웃입니다.

좋은 캐싱 동작은 종종 트리와 같은 데이터 구조에서는 달성하기 어렵지만, 해시 테이블은 캐시 크기와 같은 낮은 수준의 아키텍처 세부 사항에 대해 미세 조정될 수 있습니다.

 

 

3  Multiresolution Hash Encoding

fully connected neural network m(y; Φ)가 주어지면, 우리는 주목할 만한 성능 오버헤드를 발생시키지 않으면서 광범위한 응용 분야에서 근사 품질과 학습 속도를 향상시키는 입력 y = enc(x; θ)의 인코딩에 관심이 있습니다.

우리의 신경망에는 학습 가능한 가중치 매개 변수 Φ뿐만 아니라 학습 가능한 인코딩 매개 변수 θ가 있습니다.

이들은 L개의 레벨로 배열되며, 각각은 차원성 F를 가진 최대 T개의 피쳐 벡터를 포함합니다.

이러한 하이퍼 매개 변수에 대한 일반적인 값은 표 1에 나와 있습니다.

그림 3은 우리의 다중 해상도 해시 인코딩에서 수행되는 단계를 보여줍니다.

각 레벨(그림에서 빨간색과 파란색으로 표시된 두 개)은 독립적이고 개념적으로 격자의 정점에 피쳐 벡터를 저장하며, 해상도는 가장 coarsest 해상도와 finest 해상도 사이의 기하학적 진행으로 선택됩니다 [N_min, N_max]:

N_max는 학습 데이터의 finest 세부 정보와 일치하도록 선택됩니다.

L 수준의 수가 많기 때문에 성장률이 일반적으로 작습니다.

우리의 사용 사례는 b ∈ [1.26, 2]입니다.

 

단일 레벨 l을 고려합니다.

입력 좌표 x ∈ R^d는 반올림하기 전에 ⌊x_l⌋ := ⌊x · N_l⌋, ⌈x_l⌉ := ⌈x · N_l⌉ 입니다.

 

⌊x_l⌋ 및 ⌈x_l⌉는 Z^d에 2^d개의 정수 정점을 갖는 복셀을 스팬합니다.

우리는 각 모서리를 최대 T의 고정 크기를 갖는 수준의 각 피쳐 벡터 배열의 항목에 매핑합니다.

조밀한 그리드가 T 매개 변수보다 적은, 즉 (N_l + 1)^d ≤ T를 필요로 하는 coarse 수준의 경우 이 매핑은 1:1입니다.

더 finer 수준에서는 해시 함수 h: Z^d → Z_T를 사용하여 배열로 인덱싱하여 명시적인 충돌 처리는 없지만 효과적으로 해시 테이블로 처리합니다.

대신 그래디언트 기반 최적화를 사용하여 배열에 적절한 희소 세부 정보를 저장하고 충돌 해결을 위해 후속 신경망 m(y; Φ)에 의존합니다.

따라서 학습 가능한 인코딩 매개 변수 θ의 수는 O(T)이며 T · L · F로 경계가 지정되며 이 경우 항상 T · 16 · 2입니다(표 1).

 

우리는

형태의 공간 해시 함수 [Teschner et al. 2003]를 사용하는데, 여기서 ⊕는 비트 단위 XOR 연산을 나타내고 π_i는 고유하고 큰 소수입니다.

효과적으로, 이 공식은 차원별 선형 합동 (pseudo-랜덤) 순열의 결과를 XOR하여 차원이 해시 값에 미치는 영향을 상관시킵니다 [Lehmer 1951].

특히 (pseudo-) 일관성을 달성하려면 d 차원 중 d - 1만 순열되어야 하므로 더 나은 캐시 일관성을 위해 π_1 : = 1, π_2 = 2 654 435 761, 그리고 π_3 = 805 459 861을 선택합니다.

 

마지막으로 각 모서리의 피쳐 벡터는 하이퍼큐브 내 x의 상대적 위치에 따라 d-선형 보간됩니다, 즉, 보간 가중치는 w_l : = x_l - ⌊x_l⌋입니다.

 

이 프로세스는 L 레벨 각각에 대해 독립적으로 수행된다는 것을 기억하십시오.

각 레벨의 보간된 피쳐 벡터와 보조 입력 ξ ∈ R^E(신경 래디언스 캐싱에서 인코딩된 뷰 방향 및 텍스처와 같은)가 연결되어 MLP m(y; Φ)에 대한 인코딩된 입력 enc(x; θ)인 y ∈ R^(LF+E)을 생성합니다.

 

Performance vs. quality.

해시 테이블 크기 T를 선택하면 성능, 메모리 및 품질 사이의 균형이 잡힙니다.

T의 값이 클수록 품질은 높아지고 성능은 낮아집니다.

메모리 풋프린트는 T에서 선형인 반면 품질과 성능은 하위 선형으로 확장되는 경향이 있습니다.

우리는 세 가지 신경 그래픽 프리미티브에 대한 광범위한 T 값에 대한 테스트 오류 vs. 학습 시간을 보고하는 그림 4에서 T의 영향을 분석합니다.

우리는 T를 사용하여 인코딩을 원하는 성능 특성으로 조정할 것을 권장합니다.

 

하이퍼 파라미터 L(레벨 수)과 F(피처 차원 수)는 또한 품질과 성능을 트레이드오프하며, 그림 5에서 학습 가능한 인코딩 파라미터 θ의 거의 일정한 수에 대해 분석합니다.

이 분석에서 우리는 (F = 2, L = 16)이 모든 응용 프로그램에서 바람직한 Pareto 최적임을 발견했기 때문에 다른 모든 결과에서 이러한 값을 사용하고 기본값으로 권장합니다.

 

Implicit hash collision resolution.

이 인코딩이 해시 충돌이 있는 상태에서 장면을 충실하게 재구성할 수 있다는 것은 직관에 어긋나는 것처럼 보일 수 있습니다.

성공의 비결은 해상도 레벨이 서로 보완하는 다른 강도를 가지고 있다는 것입니다.

coarse 레벨과 따라서 인코딩은 전체적으로 주입적입니다—즉, 그들은 충돌이 전혀 없습니다.

그러나 그들은 넓은 간격의 점 격자에서 선형으로 보간되는 피쳐를 제공하기 때문에 저해상도 버전의 장면만 나타낼 수 있습니다.

반대로 fine 레벨은 fine 격자 해상도로 인해 작은 피쳐를 포착할 수 있지만 많은 충돌로 인해 어려움을 겪습니다—즉, 동일한 테이블 엔트리에 해시되는 서로 다른 점들입니다.

동일한 정수 좌표 ⌊x_l⌋를 갖는 인근 입력은 충돌로 간주되지 않습니다.

충돌은 서로 다른 정수 좌표가 동일한 인덱스에 해시될 때 발생합니다.

다행히 이러한 충돌은 유사 랜덤으로 공간에 흩어져 있으며, 주어진 점 쌍에 대해 모든 수준에서 동시에 발생할 가능성이 통계적으로 거의 없습니다.

 

이러한 방식으로 샘플이 충돌할 때, 그들의 그래디언트 평균이 됩니다.

그러한 샘플의 최종 재구성에 대한 중요도는 거의 동일하지 않다는 것을 고려하십시오.

예를 들어, 래디언스 필드의 가시 표면의 한 점은 재구성된 이미지(높은 가시성과 높은 밀도를 가지며 둘 다 그래디언트의 크기에 곱셈적으로 영향을 미침)에 크게 기여하는 반면, 우연히 동일한 엔트리를 참조하는 빈 공간의 한 점은 훨씬 작은 가중치를 가질 것입니다.

결과적으로, 더 중요한 샘플의 그래디언트가 충돌 평균을 지배하고 앨리어싱된 테이블 엔트리는 더 높은 가중치 포인트의 요구를 반영하는 방식으로 자연스럽게 최적화될 것입니다.

 

해시 인코딩의 다중 해상도 측면은 충돌이 없는 것이 보장되는 coarse 해상도 N_min부터 작업에 필요한 finest의 해상도 N_max까지 전체 범위를 포함합니다.

따라서 희소성에 관계없이 의미 있는 학습이 일어날 수 있는 모든 스케일이 포함되도록 보장합니다.

기하학적 스케일링은 이러한 스케일을 O(log(N_max/N_min) 많은 레벨로만 덮을 수 있도록 하여 N_max에 대해 보수적으로 큰 값을 선택할 수 있습니다.

 

Online adaptivity.

입력 x의 분포가 학습 중에 시간이 지남에 따라 변경되면, 예를 들어 작은 지역에 집중되면 더 finer 그리드 레벨이 충돌을 덜 경험하고 더 정확한 함수를 학습할 수 있습니다.

즉, 다중 해상도 해시 인코딩은 학습 데이터 분포에 자동으로 적응하여 학습 중 이산 점프를 일으킬 수 있는 작업별 데이터 구조 유지보수 없이 트리 기반 인코딩의 이점을 이어받습니다 [Takikawa et al. 2021].

우리의 응용 프로그램 중 하나인 섹션 5.3의 신경 래디언스 캐싱은 애니메이션 관점과 3D 콘텐츠에 지속적으로 적응하여 이 피쳐를 크게 활용합니다.

 

d-linear interpolation.

조회된 해시 테이블 항목을 보간하면 인코딩 enc(x; θ)이 연속적이고 체인 규칙에 의해 신경망 m(enc(x; θ); Φ)과의 구성이 연속적임을 보장합니다.

보간하지 않으면 네트워크 출력에 그리드 정렬 불연속성이 존재하여 바람직하지 않은 블록 같은 모습을 초래할 수 있습니다.

예를 들어 편미분 방정식을 근사화할 때 더 높은 차수의 평활성을 원할 수 있습니다.

컴퓨터 그래픽의 구체적인 예는 부호 거리 함수이며, 이 경우 그래디언트 ∂m(enc(x; θ)/∂x, 즉 표면 정규도 이상적으로 연속적일 것입니다.

더 높은 차수의 평활성이 보장되어야 한다면 우리는 부록 A에서 저비용 접근법을 설명하지만 재구성 품질의 작은 감소로 인해 결과에 사용하지 않습니다.

 

 

4  Implementation

다중 해상도 해시 인코딩의 속도를 입증하기 위해 CUDA에 구현하여 tiny-cuda-n 프레임워크의 빠른 완전 융합 MLP와 통합했다 [Müller 2021].

다중 해상도 해시 인코딩의 소스 코드를 Müller [2021]에 업데이트로 공개합니다.

 

Performance considerations.

추론 및 역전파 성능을 최적화하기 위해 해시 테이블 항목을 절반 정밀도(엔트리당 2바이트)로 저장합니다.

Micikevicius et al. [2018]에 따라 안정적인 혼합 정밀도 매개 변수 업데이트를 위해 매개 변수의 마스터 복사본을 완전 정밀도로 유지합니다.

 

GPU의 캐시를 최적으로 사용하기 위해 해시 테이블 레벨을 레벨별로 평가합니다: 입력 위치의 배치를 처리할 때, 우리는 모든 입력에 대해 다중 해상도 해시 인코딩의 첫 번째 레벨을 찾아보고, 다음으로 모든 입력에 대해 두 번째 레벨을 찾도록 계산을 스케줄링합니다.

따라서 GPU에서 얼마나 많은 병렬성을 사용할 수 있는지에 따라 소수의 연속 해시 테이블만 주어진 시간에 캐시에 상주하면 됩니다.

중요한 것은 이 계산 구조가 자동적으로 사용 가능한 캐시와 병렬성을 다양한 해시 테이블 크기 T에 대해 잘 활용한다는 것입니다.