1. 파인튜닝 기법
1.1 Full Fine-Tuing
모델 전체 파라미터를 다시 학습시키는 것. 그러나 대규모 모델의 경우 10B를 넘는 파라미터를 가지고 있으므로, FP16으로 데이터를 간소화해도 1000GB가 넘는 GPU가 필요하다. 이를 해결하기 위해 DeepSpeed ZeRO 기법이 제안되었다.
DeepSpeed ZeRO(Zero Redundancy Optimizer)
대규모 모델을 단일 또는 소수의 GPU에서 학습할 수 있게 해주는 메모리 분산 기법. 옵티마이저 상태, 그래디언트, 파라미터의 세 가지를 각 GPU마다 나눠갖도록 하는 것이 기본 아이디어이다.
-
Stage 1 (옵티마이저 상태 분산)
각 GPU가 전체 파라미터에 대한 옵티마이저 내부 상태(Adam의 모멘텀, 학습률 히스토리 등) 중 일부만을 나누어 저장.
-
Stage 2 (그래디언트 분산)
역전파가 진행된 후 계산된 그래디언트도 GPU들이 나누어 저장.
-
Stage 3 (파라미터 분산)
모델의 파라미터도 GPU들이 나눠서 저장. 순전파, 역전파 시에도 필요한 조각만을 모아서 연산하고, 끝나면 다시 GPU에 분산시킴.
해당 기법을 통해 65B의 파라미터를 가지는 대규모 LLM을 학습시키기 위해 1000GB가 넘는 GPU를 사용할 필요가 없이, 범용 GPU 8대에 나누어ㅓ 스테이지 3까지 적용할 경우 1/8 수준의 메모리 풋프린트로 줄어든다.
1.2 효율적인 파인튜닝 기법 (PEFT)
(1) Prompt Tuning
- 사전학습 된 파라미터는 고정하고, 입력 데이터에 대한 임베딩 레이어의 일부만을 학습함. 수천개 수준의 파라미터 업데이트만 업데이트 하므로 연산량이 매우 작지만, 복잡한 태스크의 경우 성능에 한계가 있음.
(2) Prefix Tuning
- 단어 토큰 앞에 모델이 도메인에 대한 지식을 학습할 수 있는 여분의 토큰을 붙여 임베딩하는 방식. 그러나 해당 prefix의 위치 및 길이 설계가 모델에 큰 영향을 미침.
(3) Adapters
- 트랜스포머 블록 사이의 소규모 어댑터 레이어를 삽입한 후 이들만 학습. 해당 모듈들은 작은 MLP이므로 연산량의 증폭을 야기하지는 않으나, 모델 구조를 변경해야 한다는 번거로움이 있음.
(4) LoRA (Low-Rank Adaptation)
- 사전학습된 모델 파라미터 W는 고정한 채, 그 파라미터에 더해질 변화분(residual) ΔW을 학습시킨다. 이 때 ΔW를
ΔW=AB 와 같이 랭크(r)가 작은 두 매트릭스 A∈Rd×r, B∈Rr×d의 곱으로 파라미터 분리한다.
- 여기서 r≪d이므로, 업데이트할 파라미터 수가 원본의 O(d2)에서 O(dr)로 크게 줄어들며, 학습 후에는 ΔW를 원본 W에 더해 사용하므로 모델 구조 수정 없이 효율적으로 업데이트 가능하다.
(5) Q-LoRA
기존의 LoRA 방식에 아래의 기법을 추가로 적용.
- 4비트 양자화: 모델의 가중치를 16 혹은 32비트 대신에 4비트로 양자화. NF4는 정규분포 성질에 최적화된 형식으로, 정보 손실을 최소화할 수 있다.
- GPU 메모리 페이징: LoRA의 보정 행렬 A, B의 그래디언트 값 등의 정보를 필요할 때만 GPU에 놓고 나머지는 CPU 메모리로 덤프, 로드하여 Out-Of-Memory를 회피한다.
(6) BitFit
- 모든 가중치(weight)는 동결시키고 편향(bias) 파라미터만을 업데이트하는 방법으로, 가장 작은 파인튜닝 비용으로 일부 태스크에서 의미있는 성능 향상을 보인다.
1.3 인스트럭션 튜닝(Instruction Tuning)
(1) 개요
사전학습된 LLM이 사용자의 지시에 더 잘 따르도록 튜닝하는 것으로, 아래와 같은 훈련 시퀀스를 따른다.
-
프롬프트(X)와 응답(Y)의 쌍을 준비.
-
컨텍스트로 X를 주고, 그 뒤에 Y 전체 혹은 일부를 teacher forcing 방식으로 이어붙여 모델에 입력. 여기서 teacher forcing은 순차적으로 단어를 예측할 때, 모델이 이전에 생성한 토큰 대신 정답 토큰을 입력으로 주어 학습시키는 방법을 의미한다.
-
모델이 X로부터 다음에 올 토큰을 차례로 예측한 결과와 실제 Y의 토큰을 비교하며 Cross-Entropy Loss를 계산.
-
이 손실을 최소화 하도록 앞서 소개한 다양한 PEFT 기법을 적용해 파라미터를 업데이트.
(2) Instruction Dataset의 구성 원칙
1. 태스크 수
다양한 태스크의 예시를 많이 포함할수록, 학습된 모델이 여러 유형의 요청을 처리하는 범용성이 높아진다.
2. 태스크 다양성
단순히 태스크 개수만 많은 것이 아니라, 추론, 분류, 코드 작성, 요약, 질의응답 등 서로 다른 범주의 태스크를 많이 포함할수록 그 적응력이 좋아진다.
(3) 적용된 모델의 예시
InstructGPT/ChatGPT
데이터 설계
1. 실제 사용자들이 입력한 프롬프트와 모델이 도출한 응답을 가공
2. 프롬프트에 대한 답변의 적절성에 대해 평가자가 긍정적으로 평가한 쌍을 수집
학습 파이프라인
1. 사전학습: 대규모 코퍼스로 비지도 학습
2. Supervised Fine-Tuning: 데이터 설계를 통해 긍정적인 평가를 받은 데이터로 파인튜닝
3. Reinforcement Learning from Human Feedback: 동일한 프롬프트에 대해 여러 답변을 낸 후, 사용자가 좋다고 판단한 답변에 대해 보상 훈련 진행
FLAN-T5 / T0
데이터 설계
1. 질의응답, 분류, 요약, 번역 등의 학술 데이터셋을 섞어 사용
2. 각 데이터셋에 '이 태스크는 무엇인가'에 대한 설명 프롬프트를 붙이고, 입력값(문장이나 문서)과 정답(문장에 대한 레이블이나 문서에 대한 요약)을 준비
학습 파이프라인
1. 사전학습: 대규모 코퍼스로 비지도 학습
2. Instruction Fine-Tuing: "프롬프트+입력값 → 정답" 쌍을 Next-Token Prediction 손실로 추가 학습
3. 이후 제로샷/퓨샷 설정에서 새로운 태스크의 답변에 대한 일반화 성능을 확인
1.4 고급 인스트럭션 튜닝
(1) Self-Instruct 프레임워크
Self-Instruct (Self-Generated Instruction Tuning)은 사람이 일일이 쓰지 않아도, 이미 학습된 언어 모델 자신의 출력을 이용해 대규모 지시문(Instruction) + 입출력 쌍을 반복적으로 생성·정제·확장하는 방법이다.
-
Seed Task Pool: 200명 남짓의 사람이 만든 지시문과 예시 데이터를 준비.
-
Instruction Generation: 기존 Seed를 입력으로 줘 “새로운 지시문(instruction)”을 모델에게 생성하게 함.
-
Instance Generation: 생성된 지시문을 기반으로, 같은 모델이 “입력→출력” 예시(input-output)까지 동시 생성.
-
Filtering: 단순 중복, 불완전·비논리적 예시를 자동 휴리스틱(길이·문법·유사도 기준)으로 걸러냄.
-
Expansion: 새로 걸러진 지시문·예시를 Seed Pool에 다시 추가하여, 1–4 과정을 여러 번 반복.
-
Fine-Tuning: 종적으로 수십만 건(예: 52K 지시문·82K 예시)를 모아, 원모델(GPT-3)에 Instruction Tuning 실시.
이 과정을 거치면 인간의 라벨링 없이도 모델의 제료샷, 퓨샷 일반화 성능을 끌어올릴 수 있다.
(2) Knowledge Distillation
고성능 모델이 생성한 (instruction, input, output) 쌍의 데이터셋을 모델에 학습시키는 방법.
장점
- 인간의 레이블링 없이 수십만건의 학습 데이터 생성
- AI가 생성한 데이터이므로 일관된 포맷을 지님
단점
- 고성능 모델이 잘못된 응답을 만들 경우 이를 그대로 학습
- 모델이 답변하지 못한 생소한 태스크에 대해서는 모델 학습이 불가능
예시 모델
- 알파카: 기존의 52K 지시문 대신에 5K의 정제된 데이터셋 사용. LLaMA(7B)를 알파카 데이터셋으로 파인튜닝 했을 때 GPT-3.5 수준의 지시 수행 능력 달성.
- 비쿠나: ChatGPT와 나눈 70K의 대화를 선정. LLaMA를 파인튜닝 하여 대화체 등에 강한 챗봇 성능 확보.
- LIMA: 모델이 방대한 데이터를 통한 사전학습으로 대부분의 지식을 습득했다는 가정으로 1000개 정도의 고품질 지시문만을 학습 데이터로 사용. 이후 학습된 모델이 내놓은 답변들 중 좋은 답변만을 강화학습함.
1.5 RLHF (Reinforcement Learning from Human Feedback)
(1) 인스트럭션 튜닝의 한계
- 주어진 입력에 대해 하나의 정답만을 크로스 엔트로피 함수 기반의 NTP (Next-Token Prediction) 방식으로 학습하는 것은 고정된 최대 우도를 목표로 하는 행동복제 방식이다.
- 모델이 '2+3'의 값은 명확히 맞출 수 있지만, '로지스틱 회귀를 파이썬으로 구현하는 법', '아이가 좋아하는 옛날이야기를 창작하는 법' 등 여러 답변이 필요한 태스크에선 해당 방법이 오히려 성능 저하를 야기한다. 따라서 실제 사람들의 피드백이 모델에 반영되어야 한다.
(2) RLHF의 파이프라인
-
1단계: 사전학습된 LLM을 인스트럭션 튜닝한다. 이 때는 teacher-forcing 방식의 하나의 답만을 모델이 학습한다.
-
2단계: 동일한 프롬프트에 대한 여러 응답을 생성하고, 인간이 어느 쪽의 답변이 더 나은지에 대한 순위 데이터를 수집한다. 이후 해당 순위 데이터를 모델에 학습시킨다. 이 때, 사람들간의 답변 선택에 대한 동의율이 75% 정도로 높지 않으므로 과적합 방지를 위해 1 epoch만을 학습한다.
-
3단계: Policy Gradient 알고리즘을 사용해 모델이 보상에 대한 점수를 최대화할 수 있도록 파라미터를 업데이트 한다.
(3) RLHF의 장단점
장점:
- 보상 함수를 학습할 수 있으므로, 여러 답변이 가능한 추상적인 행동을 지도할 수 있으며, 모델의 출력 스타일 등을 직접 개선할 수 있다.
단점:
-
어휘의 크기가 수만개인 LLM은 하나의 피드백으로 모든 단어에 대한 확률을 조정해야 하므로, 경사 추정치가 매우 높은 분산을 가지게 된다. 이로 인해 그래디언트 업데이트시 진동 또는 발산 현상이 발생하기 쉽다.
-
모델이 보상 함수의 취약점을 학습해 사람이 좋아할만한 행동이 아닌, 보상 점수를 최대화하는 비인간적 패턴을 학습할 수 있다.
(4) RLHF의 학습 안정화 전략
-
KL-penalty: 원본 정책과 새 정책의 KL-divergence를 정규화 항으로 추가해, 정책 변화량을 제한.
-
Reward Normalization: 보상 모델 출력의 분포(평균·분산)를 정규화해, 극단적 보상이 학습을 흔들지 않도록 조정.
-
낮은 학습률(Low Learning Rate): Policy Gradient 업데이트 크기를 작게 유지해, 진동을 줄이고 안정적 수렴 유도.
-
향상된 RL 기법 사용: REINFORCE 대신 PPO, TRPO(Trust Region Policy Optimization) 등 클리핑·트러스트 리전 개념이 도입된 알고리즘 활용.
-
보상 모델 앙상블(Ensemble Reward Models): 여러 개의 보상 모델을 평균화하여 과적합·보상 해킹 가능성을 낮추고, 더 견고한 신호 확보.
1.6 진보된 RLHF 기법
(1) PPO
Policy Gradient 계열 알고리즘은 강화학습(RL) 에서 에이전트의 정책(policy) 파라미터 θ를 직접 최적화하는 방법으로, 그중 하나인 Proximal Policy Optimization (PPO) 는 다음과 같은 특징을 가진다.
-
목표 함수(Clipped Objective)
LPPO(θ)=Et[min(rt(θ)A^t,clip(rt(θ),1−ϵ,1+ϵ)A^t)]
- rt(θ)=πθold(at∣st)πθ(at∣st) 는 새 정책과 이전 정책의 확률 비율.
- A^t는 어드밴티지(advantage) 추정치, ϵ은 작은 클리핑 상수.
- 클리핑을 통해 정책 업데이트가 지나치게 크게 이동하지 않도록 제한해, 학습 안정성을 높인다.
-
가치 함수(Value Function) 및 이중 네트워크
- 일반적으로 정책(policy)과 가치 함수(value)를 분리된 네트워크 혹은 공유 네트워크로 학습해 안정적 수렴을 돕는다.
-
경사 업데이트
- 미니배치 샘플을 사용해 확률적 경사하강법으로 LPPO를 최적화하며, KL-divergence 기준 및 클리핑이 업데이트 크기를 조절한다.
이 방식은 전통적 REINFORCE보다 진동이 적고, 샘플 효율도 개선된 기법이다.
(2) Direct Preference Optimization (DPO)
- 보상 모델 없이, 사람 간 쌍별 선호(pairwise preferences) 데이터만으로 정책을 직접 최적화하는 방법이다.
- 선호 데이터 (x,y1≻y2)에 대해, 정책이 y1을 y2보다 더 높은 확률로 생성하도록 하는 특수한 손실을 사용해, 중간 보상 함수 없이 안정적 학습을 이끌어낸다.
(3) Constitutional AI
- 인간이 설계한 헌법(constitution) 원칙(“친절해야 한다”, “유해 컨텐츠 금지” 등)을 바탕으로, LLM이 스스로 답변을 비판(critique) 및 수정(revision) 하는 루프를 거친다.
- 절차:
- SFT+RLHF 모델 준비
- 전문가가 정의한 헌법 문구 수립
- 모델이 생성한 답변을 헌법 기준으로 평가(critique) → 수정(revision)
- 수정된 답변을 Supervised Learning으로 재학습
- 필요시 RLAIF(Preference 기반 RL) 반복
- 이로써 외부 라벨 없이도 안전성·정합성이 크게 강화된다.
2. 파인튜닝 모델의 실제 태스크 적용
2.1 Closed-book QA
- 정의: 외부에 전달받은 코퍼스 없이 모델 내에 암기된 정보만으로 질문에 답함.
- 데이터 전처리:
- 질문과 정답 쌍을 추출
- 각각의 텍스트를 토크나이즈 하여 임베딩
- 평가 지표:
- Accuracy: 정답 토큰이 모델 출력에 포함되가?
2.2 Open-book QA
- 정의: 특정 문서나 위키 백과 같은 컨텍스트(context)를 제공하고, 그 안에서 질문에 답함.
- 데이터 전처리:
- 긴 문서를 문단 단위로 잘라 모델 입력 최대 길이에 맞춤
- (질문, 문서 청크) 페어를 구성해 임베딩
- 평가 지표:
- Exact Match (EM): 모델 답변이 정답과 철자·구조까지 완전히 일치하는 비율
- F1 Score: 예측 토큰과 정답 토큰의 중복 정도에 대한 F1 스코어를 계산
2.3 코드 생성 (Code Generation)
- 정의: 자연어 명령문을 입력받아 파이썬 등 특정 언어의 코드를 생성
- 데이터 전처리:
- 자연어 설명과 코드 쌍을 정렬
- 들여쓰기, 특수문자 등을 보존하기 위해 기존의 BPE 토크나이저를 수정
- 주석 제거 혹은 보존 여부 선택
- 평가 지표:
- Pass@k: k개의 샘플 중 하나라도 테스트 케이스를 모두 통과하는 비율 (HumanEval 등)
- BLEU: 생성 코드와 레퍼런스 코드의 n-gram 일치도 (보조 지표)
2.4 요약 (Summarization)
- 정의: 긴 문서를 입력받아 핵심 내용을 압축한 요약문 생성
- 데이터 전처리:
- 문장 분리(sentence splitting) 후 길이 제어
- 중복 문장 제거, 핵심 단어 토큰화
- 긴 문서는 sliding-window 방식으로 잘라 각 조각별 요약 생성 후 병합
- 평가 지표:
- ROUGE (R-1, R-2, ROUGE-L): 생성 요약과 레퍼런스 요약 간 n-gram 및 LCS (Longest Common Subsequence) 일치도
2.5 BIG-bench (범용 벤치마크)
- 정의: 60개 이상의 다채로운 NLP 태스크(추론, 수리, 비유적 언어 등)로 구성된 종합 벤치마크
- 데이터 전처리:
- 태스크마다 고유 포맷 유지
- 제로샷·퓨샷 프롬프트 템플릿 적용
- 평가 지표:
- Task-specific metrics (accuracy, F1, exact match 등)를 태스크별로 조합해 평균 성능 보고
- Overall Score: 단순 평균 혹은 가중 평균
2.6 VQA (Visual Question Answering)
- 정의: 이미지와 자연어 질문을 입력받아, 이미지 내용 기반으로 답변을 생성
- 데이터 전처리:
- 이미지 리사이즈 & 정규화
- 질문 토크나이즈
- (이미지, 질문) 쌍 맞춤
- 평가 지표:
- Accuracy: 예측 답변이 정답 세트(다수의 인간 레이블) 내 포함 비율
2.7 이미지 캡셔닝 (Image Captioning)
- 정의: 이미지 내용을 설명하는 자연어 문장 생성
- 데이터 전처리:
- 이미지 리사이즈 & 전처리 (Center-crop, normalization)
- 캡션 문장 토크나이즈 & 길이 클리핑
- 평가 지표:
- BLEU, CIDEr, METEOR, SPICE: n-gram 일치, 의미 기반 평가 등 복수 지표로 성능 종합
2.8 멀티모달(텍스트+이미지) 태스크
BLIP (Bootstrapping Language–Image Pre-training)
- 모델: ViT 기반 이미지 인코더 + Transformer 디코더
- 파인튜닝:
- Captioning: COCO Captions 데이터로 디코더만 LoRA 기법 적용
- VQA: 새로 설계된 어댑터 삽입 후 LoRA 기법 적용
- 성과: 소량의 파라미터 업데이트만으로도, Full fine-tuning 대비 90% 이상 성능 달성
LLaVA (Large Language and Vision Assistant)
- 모델: LLaMA 텍스트 LLM + CLIP 비전 인코더
- 파인튜닝:
- 이미지가 포함된 158K 개의 인간 대화 데이터로 instruction tuning
- Cross-attention 블록에 LoRA 적용
- 성과: ChatGPT 수준의 이미지 기반 대화능력 확보
이처럼, 텍스트 기반 PEFT 기법을 멀티모달 어댑터 설계와 결합하면, 대규모 파인튜닝 없이도 이미지+텍스트 태스크에 효과적으로 적용할 수 있다.