1. motivation 일반적으로 float32로 network 연산과정이 표현되나 그것보다 작은 크기의 데이터 타입인 float16 half precision이나 int8 fixed point로 mapping하여 연산을 수행하는 것 2. 예시 1번처럼 float32의 matrix들을 int8로 quantization mapping하여 표현을함 matrix를 계산한 결과가 2번임 2번을 다시 float32로 dequantization하면 3번이 됨 실제 quantization하지 않고 계산한 4번과 비교하면 어느정도 오차가 있는데 이것을 quantization error라고 부름 경험적으로 quantization error에 대해 robust하게 network가 잘 작동한다는 사실이 알려져서 보편..
neural network의 weight나 activation을 연속적으로 정밀하게 미세한 값으로 표현하는 것보다 정밀도가 떨어지더라도 sparse하게 드문드문 떨어지는 덩어리 quantization으로 표현 1. 왜 하는가? 가장 중요한 부분은 training을 더 빠르게 하기위함보다는 inference 과정에서 속도를 빠르게 하고 싶어서 quantization을 하는 것 model size가 작아짐 32bit의 232에서 16bit로 216으로 8bit에서 28로 절반씩 표현능력과 size가 감소하나 그만큼 메모리양을 절약할 수 있음 저장된 데이터를 얼마나 읽어올 수 있는지 memory bandwidth의 필요량을 줄일 수 있다? 이게 무슨 말인지 생각해봤는데 큰 siz..
1. model.eval() model.train()과 비슷하게 model을 evaluation mode로 바꾸는 것 evaluation 전에 반드시 설정하는 것이 좋다 batchnorm이나 dropout같은 것들이 training과정과 evalutation과정에서 다르게 동작해야해서 설정해주는 것이 의미 있다 실제로 쓰지 않으면.. 결과가 매우 다르기 때문에 잊지말고 사용해야한다. 2. with torch.no_grad() evaluation은 단지 검증과정이다. 중간에 model의 parameter가 update된다면 문제가 있음 무슨 말이냐면 training 단계에서 update된 parameter를 가지고 evaluation하고 싶은거지 inference과정에서 따로 parameter를 또 upd..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.