Quantization Implementation Unit Tests

YEOM JINSEOP·2023년 12월 23일

Quantization[이론]

목록 보기
1/2

출처: Lei Mao 'Quantization for NN'

Quantization Implementation Unit Tests

inference를 가속화할 low bit-width quantization 수식을 만든 후에, 구현이 잘되었는지 확인하는 것이 매우 중요하다.
그렇지 않으면, quantization inference가 부정확한 inference 결과를 출력하고, troubleshooting 하는 것이 매우 어렵다.

The Correct Apporach
구현이 잘됐는지 확인하는 방법은 다음과 같다.

STEP 1.

Training에 사용되는 fake quantization mathematics를 이해한다.

STEP 2.

Operation implementation in floating point를 준비한다.
이 구현은 신경망 학습 framework로부터 구현을 얻을 수 있다.

STEP 3.

Operation quantized implementation을 준비한다.
이것은 우리가 구현하는 것으로, inference를 가속하는 low bit-width 방식이다.

STEP 4.

Utility function처럼 quantization과 dequantizeion function을 만든다.
간단하기 때문에, 신경망 framework에서 코드를 얻거나, 직접 구현한다.
하지만, 만약 직접 구현한다고 하면, training에 사용하는 것과 동일하게 준비한다.

STEP 5.

"FP input tensors, input tensor scaling factors, input tensor zero points",
"output tenstor scaling factors, output tensor zero points"를 생성한다.
추가로, quantization과 dequantization utility functions를 이용해 "quantized input tensor" 와 "quantized-deqauntized input tensor"를 연산한다.

STEP 6.

"quantized-dequantized input tensor"를 이용해서, floating point operation을 실행한다.
"FP output tensor"를 모으고, quantization과 dequantization utility function을 이용해서 "quantized output tensor"와 "quantized-dequantized output tensor"를 연산한다.

STEP 7.

quantized operation을 실행한다. 이때 "quantized input tensors", "input tensor scaling factors", "input tensor zero points",
"output tensor scaling factors", "output tensor zero points"를 이용한다.
"quantized output tensor"를 모으고, dequantization utility function을 이용해서 "quantized-dequantized output tensor"를 연산한다.

STEP 8.

마지막으로, quantized implementation을 verify한다.
STEP 6의 FP operation으로부터의 quantized output tensor와
STEP 7의 quantized operation으로부터의 quantiezd output tensor는 bitwise로 동일해야 하고,
각각의 quantized-dequantized output 역시 동일해야 한다. (floating point number이여도)

코드 구현 예시에서 quantized matrix multiplication과 quantized ReLU 구현의 assertion은 위 verification process의 완벽한 예시이다.

The Incorrect Approach

흔한 quantized implementation을 veifying하는 incorrect way는 다음과 같다.
STEP 1부터 STEP 5까지는 위의 correct approach와 동일하다.

STEP 6.

FP input tensors를 이용해 FP operation를 실행한다.
FP output tensors를 모은다.

STEP 7.

quantized input tensors, input tensor scaling factors, input tensor zero points,
output tensor scaling factors, output zero points를 이용해서 quantized operation을 실행한다.
quantized output tensor를 모은다.
그리고, dequantization utility function을 이용해 "quantized-dequantized output tensors"를 연산한다.

STEP 8.

STEP 6의 FP operation으로부터의 FP output tensor와,
STEP 7의 quantized operation 사이의 error를 계산한다.
그리고 error가 some threshold 안에 있는지로 implementation이 적절한지 판단한다.

0개의 댓글