튼튼발자 개발 성장기🏋️

LoRA, QLoRA, SFT, DPO, vLLM, 멀티 LoRA 서빙 본문

AI/LLM 서비스 개발

LoRA, QLoRA, SFT, DPO, vLLM, 멀티 LoRA 서빙

시뻘건 튼튼발자 2026. 3. 31. 13:56
반응형

사전 학습된 거대 언어 모델(LLM)을 실무에 적용하려면 파인 튜닝(Fine-tuning)이 필수다. 하지만 수백억 개의 파라미터를 가진 모델을 어떻게 효율적으로 학습하고, 서빙할 것인가? 이 글에서는 LoRA, QLoRA, SFT, DPO의 핵심 원리부터 vLLM 기반의 멀티 LoRA 서빙 전략까지 알아보자.

1. 사전 학습(Pre-training)과 파인 튜닝(Fine-tuning)

LLM의 탄생은 크게 두 단계로 나뉜다. 방대한 데이터로 언어 능력을 형성하는 사전 학습과, 특정 목적에 맞게 추가 조정하는 파인 튜닝이다.

사전 학습 (Pre-training)

정의: 대규모 텍스트 데이터로 초기 모델을 학습하여 언어 이해 능력을 형성하는 과정

목적:

  • 텍스트의 패턴, 구조, 의미를 학습하여 기본 언어 능력 획득
  • 다양한 다운스트림 태스크에 활용 가능한 범용 언어 지식 습득

특징:

  • 레이블 없는 방대한 데이터 사용 (웹 텍스트, 책, 논문 등)
  • 자기지도학습(Self-supervised) 방식으로 진행
  • 수백~수천 GPU로 수주~수개월 학습

파인 튜닝 (Fine-tuning)

정의: 사전 학습된 모델을 특정 작업이나 도메인에 맞게 추가 조정하는 과정

목적:

  • 번역, 요약, 질의응답 등 구체적인 태스크에 최적화
  • 의료, 법률, 금융 등 특정 도메인 성능 향상

특징:

  • 상대적으로 적은 레이블 데이터 사용 (수천~수만 예시)
  • 원본 모델의 지식을 유지하면서 새로운 능력 추가
  • 계산 비용이 사전 학습보다 훨씬 적음 (수 시간~수일)

자기지도학습(Self-supervised Learning)과 다음 단어 예측

핵심 개념

  • 자기지도학습: 레이블 없이 데이터 자체에서 레이블을 스스로 정의하여 학습하는 방식
  • 다음 단어 예측: 자기지도학습의 구체적인 구현 방식. 주어진 문맥(이전 단어들)을 바탕으로 다음 단어를 예측하는 방법
  • GPT, LLaMA, Qwen 등 현대 LLM의 대부분이 이 방식으로 사전 학습됨
  • 마치 '독서'를 하듯이 이전 문맥을 바탕으로 다음 단어를 맞추는 학습 진행
규모: LLaMA 3는 약 15T(15조) 토큰으로 학습 — LLaMA 2 대비 7배 증가. 최신 LLM들은 조(Trillion) 단위의 토큰, 다국어 데이터(LLaMA 3의 경우 30개 이상의 비영어권 언어 5% 이상)를 포함한 다양한 소스(웹, 책, 논문, 코드)로 사전 학습된다.

2. LoRA 튜닝: 효율적인 파인 튜닝의 핵심

풀 파인 튜닝(Full Fine-tuning)의 한계

현대 LLM은 수십~수천억 개의 파라미터를 보유한다. GPT-3은 175B, LLaMA-3는 70B, Qwen-2.5는 72B에 달한다. 이 모든 파라미터를 업데이트하는 풀 파인 튜닝은 현실적으로 매우 부담스럽다.

메모리 문제

LLaMA-3 70B 모델만 해도 16비트 기준 140GB 이상의 메모리가 필요하다. 고성능 GPU(NVIDIA A100 등) 여러 대가 필수다.

과적합 위험

소량의 데이터 오류라도 모델 전체를 학습하므로 언제나 모델이 쉽게 망가질 위험이 있다.

