본문 바로가기

SK네트웍스 Family AI캠프 10기/Daily 회고

57일차. Fine Tuning - PPO & DPO & LLM 프로젝트

더보기

 

57일 차 회고.

 

 어제 빅데이터분석기사 기본서를 다 보고 기출문제 풀이에 들어갔다. 그런데 빅데이터분석기사 생긴 지 별로 안 됐기 때문에 기출문제만 푸는 걸로는 시험을 보기에 부족하다고 해서 내가 공부한 내용을 확인하는 방식으로 풀려고 한다.

 

 

 

 

1. PPO

 

 

1-1. RLHF

 

RLHF(Reinforcement Learning from Human Feedback)

  • 인간 피드백을 활용하여 Agent가 더 나은 정책(Policy)을 학습한다.
  •  강화학습
    • 환경(Environment)과 상호작용하며 상태(State)에 따라 행동(Action)을 선택하고, 그에 따른 보상(Reward)을 기반으로 학습한다.

 

RLHF 학습 프로세스

  • Supervised Fine Tuning
    • 데모 데이터를 수집하여 지도 학습(Supervised Learning) 방식으로 초기 모델을 학습한다.
  • Training a Reward Model
    • 모델이 생성한 여러 개의 응답 또는 행동을 비교하여 더 나은 선택지를 사람이 평가한다.
    • 보상 모델(Reward Model)을 학습한다.
  • Optimize Policy
    • 보상 모델을 활용하여 강화 학습(Reinforcement Learning)을 수행하여 정책(Policy)을 최적화한다.

 

 

1-2. PPO

 

PPO(Proximal Policy Optimization)

  • 강화 학습 알고리즘
    • 인간의 피드백에 근접하도록 보상 모델을 훈련하는 알고리즘
  • 정책(Policy)을 업데이트할 때 너무 큰 변화 없이 점진적으로 최적화한다.
  • RLHF에서 정책 모델을 안정적으로 훈련하는 데 자주 사용된다.

 

PPO 작동 방식

  • Rollout
    • 언어 모델이 문장의 시작이 될 수 있는 쿼리(Query)를 기반으로 응답(Response)을 생성한다.
    • 현재 정책(Policy) 모델이 실행(Rollout)되며, 샘플이 수집된다.
  • Evaluation
    • 쿼리-응답 쌍을 평가하여 스칼라 값(보상, Reward)을 산출한다.
      • 함수 기반 평가
      • 모델 기반 평가
      • 인간 피드백
  • Optimization
    • 쿼리-응답 데이터를 활용하여 모델을 최적화한다.
      • 로그 확률 계산
        • 각 쿼리-응답 쌍에서 토큰의 로그 확률을 계산하여 정책을 업데이트한다.
      • KL-발산
        • 생성된 응답이 기존 참조 모델(Pre-trained Model)에서 너무 멀어지지 않도록 KL-발산(Kullback-Leibler Divergence)을 추가 보상 신호로 사용한다.
        • 참조 모델에서 크게 벗어날 경우 보상을 낮춰 모델이 지나치게 창의적인 출력을 하지 않도록 제어한다.

 

PPO 구조

  • Actor-Critic 구조
    • Actor Model
      • 토큰 시퀀스(텍스트)를 생성한다.
      • 현재 정책을 따라 행동을 수행하며, 보상을 극대화하도록 업데이트된다.
      • LLM의 역할을 한다.
    • Critic Model
      • Actor Model이 생성한 시퀀스(텍스트)에 대해 보상을 예측한다.
      • 보상 모델(Reward Model)과 유사하게 동작하지만, 강화 학습 내에서 직접 학습된다.
      • 각 행동(응답)에 대한 가치를 평가하여 학습이 올바른 방향으로 진행되도록 돕는다.

 

 

 

2. DPO

 

 

2-1. RLHF

 

RLHF 단점

  • 구조가 복잡하다.
    • RLHF는 총 4개의 모델이 필요하다.
      • Actor Model
      • Reward Model
      • Critic Model
      • Reference Model
  • 학습 안정성 부족
    • Actor Model이 Reward Model과 Critic Model에 의존하여 과적합될 수 있다.
  • 하이퍼파라미터에 매우 민감하기 때문에 튜닝이 어렵다.

 

RLHF 대체 방법론

  • RRHF(Rank Response to Align Language Models with Human Feedback without Tears)
    • 보상 모델 없이 선호 순위(Ranking)만을 활용하여 학습한다.
  • SLiC-HF
    • Contrastive Learning을 활용하여 선호 데이터를 학습한다.

 

 

2-2. DPO

 

DPO(Direct Preference Optimization)

  • 강화 학습 없이도 RLHF의 효과를 얻을 수 있도록 설계된 방법론
    • 보상 모델이 필요없다.
      • 선호 데이터를 직접 활용한다.
    • PPO 없이 Logits만으로 학습이 가능하다.
    • 학습 과정에서 원치 않는 출력을 줄일 수 있다.

 

DPO 학습 프로세스

  • 데이터 수집
    • 사람(Annotator)이 두 개의 모델 응답 중 하나를 선택한다.
  • 확률 계산 및 비율 측정
    • 입력 컨텍스트에서 응답 문장이 생성될 확률을 계산한다.
    • 기존 레퍼런스 모델과 현재 학습 중인 모델의 확률을 비교한다.
  • 최적화
    • 선호 데이터만을 활용하여 Loss Function을 최소화한다.
    • 로그 확률 비율(Log Likelihood Ratio)을 기반으로 학습한다.

 

 

 

3. LLM 프로젝트

 

 

3-1. File Structure

 

LLM_PROJECT
├─ database
│   ├─ db
│   └─ docker-compose.yml
├─ etl
│   ├─ README.md
│   ├─ requirements.txt
│   ├─ test.ipynb
│   └─ youtube.py
├─ training
│   └─ README.md
├─ web
│   ├─ .venv
│   ├─ common
│   │   ├─ database
│   │   │   └─ connector.py
│   │   ├─ display
│   │   │   ├─ constant.py
│   │   │   ├─ history.py
│   │   │   ├─ input.py
│   │   │   ├─ output.py
│   │   │   └─ utils.py
│   │   ├─ model
│   │   │   ├─ groq.py
│   │   │   ├─ ollama.py
│   │   │   ├─ openai.py
│   │   │   ├─ provider_class.py
│   │   │   └─ provider.py
│   │   ├─ service
│   │   │   └─ film_service.py
│   │   └─ pages
│   │       └─ db.py
│   ├─ .env
│   ├─ chatbot.py
│   ├─ requirements.txt
│   └─ test.ipynb
├─ .gitignore
└─ README.md

 

 

3-2. 개발 과정

 

Youtube 크롤링

  • 라이브러리
  • 크롤링 단계
    • 재생목록 크롤링
    • 재생목록 내 동영상 링크 크롤링
    • 동영상 정보 크롤링