수업내용
(9강) 모델최적화기법(3); Quantization 실습
PTQ는 사전에 바꾸는거고, QAT는 일단 float으로 학습시킨 후에 나중에 int로 바꾸는 거다.
저렇게 표기하긴 하지만 library마다 표기 방식이 다르니까 유의하자.
구글에서 제공한 flowset. 정말 보기 좋은 듯.
[5]“8-BitInferencewithTensorRT.”2017GTCSanJose,gputechconf2017.smarteventscloud.com/connect/sessionDetail.ww?SESSION_ID=105897.
Full integer quantization은 NVIDIA에서 잘 수행한 예시가 있는데 자세한건 pdf와 위 링크를 보자. 이론과 다른점은 bias가 없어도 성능에 별 영향 없다고 해서 빼고, 최대 최소를 int의 최대 최소가 아니라 threshold를 적용해서 clip하고, threshold를 사용할 경우 그 기준점을 정해야 하는데 float으로 했을 때와 int로 했을 때의 차이를 KL divergence로 계산하여 이 값이 최소가 되도록 하는 구간을 bin을 이용해서 찾는다.. 는 내용이다.
Forward 시엔 해도 되지만 미분불가능한 영역이 backward 할 땐 생기니 기울기가 1일 거라고 복원해서 수행.
결국 QAT가 가장 좋은 듯. 학습을 더 하는거니까. 하지만 Dynamic → PTQ → QAT 순으로 해야할 것들이 많아지고 제약도 많아져서 가끔은 그냥 안돌아가는 것도 있음.
실습 방법은.. pytorch에 있는 요구사항 다 들어주자.
Quantization - PyTorch 1.8.1 documentation
Quantization Operation coverage - PyTorch 1.8.1 documentation
PTQ는 모델 앞뒤로 layer 추가하고 관련 설정도 진행한다.
QAT는 설정만 잘 해주자. 하지만 GPU는 아직 지원안되서 CPU로 학습해야 하는데, 너무 느리니까 fine tuning을 사용하는 데다가 epoch도 3,4 이상 돌면 그에따른 weight를 freeze 해준다.
'과거의 것들 > AI Tech boostcamp' 카테고리의 다른 글
P-stage4 정리 (0) | 2021.12.05 |
---|---|
P-stage 4 [day13] (10강) Nvidia GPU를 위한 TensorRT, DALI (0) | 2021.12.05 |
P-stage4 [day11] (8강) 모델 최적화 기법(3) : Quantization 이론 (0) | 2021.12.05 |
P-stage4 [day8] (0) | 2021.12.05 |
P-stage4 [day7] (7강) 모델최적화기법(2); Tensor Decomposition 실습 (0) | 2021.12.05 |