대형 언어 모델 효율화: 두 판 사이의 차이
편집 요약 없음 |
편집 요약 없음 |
||
| 28번째 줄: | 28번째 줄: | ||
**수식: Y = (X·diag(s)^(-1))·(diag(s)·W) | **수식: Y = (X·diag(s)^(-1))·(diag(s)·W) | ||
**α 하이퍼파라미터로 activation–weight 균형 제어. | **α 하이퍼파라미터로 activation–weight 균형 제어. | ||
*[[QuaRot]] | |||
*'''GPTQ''' (Quantization by Gradient Descent) | *'''GPTQ''' (Quantization by Gradient Descent) | ||
**학습 후 Hessian 근사 기반 최적화 양자화. | **학습 후 Hessian 근사 기반 최적화 양자화. | ||
2025년 10월 23일 (목) 07:51 기준 최신판
본 문서는 대형 언어 모델(Large Language Model, LLM)의 저장 공간 및 연산 효율을 개선하기 위한 대표적 기법들을 정리한 것이다. 주요 방향은 양자화(Quantization), 가지치기(Pruning), 지식 증류(Knowledge Distillation)이며, LoRA, SmoothQuant, MoE 등 최신 기법들도 포함된다.
양자화 (Quantization)[편집 | 원본 편집]
모델의 가중치(weight)와 활성값(activation)을 부동소수(FP32) 대신 정수(INT8, INT4 등)로 표현하여 메모리와 연산량을 줄이는 기술이다. 신경망 양자화에 관한 일반적 내용은 해당 문서에서 확인할 수 있다.
주요 방식
- 정적 양자화 (Static Quantization)
- 사전 수집된 데이터셋으로 scale과 zero-point를 미리 계산.
- 동적 양자화 (Dynamic Quantization)
- 실행 시점에 활성값을 실시간으로 양자화.
- 후처리 양자화 (Post-training Quantization, PTQ)
- 학습된 모델에 재학습 없이 양자화를 적용.
- 양자화 인식 학습 (Quantization-Aware Training, QAT)
- 학습 단계에서 양자화 효과를 모의(simulation)하여 정확도 손실을 최소화.
세분화 수준 (Granularity)
- Tensor-based quantization
- Vector-based quantization
- Group-based quantization
Outlier 관리
LLM은 모델 특성상 다른 DNN에 비해 이상치가 두드러지므로 이에 대한 별도 처리를 하지 않으면 같은 신경망 양자화 기법을 적용했을 때 특히 손실이 크다. 따라서 LLM용 Outlier 관리 기법이 별도로 중요하게 사용된다.
- Massive Activation
- Channel-wise Outlier
- Clip Activation / Clip Weight
LLM 특화 양자화 기법
- SmoothQuant (ICML 2023)
- 활성값의 outlier 문제를 가중치 쪽으로 이전(migrate)하여 양자화 오차를 줄임.
- 수식: Y = (X·diag(s)^(-1))·(diag(s)·W)
- α 하이퍼파라미터로 activation–weight 균형 제어.
- QuaRot
- GPTQ (Quantization by Gradient Descent)
- 학습 후 Hessian 근사 기반 최적화 양자화.
- AWQ (Activation-aware Weight Quantization)
- Calibration 단계에서 outlier-aware scaling 적용.
- ZeroQuant (Microsoft, 2022)
- End-to-end 자동 양자화 파이프라인.
가지치기 (Pruning)[편집 | 원본 편집]
불필요하거나 기여도가 낮은 가중치를 제거하여 모델 크기를 줄이고 추론 속도를 향상시키는 방법. 신경망 가지치기에 대한 일반적 내용은 해당 문서 참조
LLM 특화 프루닝 기법
- KV Cache Pruning [1]
- Key/Value 벡터(Kᵢⱼ, Vᵢⱼ)를 토큰 중요도 기반으로 압축.
- Attention score에 따라 불필요한 KV를 삭제하여 메모리 사용량 감소.
- Wanda (Weight and Activation Aware Pruning) [2]
- Magnitude뿐 아니라 Activation 크기를 반영하여 중요도를 계산.
- LLM 구조에 최적화된 post-training pruning 기법.
- Streaming-LLM[3]
- Attention Sink 문제를 완화하며, 초기 토큰의 KV를 부분 유지.
- Sliding Window Attention과 KV 캐시 재활용을 결합하여 효율적 스트리밍 추론 구현.
저랭크 분해 (Low-rank Decomposition for LLM)[편집 | 원본 편집]
저랭크 분해(Low-rank Decomposition)는 대규모 언어모델(LLM)의 파라미터를 효율적으로 줄이기 위한 대표적인 방법이다. 거대한 가중치 행렬을 두 개의 더 작은 행렬로 근사함으로써, 계산량과 저장 공간을 줄이면서도 모델의 표현력을 유지한다.
기본 개념
- 일반적인 신경망에서는 거대한 가중치 행렬이 입력을 출력으로 변환한다.
- 저랭크 분해는 이 큰 행렬을 두 개의 더 작은 행렬로 나누어 근사한다.
- 이렇게 하면 모델은 전체 행렬을 학습하지 않고, 두 개의 더 작고 효율적인 행렬만 학습하게 된다.
- 결과적으로 필요한 연산과 저장 공간이 크게 줄어든다.
장점
- 학습 시 필요한 연산량이 감소하고, GPU 메모리 사용량이 줄어든다.
- 가중치 수가 크게 줄어, 모델의 저장 공간이 절약된다.
- I/O 비용이 줄어 추론 속도가 빨라진다.
단점
- 너무 작은 차원으로 근사하면 모델의 표현력이 손상되어 정확도가 급격히 떨어질 수 있다.
- 최적의 차원 수(랭크)를 선택하는 과정이 쉽지 않다.
SVD 기반 접근[편집 | 원본 편집]
- 저랭크 분해는 수학적으로 ‘특이값 분해(SVD)’로 설명될 수 있다.
- 하나의 가중치 행렬을 세 부분으로 나누어, 핵심 정보를 담은 중간 부분만 남기고 나머지를 제거한다.
- 이렇게 하면 중요한 패턴은 유지하면서 불필요한 세부 정보를 제거할 수 있다.
- 다만, 단순히 분해만 수행하면 연산량이 줄지 않고 오히려 늘어날 수 있다.
- 따라서 실제 응용에서는 작은 특이값(영향이 적은 부분)을 제거하는 방식으로 최적화한다.
Transformer 구조에서의 적용[편집 | 원본 편집]
- 대규모 언어모델의 핵심 연산은 선형 변환과 어텐션 프로젝션에 집중되어 있다.
- 이 부분에 저랭크 분해를 적용하면 다음과 같은 이점을 얻을 수 있다.
- 연산량이 감소하여 추론 속도가 빨라진다.
- GPU 메모리와 저장 공간이 절감된다.
- KV 캐시(과거 토큰의 키·값 벡터)의 크기가 줄어들어 긴 문맥을 더 효율적으로 다룰 수 있다.
QSVD (Query–Key–Value 통합 저랭크 근사)[편집 | 원본 편집]
- QSVD는 Transformer의 Query, Key, Value 세 가지 선형 변환을 하나의 공통 구조로 결합하여 효율을 높인 방법이다.
- 기존 방식에서는 Q, K, V 각각 별도의 행렬을 학습했지만, QSVD는 이를 하나로 묶어 공통 저차원 공간을 공유하도록 한다.
- 이렇게 하면 세 변환 간의 중복된 정보를 줄이고, 필요한 계산과 저장 공간이 줄어든다.
- 또한 캐시 메모리 사용량이 크게 감소하여 긴 입력 문장 처리 시 효율이 향상된다.
- 이 접근은 시각·언어 융합 모델 등 멀티모달 구조에서도 유용하다.
특징
- Q, K, V를 병합하여 하나의 큰 행렬로 만든 뒤, 이를 저차원으로 근사한다.
- 이후 다시 필요한 형태로 분리하면서 공통된 저차원 표현을 공유한다.
- 동일한 크기의 모델에서도 더 적은 계산으로 비슷한 품질을 유지할 수 있다.
ASVD (Activation-Aware SVD)[편집 | 원본 편집]
- ASVD는 입력 데이터의 분포를 함께 고려하는 발전된 저랭크 분해 방식이다.
- 기존 방법은 가중치 행렬만 보고 근사하기 때문에, 입력값의 크기나 분포에 따라 성능이 불안정할 수 있다.
- ASVD는 입력 활성값(activation)의 통계적 특징을 분석해, 각 채널별 중요도를 반영한다.
- 이렇게 하면 특정 채널에 값이 과도하게 크거나 불균형할 때도 안정적으로 근사할 수 있다.
- 결과적으로, 채널별 이상치(outlier)에 강건한 저랭크 근사가 가능해지고 LLM의 압축 안정성이 향상된다.
기법 간 비교[편집 | 원본 편집]
| 기법 | 주요 개념 | 장점 | 한계 |
|---|---|---|---|
| 기본 저랭크 분해 | 가중치를 두 개의 작은 행렬로 근사 | 단순하고 구현이 쉬움 | 근사 차원 선택이 어려움 |
| SVD 기반 | 가중치의 주요 성분만 남기고 나머지를 제거 | 정보 손실이 적고 수학적으로 안정적 | 입력 분포를 고려하지 않음 |
| QSVD | Query/Key/Value를 통합하여 저차원 표현 공유 | 캐시 절약, 연산 효율 향상 | 구조 복잡, 추가 변환 필요 |
| ASVD | 입력 활성값의 통계까지 반영한 SVD | Outlier에 강건, 모델 안정성 향상 | 통계 계산과 구현이 복잡 |