특화 모델 비용

N개의 문제에 특화된 모델을 만들면 N개의 거대 언어 모델이 생성된다. GPU 수요도 N배로 증가한다.

LoRA의 원리

LoRA (Low-Rank Adaptation)는 LLM의 기존 가중치 행렬(W)은 전혀 건드리지 않고, 작은 행렬 A와 B만 추가하여 학습하는 방식이다.

풀 파인 튜닝 (기존):
y = Wx

LoRA 튜닝 (변경):
y = Wx + BAx

실제 구현 (스케일링 포함):
y = Wx + (α/r) · BAx

LoRA 핵심 파라미터

  • r (rank/랭크): 저차원 행렬의 차원 수. 작을수록 학습 파라미터 수가 적어진다.
  • α (alpha/알파): LoRA 업데이트의 크기를 조절하는 스케일링 파라미터.
  • α/r: 업데이트의 크기와 학습 안정성에 영향을 미치는 비율. 개발자가 학습 전에 직접 설정.
  • target_modules: LoRA를 적용할 가중치 행렬을 선택. 많을수록 학습 파라미터 증가.

LoRA의 장점

파라미터 효율

학습 파라미터 수 대폭 감소 (전체의 1% 미만도 가능)

메모리 절약

메모리 요구사항 감소 (최대 10배 이상 절약)

원본 모델 보존

원본 LLM 가중치는 전혀 학습되지 않아 보존됨. 어댑터(A, B)를 교체하면서 버전별 사용 가능.

중요: LoRA 학습 후에는 반드시 행렬 A와 B가 기본 모델에 부착된 상태여야만 학습된 것처럼 동작한다. 행렬 A와 B를 분리하면 학습하지 않은 원본 LLM으로 돌아온다.

트랜스포머 아키텍처와 LoRA 적용 대상

트랜스포머 내부에는 크게 셀프 어텐션피드 포워드 네트워크 두 가지 구성 요소가 있다.

구성 요소 역할 핵심 행렬
셀프 어텐션 입력 시퀀스 내 토큰 간의 의미적 관계 파악 (문맥 이해) Query(Q), Key(K), Value(V)
피드 포워드 네트워크 셀프 어텐션 결과를 재조정. 입력 → 확장 → 수축 → 출력으로 표현력 증가 확장/축소 행렬
target_modules 선택 가이드

작고 빠른 튜닝이 목표: 최소한의 핵심 모듈만 타겟으로 (예: q_proj, v_proj)

더 많은 학습을 하려면: 더 넓은 범위의 모듈을 타겟으로 설정 (q, k, v, o, gate, up, down 등 포함)

3. 양자화(Quantization)와 QLoRA

양자화란?

양자화(Quantization)는 정밀한 숫자를 더 단순한 숫자로 바꾸는 과정이다. AI 모델의 크기를 줄여서 더 적은 메모리로 실행 가능하게 만든다.

일상 속 양자화 예시: "현재 온도는 22.7643°C입니다" → "현재 온도는 약 23°C입니다"
정확성은 조금 떨어지지만, 실용적으로는 충분히 사용 가능하다.
32비트

약 43억 가지 숫자 표현 가능
원본 정밀도 유지

16비트

약 6만 5천 가지
학습/추론 일반적 사용

8비트

256가지 값
대부분 작업에 균형점

4비트

16가지 값
메모리 극한 절약

NF4: 모델에 최적화된 4비트 양자화

일반적인 4비트 양자화는 가중치 범위를 균등하게 분할하지만, 실제 AI 모델의 가중치는 특정 범위(예: -1.5~+1.5)에 집중된다. NF4(NormalFloat 4)는 이 분포를 고려해 정밀도를 최적 배분한다.

일반 4비트 양자화

균등 분할 방식

예: -2.0 ~ +2.0 구간을 16단계로 동일하게 등분

가중치가 밀집된 구간의 정밀도가 낮아짐

NF4 양자화

분포 기반 최적화

가중치가 몰린 구간(평균 근처)은 더 세밀하게, 극단값 구간은 크게 분할

동일한 4비트에서도 더 나은 성능 유지

