본문 바로가기

이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다

스타트업 투자/데이터 + 테크

패스트캠퍼스 환급챌린지 33일차 : 양자화와 QLoRA 튜닝 강의 후기

by Sungwook Choi 2025. 5. 3.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

*_1. 학습 인증샷 4장 이상 포함
*_① 오늘자 날짜, 공부 시작 시각 포함 사진 1장

② 오늘자 날짜, 공부 종료 시각 포함 사진 1장

③ 1개 클립 수강 인증 사진 (강의장 목록 캡쳐, 강의 내용이 담긴 수강화면이 보이지 않도록) 1장

④ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)

2. 학습 후기 700자 이상 (공백 제외)

양자화와 정확도 손실

  • 원래 32비트 (또는 16비트)로 표현되던 가중치를 4비트, 8비트로 바꾸면,, 세밀한 수치가 반올림되거나 범위 제한을 받음

양자화의 선택 기준

  • 성능 vs 메모리 트레이드오프
    • 문제의 복잡성과 가용 자원에 따라 최적의 양자화 레벨이 달라짐
    • 양자화 수준 (8비트 vs. 4비트)을 문제 종류에 맞게 결정해야 함
    • 실제 테스트를 통해 “어느정도 손실을 감수해도 괜찮은지” 확인 후 적용 권장
    • 8비트 : 대부분 일반적인 작업에 적합한 균형점
    • 4비트 : 메모리 제약이 심각하고 일정수준의 성능 감소를 감수할 수 있을 때

가중치라는 표현

  • AI 모델 내부
    • AI 모델은 수십억 개의 “가중치”라는 숫자들로 구성됨
    • AI 모델은 수많은 행렬로 구성되어져 있는데 각 행렬 안의 숫자들을 의미 (파라미터, 가중치라 불림)
    • 이 숫자들이 AI모델의 “지식”을 담고 있음
    • AI 모델에서의 각 숫자는 보통 32비트나 16비트로 저장됨

양자화 적용 방식

  • 8비트 : 각 숫자는 256가지 값 중 하나만 가질 수 있음
  • 4비트 : 각 숫자는 16가지 값 중 하나만 가질 수 있음
  • 실제 과정
    • AI 모델에 있는 모든 가중치 숫자들의 값의 범위 파악 (예 : -2에서 +2)
    • 이 범위를 비트 수에 따라 나눔 (4비트면 16구간)
    • 각 원래 가중치 값을 가장 가까운 구간 값으로 변환
    • 저장할 때는 값 자체가 아닌 구간 번호만 저장 (4비트면 이제 16개의 값만 가질 수 있음)

가중치 분포

  • 모델 내 가중치들이 실제로 어떤 범위와 분포 (예: -2~+2)에 몰려 있는지
  • 실제로는 가중치가 특정 범위 (예: -1.5~+1.5)에 집중되는 경우가 많음
  • 단순 균등 분할보다는 가중치가 몰린 구간을 세분화하는 방식을 사용 (분포고려)

NF4

  • 양자화할 때 가중치 분포에 맞춰 정밀도 할당을 최적화
  • 동일한 4비트 양자화라도 더 나은 성능 유지 가능 (성능 손실 최소화)
  • 일상생활 비유 : 버스 좌석 배치
    • 출퇴근 시간대에는 사람이 많은 역 주변에 버스 정류장을 더 촘촘히 배치하고, 사람이 적은 외곽에는 정류장 간격을 더 넓게 하는 것과 비슷한 원리

양자화를 통한 크기 감소

  • 16비트 -> 50% 감소 -> 1.2-1.5x
  • 8비트 -> 75% 감소 -> 1.5-2x
  • 4비트 -> 87.5% 감소 -> 2-3x

QLoRA

  • LoRA와 양자화를 함께 쓰면(=QLoRA), 큰 모델을 4비트로 줄이고, 필요한 부분만 LoRA로 학습 -> 훨씬 적은 자원으로 튜닝 가능
  • 독립적 사용 시
    • 양자화 : 메모리 절약, 정확도 감소
    • LoRA : 효율적 학습, 원본 모델 크기 제약
  • 결합 사용 시 (QLoRA)
    • 4비트 모델 + LoRA 어댑터
    • 크기와 학습 효율성 모두 개선
    • 24GB 그래픽카드로도 70B 모델 튜닝 가능
  • 양자화된 기본 모델 : 기본 AI 모델을 4비트로 양자화하여 크기 축소 및 메모리 요구량 8배 감소
  • 효율적인 학습: 축소된 모델에 LoRA기법 적용

NF4 양자화와 LoRA의 결합

  • NF4와 LoRA를 함께 사용하면, 4비트 양자화에 따른 오차를 LoRA 단계에서 보정 가능
  • AI 모델에 최적화된 4비트 형식
  • 일반적인 4비트 보다 AI모델에 더 적합한 특별한 형식
  • AI 모델의 숫자들이 주로 따르는 분포에 맞게 설계됨

일반 4비트 양자화 : 균등분할 (예: -2.0 ~ +2.0구간을 16단계로 등분)

NF4 (NormalFloat 4): 모델 가중치의 분포 (대체로 평균 근처에 몰림)를 고려해 구간을 배분

  • 작은 영역에서는 더 세밀하게, 극단값 영역은 상대적으로 크게 분할

이중 양자화

  • 양자화에 필요한 정보도 추가로 압축. 즉, 양자화 자체에 필요한 상수들도 추가로 양자화
  • 기본 양자화로 가중치가 이미 압축되었더라도, (실제 계산 시 종종 복원이 필요) 복원에 필요한 스케일이나 제로포인트 등의 보정 값은 보통 높은 정밀도로 저장됨
  • 이 값들이 전체 메모리 사용량에 상당한 영향을 줄 수 있는데, 이를 개선하기 위해 이들 보정 값 역시 낮은 비트(예: 4비트, 8비트)로 다시 양자화 함

url : https://abit.ly/lisbva

댓글