You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
너무 기본적인 질문일 듯 하지만 ㅜㅜ nonlinear operator들은 quantization을 적용하지 않는 이유가 무엇인가요?
답변: softmax나 activiation에 해당하는 GeLU 들에 quantization 적용할경우 기존의 uniform한 형태의 scheme을 사용하면 정확도 하락이 매우큰 상황입니다. 따라서 I-Bert나 FQ-ViT 논문들에서는 최대한 양자화 하려는 구간을 짧게 설정하고 그 안에서 logarithm 방법을 이용해서 양 극단의 값을 잘 반영하도록 양자화하는 scheme을 제안하고 있습니다. 그래도 모든 모델에 대해서 잘 동작하는지는 어려운 문제이므로 보통 linear한 operation인 matmul, conv 등에만 적용하는게 쉬운 방법입니다.
최근 CNN Backbone을 사용하는 여러 Vision 모델에서 Backbone을 ViT 기반으로 가져가려는 시도들이 많이 있는데, 이러한 경우에 적용해 볼만한 테크닉들이 어느정도 나와있는 상황인가요? 발표를 들었을 때는 Vision Transformer Quatization은 이제 연구가 시작되고 있는 초창기 정도로 느껴졌는데, Quantization이 겸비된 CNN 구조를 ViT가 대체할 수 있을지가 궁금하네요.
답변: 말씀해 주신것처럼, CNN에 대해서는 Pruning, quantization , KD 등의 경량화 기술들이 많이 개발되었고 그 검증 또한 여러 vision task에 대해서 다양한 모델들에 맞춰서 이뤄졌습니다. 그래서 어느정도 레드오션이라 생각해서 연구들이 이제 vision transformer쪽으로 타겟하여 경량화 기술들이 나오는 것 같습니다. vision transformer도 결국 transformer고 이경우 NLP task쪽에서 경량화한 기술들이 어느정도 많기 때문에 이쪽 결과들을 잘 활용하고 아이디어를 추가하는 방식으로 기술개발의 속도를 올릴 수 있을것 같습니다. 추가로 저는 NLP나 vision쪽이 모두 transformer를 중심으로 backbone이 만들어지면 경량화 알고리즘이나 연산 라이브러리, 하드웨어 측면에서 한쪽 아키텍쳐만 집중할 수 있는 구조이기 때문에 이러한 방향이 괜찮다고 생각하고 있습니다.
이전에 "Understanding Black-box Predictions via Influence Functions (2017)" 논문을 통해서 Hessian 을 DL 분야에 접한 내용을 처음 본 것 같습니다. 연산량 문제가 급하지 않은 상황에서는 "Hessian의 활용도"가 꽤 있을 것 같은데, 이에 대한 개인적인 질문을 드리고 싶었습니다. 감사합니다.
답변: 말씀해주신 것처럼 hessian을 이용한 최적화 연구들을 많이 존재하고 있습니다. 대부분 딥러닝과 같은 큰 시스템에서 hessian을 모두 계산하는것은 너무 메모리 측면과 연산측면에서 무겁기 때문에 근사치를 추정하고 있습니다. 가장큰 eigenvalue로 퉁쳐서 계산하는 방식 (HAWQ-v1)도 있고 이번에 소개드린 방식처럼 Fisher information을 이용해서 gradient의 diagonal matrix을 이용하는 방법도 있습니다. BRECQ논문을 보면 full hessian에 대한 이야기도 있는데 이 경우 calibration 데이터로 120만장의 학습데이터중 32장 정도를 샘플링해서 사용하기에 이렇게 적은 데이터로 full hessian을 써버리면 overfitting 문제가 발생해서 차라리 근사치를 쓰는게 효율적이다 라는 내용도 있습니다. 따라서 full hessian을 고려할 때는 충분히 많은 데이터로 구해져야하는 것도 중요할 것 같고, 적은 데이터로도 과적합을 막는 연구들도 Neurips22에 network wise quantization의 이름으로 나온 것으로 알고 있습니다.
Code generation이라는 말이 몇 번 나왔던 것 같은데, 혹시 그게 뭔지 알 수 있을까요...?
답변: Compiler나 연산 library에서 low-level code를 생성하거나 매칭하는 단계를 의미합니다. 양자화된 모델을 결국 실행하려면 코드를 생성해야하는데 이때 알고리즘 연구와는 다르게 최대한 dequantize와 requantize를 덜 하는 방식으로 코드를 생성하게 됩니다. 또는 하드웨어에서 지원하는 special instruction을 사용해서 줄어든 date type을 활용한 연산을 수행합니다. (ex: NVIDIA GPU dp4a (int8 가정시))
p12에서 양자화를 했을 때 Loss 값을 직접 minimize하지 않고 FP32와의 cross entropy를 minimize하는 이유는 KD와 같이 soft label을 학습하기 위함일까요?
답변: FP32로 추론 했을떄의 softmax 이후의 확률 분포와 양자화 에러를 포함한 softmax 이후의 확률 분포와의 차이를 최소화 하는 방향으로 최적화를 하기위해서 Cross entropy를 사용합니다. 말씀하신 것처럼 hard label이 아닌 soft label의 개념으로도 볼 수 있을 것 같습니다. 좋은 코멘트 감사합니다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Beta Was this translation helpful? Give feedback.
All reactions