딥러닝에서 양자화(Quantization)는 float32 모델을 메모리 효율적이고 연산이 빠른 정수(int8) 기반 모델로 바꾸는 기술입니다. 이 과정에서 등장하는 핵심 요소는 Activation (활성값), Weight (가중치), 그리고 Bias (편향)입니다.
항목 | 정의 |
---|---|
Weight | 학습된 고정 파라미터, 레이어의 핵심 계산 요소 |
Activation | 입력 데이터를 통과시켜 레이어별로 계산된 중간 출력값 (입력에 따라 달라짐) |
Bias | 각 뉴런에 더해지는 상수 항, 학습 가능함 |
예: y = W * x + b
W
: weight (가중치)x
: activation (입력)b
: bias (편향)항목 | 양자화 여부 | 데이터 타입 | 비고 |
---|---|---|---|
Weight | ✅ 양자화 | int8 | 모델 크기 감소 및 정수 곱셈 가속 |
Activation | ✅ 양자화 (정적 시) | int8 or uint8 | 동적 양자화 시에는 추론 중에 float32 → int8 변환 |
Bias | ✅ 양자화 | int32 | 왜냐하면 int8 * int8 = int32 누산 |
[입력 X] → (int8 또는 uint8)
↓
[가중치 W] → (int8)
↓
[X * W] → 곱셈 후 int32 누산
↓
[+ Bias] → int32로 덧셈
↓
[출력 Y] → int32
↓
Requantization → int8 (다음 레이어 입력으로 사용)
※ PyTorch 등 프레임워크에서는 내부적으로 이 연산을 최적화된 정수 커널로 처리합니다.
아닙니다. 둘은 다릅니다.
항목 | 설명 |
---|---|
Activation (값) | 각 레이어에서 계산된 중간 출력값. 예: Linear , Conv2d 결과 |
Activation Function | 이 값에 적용되는 비선형 함수. 예: ReLU , Sigmoid , Softmax 등 |
예시 코드 | x = Linear(x) → activation 값 생성 → x = ReLU(x) |
즉, softmax
는 activation 값을 처리하는 함수이고, activation은 그 결과값입니다.
질문 | 정답 |
---|---|
정적 양자화에서 activation은 정수인가요? | ✅ 예, int8 |
동적 양자화에서는 activation이 float32인가요? | ✅ 예, 실시간 양자화라서 float32 유지 |
activation은 softmax와 같은 개념인가요? | ❌ 아니요. softmax는 함수, activation은 값 |
softmax는 양자화되나요? | ❌ 아니요. 일반적으로 float 연산으로 수행됨 |
bias는 왜 int32인가요? | ✅ int8 * int8 연산 누산을 정확히 덧셈하기 위해 필요 |