QLoRA: 양자화 + LoRA의 결합

QLoRA의 동작 원리

  1. 기본 모델을 4비트(NF4)로 양자화 → 메모리 요구량 8배 감소
  2. 양자화된 기본 모델에 LoRA 기법 적용 → 작은 행렬 A, B만 16비트로 학습
  3. 이중 양자화(Double Quantization) 적용 → 양자화 보정값(스케일, 제로포인트)도 추가로 압축
QLoRA 주요 설정:
load_in_4bit = True
use_double_quant = True
quant_type = "nf4"
r = 16 # LoRA rank
QLoRA가 혁신적인 이유

70B 수준의 거대 언어 모델도 소비자용 GPU 1~2장으로 파인 튜닝할 수 있게 해준다. 대형 연구소나 기업만 가능했던 LLM 파인 튜닝이 개인 개발자에게도 열린 것이다.

4. SFT와 DPO: 두 가지 학습 전략

SFT (Supervised Fine-Tuning)

지도 학습 방식으로 모델을 미세 조정하는 방법. 주어진 입력(프롬프트)에 대한 정답 또는 모범 응답을 학습시킨다.

장점:

특정 Task 빠른 성능 향상 안정적인 학습

단점:

데이터 편향에 취약 데이터 과의존

적합: 문서 요약, 코드 완성, 질의응답 등 명확한 정답이 있는 태스크

DPO (Direct Preference Optimization)

사용자 선호도를 직접 학습하는 방법. 단순히 정답을 학습하는 것이 아니라, 응답 간의 상대적 비교를 통해 선호하는 응답을 학습한다.

장점:

자연스러운 응답 인간 선호도 반영

단점:

데이터 구축 복잡 비용 높음

적합: 대화 AI 퀄리티 향상, 유해성 감소, 사용자 경험 최적화

SFT와 DPO의 결합 전략

실무에서는 SFT로 1차 학습 후, 만족스럽지 않은 부분을 DPO로 추가 보정하는 방식을 많이 사용한다.

1차: SFT 학습

새로운 태스크에 대한 초기 학습. 구조화된 데이터가 풍부하게 있는 경우. 정확한 응답이 중요한 전문 분야(의학, 법률 등)에 특히 적합.

2차: DPO 보정

대화의 자연스러움과 답변 퀄리티를 높아야 하는 경우. 유해 콘텐츠 감소나 윤리적 응답 강화가 필요할 때. 사용자 만족도 향상이 중요한 서비스에 적용.

실무자를 위한 조언

시작 단계

  • SFT로 기본 기능 구현 후 DPO 적용 검토
  • 모든 학습 실험을 철저히 기록하고 버전 관리
  • 초기 단계에서 소규모 파일럿 테스트 진행

확장 단계

  • 사용자 피드백 수집 메커니즘 구축
  • 지속적인 평가 및 모니터링 시스템 마련
  • 다양한 도메인에 대한 특화 모델 개발

5. 페이지드 어텐션(Paged Attention)과 vLLM

KV 캐시의 필요성과 한계

트랜스포머가 다음 토큰을 생성할 때, 이전 모든 토큰의 Key(K)와 Value(V) 벡터가 필요하다. 매번 재계산하면 토큰이 늘어날수록 연산량이 폭발적으로 증가한다.

어텐션 메커니즘: Q, K, V의 역할

  • Q(Query) 벡터: "무엇을 찾고 있는지"를 나타냄 — 현재 분석 중인 토큰
  • K(Key) 벡터: "무엇을 제공할 수 있는지"를 나타냄 — 비교 대상 토큰들
  • V(Value) 벡터: "실제로 전달하는 정보"를 나타냄
  • 어텐션은 Q와 K의 유사도에 따라 V의 정보를 가중합하여 최종 표현을 생성

KV 캐시는 이미 계산된 이전 토큰들의 K, V 벡터를 저장해두고 재사용하는 기법이다. 추론 속도를 크게 향상시키지만, 문제가 있다.

