과거의 것들/AI Tech boostcamp

AITech 학습정리-[Day 39] 양자화 / 지식 증류

용나리 2021. 11. 27. 00:15

================================

학습내용

(8강) 양자화

이번 강의는 관심이 없어서 그런지 머리에 하나도 안들어왔다.

그래서 필요성을 약간이나마 느낀것들을 정리하려고 한다. 필요하면 그때 찾아야지..


float 저장 방식으로 생기는 오류들.

 

 
https://youtu.be/DDelqfkYCuo


근데 양자화 시키면 미분 불가능하니까 못하는거 아니냐? 할 수 있어서 적당히 양자화 시키는 것도 있음.

https://openaccess.thecvf.com/content_CVPR_2019/papers/Yang_Quantization_Networks_CVPR_2019_paper.pdf

 

https://www.tensorflow.org/lite/performance/post_training_quantization
https://talkingaboutme.tistory.com/entry/Embedded-DL-Tensorflow-Lite-Quantization

하드웨어마다 되는게 있고 안되는게 있으니까 보고 판단하자.

 
https://wannabeaprogrammer.tistory.com/42



https://www.tensorflow.org/lite/performance/model_optimization#why_models_should_be_optimized
https://stackoverflow.com/questions/60883928/quantization-aware-training-in-tensorflow-version-2-and-batchnorm-folding

https://arxiv.org/pdf/1806.08342.pdf

 

 

실습

https://drive.google.com/file/d/1dzvkQLKRLLdAxfmd4imFs1F3CN_urHNo/view?usp=sharing

pytorch에서 모델에 quantize 하는방법.



(9강) 지식 증류

 

https://ppss.kr/archives/230096
https://www.researchgate.net/figure/Significance-of-decision-compared-to-knowledge-on-project-see-47_fig2_273983243

솔직히 모델설계랑 별 관련 없는것 같긴 한데.. 프로젝트 시작한지 얼마 안됐을 때 많은 결정을 해보자. 그만큼 피드백도 빨리 받고 발전도 빨리 된다는듯.

 

 
https://opentutorials.org/module/3653/22995


sigmoid의 기원.

 


기존에 배운 transfer learning이랑 비슷한 teacher student 방식을 쓰는 knowledge transfer. 다른점은 무거운 모델에서 가벼운 모델로 학습을 한다는 것. 이렇게 teacher 모방하는 방식이 student가 혼자 쌩으로 학습하는 것 보다는 나은 성능을 보이더라.

https://intellabs.github.io/distiller/knowledge_distillation.html
https://arxiv.org/pdf/1503.02531.pdf

전에 했던 transfer learning이랑 비슷하다. T가 뭔지는 밑에서 알려주겠다.

https://www.ttic.edu/dl/dark14.pdf
https://arxiv.org/pdf/1503.02531.pdf

옛날엔 정답만 1, 나머진 0으로 놓고 학습했었다. 근데 그렇게 하는게 맞는가? 싶어 softmax로 살펴보면 정답이 아니어도 정답과 비슷한 것 끼린 높은 점수가 나오고 전혀 관련이 없으면 매우 낮은 점수가 나온다. 이런 정답끼리의 유사한 정도도 학습하는게 좋겠다.

 
https://github.com/kmsravindra/ML-AI-experiments/blob/master/AI/knowledge_distillation/Knowledge%20distillation.ipynb


그래서 아까 위에서 봤떤 T가 극단적으로 1! 0.9999! 이런게 아니라 정답이어도 적당히 점수를 낮추고 비슷한 답은 상대적으로 올려서 학습하는 정도.

https://en.wikipedia.org/wiki/Knowledge_distillation
https://math.stackexchange.com/questions/1888141/why-is-the-softmax-function-called-that-way

https://arxiv.org/pdf/1503.02531

zi인 distilled model이 student고 cumbersome model인 teacher 가 v. 둘이 유사하게 맞춘다는게 핵심인 것 같다.

 
https://pythonawesome.com/a-clean-pytorch-implementation-to-run-quick-distillation-experiments/


수 많은 distillation 방법들이 있다.

 
https://arxiv.org/pdf/1904.01866.pdf


얘는 distill layer를 지금까지 relu 뒤에만 뒀는데 앞에 두는건 어떨까 하는거.

 
https://arxiv.org/pdf/1710.07535.pdf


student에게 가르쳐줄 때 데이터가 없거나 거의 없이 훈련시킬 수 있을까? 하는거.

 

실습

https://drive.google.com/file/d/16DxGDOXs-DGHlqmTWqyV5ZhCQ6dL6qVa/view?usp=sharing

teacher child 모델 어떻게 훈련하는지 코드로 잘 설명해준다.

 

=================================

과제

 

돌리는중..

실습때와 같이 knowledge transfer를 어떻게 하는지 잘 보여줌.

 

 

 

=================================

피어세션

수업 복습해봄.

==================================

후기

할 일을 차근차근 하자.