ansir 님의 블로그

[ SK 네트웍스 Family AI 캠프 수업 내용 복습 ] LLM 파인튜닝 2025-05-19 본문

SK 네트웍스 family AI 캠프/수업 내용 복습

[ SK 네트웍스 Family AI 캠프 수업 내용 복습 ] LLM 파인튜닝 2025-05-19

ansir 2025. 5. 20. 01:57

파인 튜닝(Fine-tuning)

정의
파인 튜닝은 사전 학습(pretrained)된 언어 모델(LLM: Large Language Model)을 특정 작업(Task) 또는 도메인(Domain)에 맞게 추가 학습시키는 과정이다. 이미 대량의 일반 데이터로 사전 학습된 모델을 기반으로 하여, 소량의 고품질 데이터만으로도 특정 목적에 맞게 성능을 향상시킬 수 있다.

목적

  • 일반적인 언어 능력을 갖춘 모델에 특정 업무에 특화된 지식이나 응답 스타일을 부여
  • 예: 법률, 의료, 고객 응대, 교육 등 특정 분야에서의 응답 품질 향상

특징

  1. 사전 학습된 모델 사용
    • 이미 대규모 말뭉치로 학습된 언어 모델(GPT, BERT 등)을 기반으로 함
  2. 소량의 도메인 특화 데이터
    • 수천~수만 개 수준의 고품질 데이터로도 효과적
  3. 미세 조정(Minor adjustment)
    • 모델의 전체 또는 일부 파라미터를 업데이트하여, 기존 능력을 유지하면서 특정 작업에 적합하게 조정
  4. 성능 향상
    • 제로샷(zero-shot) 또는 몇샷(few-shot) 학습보다 더 높은 정확도 제공

파인 튜닝의 방식

  • 전체 파인 튜닝 (Full fine-tuning): 모델 전체 파라미터 업데이트 (연산량 많음)
  • 부분 파인 튜닝: 특정 레이어 또는 파라미터만 업데이트
    • 대표적인 기법: LoRA (Low-Rank Adaptation), Adapter Tuning, Prefix Tuning

장점

  • 기존 모델의 능력을 유지하면서, 추가 지식을 효과적으로 반영
  • 비용 대비 성능 효율이 좋음 (소량의 데이터로도 성능 향상 가능)
  • 데이터가 민감하거나 제한적인 경우에 특히 유용

단점

  • 적절하지 않은 데이터나 과도한 튜닝 시 기존 능력 저하(Catastrophic Forgetting) 발생 가능
  • 학습 비용이 전혀 없는 것은 아니며, GPU 자원이 필요

활용 예시

  • 고객 서비스 챗봇: 고객 FAQ와 대화 로그로 파인 튜닝하여 더 정확하고 친절한 응답 생성
  • 의학 분야 LLM: 논문, 임상 지침서를 학습시켜 전문적인 질의응답 제공
  • 코드 생성 모델: 특정 언어/프레임워크에 특화된 코드 생성 모델 구축

파인튜닝 vs. 프롬프트 엔지니어링

항목 프롬프트 엔지니어링 파인튜닝
정의 입력 프롬프트(prompt)를 조정하여 모델의 출력을 유도하는 기법 모델의 가중치를 특정 데이터셋으로 재학습하여 출력 방식을 변경
가중치 변경 변경하지 않음 (모델은 그대로) 변경함 (모델 파라미터 일부 또는 전체 업데이트)
데이터 사용 별도 학습 데이터 없이 즉시 사용 가능 도메인 특화 학습 데이터 필요
학습 비용 없음 (추론만 수행) 있음 (추가 학습 필요, GPU 자원 요구)
응답 제어력 제한적이며 프롬프트의 품질에 의존 강력하며 일관된 성능 제공
예시 기법 Few-shot prompting, Chain of Thought(CoT), Zero-shot prompting 등 Full Fine-Tuning, PEFT (LoRA, QLoRA, Adapter 등)
적합한 상황 빠르게 다양한 작업을 실험하거나 제어할 때 특정 태스크나 도메인에 대해 장기적이고 정밀한 성능이 필요한 경우