KV 캐시의 문제점: 시퀀스가 길어질수록 메모리가 선형 증가한다. 1001개의 토큰을 처리 중이라면 1001개의 K, V 벡터가 GPU 메모리에 일렬로 저장된다. 멀티 유저 서비스에서는 사용자마다 별도의 구조가 필요하므로 메모리 사용량이 매우 크다.

Paged Attention: 페이지 단위 메모리 관리

vLLM이 차용한 방식으로, KV 캐시의 저장 방식을 근본적으로 변경한다.

방식 저장 방법 문제점
기존 KV 캐시 모든 이전 토큰의 K, V를 메모리에 일렬로 저장 중간 토큰 제거 불가, 메모리 낭비
페이지드 어텐션 128토큰 단위 "페이지"로 분할 관리, 필요한 페이지만 GPU에 로드 복잡도 증가 (최적화로 해결)
페이지드 어텐션의 장점
  • GPU 메모리 효율성 향상: 필요한 페이지만 로드하여 메모리 사용량 대폭 감소
  • 긴 시퀀스 지원: 메모리 부담을 줄여 훨씬 긴 텍스트 시퀀스 처리 가능
  • 연산 속도 개선: 불필요한 메모리 접근 및 데이터 이동 최소화

6. vLLM과 멀티 LoRA 서빙

LoRA Merge: 어댑터를 기본 모델에 통합하기

LoRA 튜닝 후에는 학습된 어댑터(행렬 A×B)를 기본 모델 가중치(W)에 병합(Merge)해야 한다. 병합 후에는 추론 시 추가 연산 없이 일반 모델처럼 사용할 수 있다.

멀티 LoRA 서빙의 혁신

풀 파인 튜닝

N개의 문제에 특화된 모델을 만들면

= N개의 거대 언어 모델

GPU 메모리: N × 전체 모델 크기

멀티 LoRA 서빙 (vLLM)

기본 모델 1개 + N개의 작은 어댑터

= N개의 특화 모델 효과

GPU 메모리: 기본 모델 1개 + 어댑터들 (매우 작음)

vLLM 멀티 LoRA 서빙의 주요 기능

  • 단일 기본 모델에 여러 어댑터를 동시에 로드
  • 요청별로 다른 어댑터 적용 가능
  • 동적 어댑터 로딩/언로딩 지원
  • GPU 메모리 최적화로 다수의 어댑터 효율적 관리
  • Paged Attention 및 연속 배치 처리로 최적화된 성능 제공

멀티 LoRA 서빙의 개발/배포 이점

빠른 개발 주기

  • 새로운 기능은 어댑터만 학습
  • A/B 테스트: 다양한 어댑터 간 성능 비교 용이
  • 버전 관리: 어댑터 단위로 변경 사항 추적

유연한 서비스 확장

  • 새로운 어댑터 추가로 기능 확장 용이
  • 기본 모델 그대로 유지, 어댑터만 업데이트
  • 빠른 태스크 전환: 어댑터만 교체

다양한 도메인 지원

  • 수학, 법률, 의료 등 분야별 어댑터로 단일 인프라에서 서비스
  • 언어별 어댑터로 다국어 지원 (한국어, 영어, 일본어 등)
  • 원본 지식 보존: 기본 모델의 사전 학습 지식 유지

사전 학습부터 서빙까지, LLM 실무 개발의 흐름을 정리하면 다음과 같다.

단계 기술 핵심 가치
사전 학습 자기지도학습, 다음 단어 예측 범용 언어 능력 획득
효율적 파인 튜닝 LoRA, QLoRA 소자원으로 특화 모델 개발
학습 전략 SFT → DPO 정확한 태스크 수행 + 사용자 선호 반영
고성능 서빙 vLLM + 멀티 LoRA 1개 GPU로 N개의 특화 모델 서빙

결국 LLM 실무의 핵심은 주어진 리소스 안에서 최대의 성능을 끌어내는 것이다. LoRA와 QLoRA로 학습 비용을 낮추고, SFT + DPO로 응답 품질을 높이고, vLLM의 멀티 LoRA 서빙으로 운영 비용을 최소화하는 것이 현재 LLM 엔지니어링의 베스트 프랙티스다.

반응형