대형 언어 모델 효율화: 두 판 사이의 차이

IT 위키
편집 요약 없음
편집 요약 없음
 
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에 강건, 모델 안정성 향상 통계 계산과 구현이 복잡
  1. Ge, Suyu, et al. "Model tells you what to discard: Adaptive KV cache compression for LLMs." arXiv, 2023.  
  2. arXiv:2306.11695, 2023.  
  3. Xiao, Guangxuan, et al. "Efficient streaming language models with attention sinks." arXiv, 2023.