URL : https://d2.naver.com/helloworld/4608596
경량화 방법
- quantization
- 특징
- 기본적인 기법이라 프레임워크에 의존적이지도 않다
- 프루닝 기법과도 궁합이 잘 맞음
- 실제 적용 시 발생하는 대표적인 오류 두 가지
- 지원되지 않는 레이어로 발생하는 오류
- torch.jit.script module을 quatization할 때 생기는 오류
- git으로 만들기 전 코드를 전달받거나 해야한다.
- pruning
- 이슈
- 모델의 구조가 취약해진다는 생각을 하기 쉬움 (파라미터 수가 줄어들거라는 기대)
- 실제로는 프루닝을 진행한다고 해서 파라미터가 줄어들지 않음
- 이론과 다르게 파라미터를 잘라내는 것이 아니라 원래 값을 0으로 만드는 것
- 오히려 sparsity matrix에서 속도가 느려지는 이슈가 있음
- masking된 오리지널 웨이트가 있는지 확인해봐야함
- torch는 .remove 함수를 통해 0으로 바뀌기전 웨이트를 제거해줘야 한다
- 제거해도 gam 알고리즘이 적용되어서 속도에 영향이 없을 수도 있다 → swap라이브러리나 openglas, cublas 들을 사용해줘야 한다
- 나이브하게 프루닝을 적용하면 성능에 악영향을 미칠 수 밖에 없다
- over parameter를 제거하는 연구 논문이 많이 등장하고 있음
- 프루닝을 진행했는데 오히려 정확도가 높아지는 경우도 있다
- 전력소모도 줄어든다
- low-rank 방법론
- 적용이 까다롭고 아직 많이 연구가 덜 되었지만 놀라운게 많다
- knowledge distillation
- transfer learning : 다른 도메인에서의 학습이라는 점에서 다른다
- self-distillation 방법을 통해 큰 모델의 웨이트를 보존시키는 방법에선 효과적인데 다른 방법에서는 크게 효과가 없을 수도 있다
- 모델의 아키텍쳐가 조금만 달라도 효과가 없어지는 경우가 많다
경량화가 마주한 과제
- 일반화의 어려움
- 중요한 정보가 특정 뉴런에 몰려 있을 때 잘라내면 큰 성능 차이가 생긴다
- 아직 성숙하지 않은 분야
경량화의 강점
- expectable & explainable
- 직관적이고 안정적인 output
- 메모리 점유율 등을 직관적으로 볼 수 있고 이해하기 쉬움
- 확장성 & 지속성