DeepLearning

[DeepLearning] 언어 모델 최적화 개념 정리

dong_seok 2025. 2. 14. 21:06

언어 모델을 효과적으로 활용하려면 모델을 최적화하고 경량화하는 과정이 중요합니다. 이번 포스트에서는 모델의 추론 과정, KV 캐시, 양자화, 지식 증류 등의 개념을 직관적으로 정리해보겠습니다.

1. 언어 모델이 텍스트를 생성하는 방식

1.1 언어 모델이 텍스트 생성을 마치는 이유

  • EOS(End of Sequence) 토큰 생성
    문장이 끝났음을 알리는 특수 토큰을 생성할 경우 텍스트 생성을 종료합니다.
  • 최대 길이 도달
    사용자가 설정한 최대 토큰 길이에 도달하면 텍스트 생성을 종료합니다.

1.2 자기 회귀적(Auto-Regressive) 모델

언어 모델은 입력된 텍스트를 기반으로 다음 토큰을 하나씩 순차적으로 예측합니다. 즉, 이전에 생성된 토큰들을 다시 모델 입력으로 넣어 다음 토큰을 예측하는 과정을 반복합니다.


2. 중복 연산을 줄이는 KV 캐시

2.1 KV(Key-Value) 캐시란?

셀프 어텐션(self-attention) 과정에서 이미 계산된 키(Key)와 값(Value)을 저장해두었다가 재활용함으로써 중복 연산을 줄이는 기법입니다. 이를 통해 모델 추론 시 연산 비용과 시간을 절감할 수 있습니다.

2.2 KV 캐시의 메모리 사용량 예시

  • 계산식 예시:
    2(fp16) × 2(키와 값) × 레이어 수 × 토큰 임베딩 차원 × 최대 시퀀스 길이 × 배치 크기
  • 예: Llama-2 13B 모델 기준
    • 배치 크기 1당 약 3.125GB 메모리 사용
    • NVIDIA A100(40GB)에서 최대 14GB까지 KV 캐시 활용 가능 → 배치 크기 최대 4
    • 더 큰 배치 크기를 처리하려면 모델 또는 KV 캐시를 효율적으로 줄이는 추가 최적화가 필요합니다.

3. GPU 구조와 최적의 배치 크기

3.1 효율적인 서빙을 위한 주요 지표

  1. 비용: GPU 등 하드웨어 자원 사용 효율
  2. 처리량(Throughput): 일정 시간(초)당 처리 가능한 요청 수
  3. 지연 시간(Latency): 하나의 토큰을 생성하는 데 걸리는 시간

3.2 GPU 내부 구조

  • SM(Stream Multiprocessors)
    Compute(연산)을 수행하는 부분과, 계산 할 값을 저장하는 SRAM으로 구성
  • SRAM(Static RAM)
    L1 캐시 또는 공유 메모리 역할, 용량이 적음
  • HBM(High Bandwidth Memory)
    대규모 데이터를 저장하는 고대역폭 메모리

3.3 최적의 배치 크기(B*)

  • 배치 크기가 작으면 모델 파라미터 이동(메모리 I/O)에 시간이 많이 들고, 연산 자원 낭비가 발생합니다.
  • 배치 크기가 너무 크면 연산 시간이 길어져 전체 지연 시간이 늘어납니다.
  • 최적 배치 크기 공식 예시:
    B* = 하드웨어 연산 속도 / (2 × 메모리 대역폭)
    • A100 GPU 기준 약 102 정도가 최적 배치 크기로 추정
    • 그러나 Llama-2 13B 모델은 실제 배치 크기가 4 정도로 제한 → 추가적인 모델 및 메모리 최적화가 요구됩니다.

4. KV 캐시 메모리 줄이기

4.1 효율적인 어텐션 방식

  1. 멀티 쿼리 어텐션(Multi-Query Attention)
    모든 쿼리 토큰이 하나의 키와 값을 공유해 메모리를 절약하는 방식입니다.
  2. 그룹 쿼리 어텐션(Group Query Attention)
    멀티 헤드 어텐션과 멀티 쿼리 어텐션의 절충안으로, 여러 쿼리를 그룹으로 묶어 키/값을 공유함으로써 메모리 사용량과 성능 간의 균형을 유지합니다.

5. 양자화(Quantization)로 모델 크기 줄이기

양자화란 모델의 가중치와 연산을 정수 기반의 낮은 정밀도로 표현하여 메모리를 절감하고 추론 속도를 높이는 방법입니다.

5.1 비츠앤바이츠 (BitsAndBytes)

  • 8비트 행렬 연산
    이상치가 포함된 열은 16비트로 유지하고, 정상 범위 값들은 8비트로 양자화하여 연산합니다.
  • 4비트 정규 분포 양자화(QLoRA)
    보다 높은 수준의 메모리 절감 효과를 기대할 수 있는 방식입니다.

5.2 GPTQ (GPT Quantization)

  • 양자화 전후 모델 예측값의 차이를 최소화하도록 모델 파라미터를 조정하는 기법
  • 예: 175B 규모 모델 양자화에 A100 GPU로 약 4시간 소요

5.3 AWQ (Activation-aware Weight Quantization)

  • 모델의 모든 파라미터가 동일하게 중요하지 않다는 점을 고려하여, 활성화 값(Activation Magnitude)이 큰 채널의 파라미터를 더 중요하게 반영
  • 스케일러(Scaler)를 적용해 양자화 시 발생할 수 있는 정밀도 손실을 보완할 수 있습니다.

6. 지식 증류(Knowledge Distillation)

지식 증류는 성능이 높은 대형 모델(Teacher Model)의 출력을 작은 모델(Student Model)에 학습시켜 성능을 향상하는 방법입니다. 작은 모델도 선생 모델이 가진 지식을 효율적으로 흡수할 수 있어, 파라미터 수는 적어도 성능을 높게 유지할 수 있습니다.

 


마무리

이상으로 언어 모델을 경량화하고 최적화하는 주요 방법들을 간략히 살펴보았습니다. 실제 환경에서 KV 캐시를 활용하고, 배치 크기를 최적화하며, 양자화지식 증류 같은 기술을 적절히 조합하면 더 적은 자원으로도 빠르고 효율적인 모델 서빙이 가능해집니다.

  • KV 캐시 최적화
  • 배치 크기 조절
  • 양자화를 통한 모델 축소
  • 지식 증류 기반 압축

참고자료

LLM을 활용한 실전 AI 애플리케이션 개발 - 허정준

https://www.youtube.com/watch?v=gMOAud7hZg4&t=1980s

 

'DeepLearning' 카테고리의 다른 글

[DeepLearning] 용어 정리  (0) 2025.02.12
[DeepLearning] 제목 기반 카테고리 예측 모델 개발  (0) 2025.02.09