Quantization error
NeRF 관련 실험을 3개의 다른 실험환경에서 하고 있는데, 이번에 낸 논문의 실험을 재실험 및 발전시키면서 보니, 성능이 완전히 똑같이 reproduce가 안됐다.
Debugging을 해보니 새 실험환경에서의 float32 matrix multiplication할 때 quantization error가 생기고 있었다. Matrix multiplicatoin뿐 아니라 concat operation에서도 생기는 것 같기도.
어느쪽이 문제가 있는 건진 모르겠지만, 혹은 그냥 quantization 방식이 다른 거일수도, 보니까 GTX 1080 ti 와 (RXT 3090, RTX A5000)에서의 feature값들이 달랐다. coordinate transformation등의 계산은 float64로 바꿨다가 다시 float32로 돌리는 등 임시방편이있지만 (이것도 computation이 너무 커질수 있어 만능은 아님), neural network weight 과 feature의 multiplication은 손쓸 방법이 없음..
일단 RTX 3090, A5000이 GPU 연산을 빠르게 하려고 내부에서 quantization을 빡세게 하면서 error가 생기는 것으로 의심하고 있다. 왜냐면, vector A랑 vector B를 concat한 다음에 vector A 부분의 값을 확인해보면, concat전의 값이랑 달라져있음 ㄷㄷ
문제는 RTX 3090, A5000 환경이 학습시간이 2배 빠른데, test 결과 중 하나의 metric은 GTX 1080 ti에서 더 좋다는 것. 경향성에는 아무 차이는 없다 사실.