프롬프트 엔지니어링 (Prompt Engineering)

  • 설명:
    모델의 구조나 가중치를 변경하지 않고, 단지 "입력 문장"만을 조작하여 원하는 결과를 유도하는 방식이다.
  • 장점:
    • 비용이 들지 않음 (추론만 사용)
    • 다양한 작업을 신속하게 시도 가능
    • 데이터 없이도 성능 확보 가능
  • 한계:
    • 복잡한 태스크에서는 성능이 불안정할 수 있음
    • 제어력이나 일관성이 낮을 수 있음

파인튜닝 (Fine-Tuning)

  • 설명:
    사전학습된 모델의 일부 또는 전체 가중치를 새로운 데이터셋에 맞게 재학습하여 특정 작업에 최적화된 출력을 내도록 조정한다.
  • 종류:
    1. Full Fine-Tuning
      • 모델 전체 가중치를 업데이트
      • 연산량과 메모리 사용량이 큼
    2. PEFT (Parameter-Efficient Fine-Tuning)
      • 일부 파라미터만 조정하여 효율성을 높임
      • 대표 기법:
        • LoRA (Low-Rank Adaptation): 선형 계층의 저랭크 행렬만 학습
        • QLoRA: 양자화된 모델에 LoRA를 적용하여 메모리 효율 극대화
  • 장점:
    • 특정 업무나 도메인에 대해 매우 높은 성능
    • 일관되고 제어된 응답 가능
  • 단점:
    • GPU 자원, 시간, 고품질 데이터가 필요
    • 데이터 부족 시 과적합 위험 존재

LoRA (Low-Rank Adaptation) & QLoRA (Quantized LoRA)


1. LoRA (Low-Rank Adaptation)

정의
LoRA는 대형 언어 모델(LLM)의 가중치 행렬을 직접 수정하지 않고, 대신 저랭크(Low-Rank) 행렬을 삽입하여 학습하는 파인튜닝 기법이다.

핵심 아이디어

  • 모델의 가중치 행렬 $W$은 고정
  • 학습 시 $W$에 추가로 곱해지는 두 개의 저랭크 행렬 $A∈{R}^{d \times r}, B∈{R}^{r \times k}$을 도입하여,
    모델 전체 대신 $A$와 $B$만 학습
    (여기서 $r$은 매우 작은 차원 수)

수식 표현
기존 가중치:
$y=Wx$
LoRA 적용 후:
$y= Wx + BAx$
이때 $W$는 고정되고, $A,B$만 업데이트됨

장점

  • 파라미터 수를 대폭 줄여 학습 비용 절감
  • 원본 모델의 성능을 유지하면서 도메인 지식만 주입
  • 파인튜닝된 어댑터 파라미터만 저장 및 배포 가능 (효율적 재사용)

활용 예시

  • LLaMA, GPT, BERT 등 다양한 사전학습 모델에 적용 가능
  • 예: LLaMA-3를 한국어 데이터로 파인튜닝할 때 LoRA 사용 → 고성능 한국어 응답 가능

2. QLoRA (Quantized LoRA)

정의
QLoRA는 LoRA 기법에 모델의 양자화(Quantization)를 적용하여 메모리 효율을 극대화한 방식이다. 모델을 4비트 또는 8비트로 양자화하여 GPU 사용량을 크게 줄인다.

핵심 구조

  • 기존 사전학습 모델: 4비트 또는 8비트 정밀도로 로드 (정적, 학습되지 않음)
  • LoRA 어댑터: FP16 또는 BF16으로 학습 (정확도 유지)
  • 전체 학습: 저비용 GPU 환경에서도 가능

장점

  • 저사양 GPU에서도 대형 모델 파인튜닝 가능
  • 기존 LoRA보다 RAM/VRAM 사용량 절감
  • 퍼포먼스 저하 없이 효율성 극대화

예시 환경

  • RTX 3090 또는 A100 한 장으로 LLaMA 7B, 13B, 심지어 65B 모델도 QLoRA로 파인튜닝 가능

LoRA vs. QLoRA 요약 비교

항목 LoRA QLoRA
기본 아이디어 저랭크 행렬을 추가 학습 저랭크 행렬 + 모델 양자화
메모리 효율성 중간 매우 높음
성능 원본 모델 수준 유지 거의 동일 (정밀도 보존)
하드웨어 요구 중급 이상 GPU 상대적으로 저사양 GPU도 가능
저장 용량 어댑터 파라미터만 저장 어댑터만 저장 (기본 모델은 양자화)
반응형