대규모 언어 모델의 양자화 기술과 최적화 전략

양자화 기술 개요 및 적용

최근 대규모 언어 모델의 효율적 배포를 위해 다양한 양자화 기법이 등장했다. 이는 메모리 사용량을 줄이고 추론 성능을 높이는 데 중점을 두며, 주로 GPTQ, AWQ, GGUF 등의 방법이 활용된다.

GPTQ: 사후 양자화 기반

  • 목표: 4비트 양자화를 통해 가속기(특히 GPU)에서의 추론 효율성을 극대화
  • 방식: 스칼라 양자화 후 잔차에 대해 벡터 양자화를 수행하며, 평균 제곱 오차를 최소화하는 방식으로 가중치를 압축
  • 특징: 추론 시에는 float16로 동적으로 복원하여 성능 향상과 메모리 절약을 동시에 달성

AWQ: 활성화 인식 양자화

  • 개념: GPTQ의 발전형으로, 중요한 가중치만을 보존하고 덜 중요한 부분은 양자화 손실을 줄이기 위한 전략
  • 장점: GPTQ보다 빠른 처리 속도와 거의 동일하거나 더 나은 정확도 유지 가능

GGUF: CPU 중심의 양자화

  • 목표: CPU 환경에서도 효율적인 추론을 가능하게 하며, 일부 계층을 GPU로 오프로드할 수 있도록 설계
  • 사용 예시: llama.cpp 프로젝트에서 활용되며, Q4_K_M 형식은 k-means 클러스터링을 기반으로 한 양자화 방식

코드 예제: 양자화 적용

from transformers import BitsAndBytesConfig
from torch import bfloat16

# 4비트 양자화 설정
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type='nf4',
    bnb_4bit_use_double_quant=True,
    bnb_4bit_compute_dtype=bfloat16
)

model_id = "meta-llama/Meta-Llama-3-8B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map='auto'
)

모델 학습 및 평가

학습 과정에서는 SFTTrainer와 같은 도구를 사용해 지도 학습을 수행하며, 데이터셋은 질문-응답 형식으로 구성된다. 특히 DataCollatorForCompletionOnlyLM는 응답 부분에만 손실을 계산하도록 설정되어 있어, 프롬프트 부분은 무시된다.

from trl import SFTTrainer, DataCollatorForCompletionOnlyLM

response_template = " ### Answer:"
collator = DataCollatorForCompletionOnlyLM(response_template, tokenizer=tokenizer)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    args=SFTConfig(output_dir="/tmp"),
    formatting_func=formatting_prompts_func,
    data_collator=collator
)

고급 기법: DPO (Direct Preference Optimization)

DPO는 직접적인 선호 정보를 기반으로 모델을 최적화하는 기법이다. 이는 참조 모델과 비교하여 선호된 응답과 그렇지 않은 응답의 로그 확률 차이를 기반으로 손실을 계산한다.

  • 손실 함수: L_i = -log(σ(β·(r_i^+ - r_i^-))) · (1-λ) - log(1-σ(...)) · λ
  • 평가 지표: 평균 선택 보상, 거절 보상, 보상 정확도, 보상 마진 등
accelerate launch --config-file examples/accelerate_configs/deepspeed_zero3.yaml \
    examples/research_projects/stack_llama_2/scripts/dpo_llama2.py \
    --model_name_or_path="sft/final_checkpoint" \
    --output_dir="dpo"

결론

현대의 대규모 언어 모델은 단순한 크기 경쟁을 넘어, 효율성과 최적화 전략에 초점을 맞추고 있다. 양자화, 적응형 학습, 선호 최적화 등의 기술들은 모델의 실용성과 접근성을 크게 높이며, 앞으로의 연구와 산업 적용에서 핵심 요소로 자리 잡을 것으로 기대된다.

태그: LLM 양자화 GPTQ AWQ GGUF

6월 5일 22:46에 게시됨