헬창 개발자

LLM fine-tunning 본문

공부방

LLM fine-tunning

찬배 2024. 6. 14. 11:17

사전 지식

  • 강화학습
 

딥러닝 (8) - [RL1] 강화학습(Reinforcement Learning)이란?

Writer: Harim Kang 해당 포스팅은 '시작하세요! 텐서플로 2.0 프로그래밍'책의 흐름을 따라가면서, 책 이외에 검색 및 다양한 자료들을 통해 공부하면서 정리한 내용의 포스팅입니다. 해당 내용은 강

davinci-ai.tistory.com

  • GPT 구조
 

GPT (Generative Pre-trained Transformer) 학습시키기

들어가며 오늘은 Generative Pre-trained Transformer (GPT) 의 구조에 대해 자세히 글을 써보려고 한다. 아래의 링크들은 참고하면 좋을만한 사이트들이다. 특히 유튜브 영상은 ETRI 임준호 박사님이 GPT-3에

ainote.tistory.com

  • Transformer 구조
 

[논문리뷰] Transformer (Attention Is All You Need)

해당 글은 wikidocs의 16 - 01 트랜스포머(Transformer)에 대한 글을 정리한 글입니다. 기존 Seq2Seq 모델의 한계Seq2Seq2 모델은 위와 같은 모습을 가진다. 인코더 파트에서는 입력 문장의 모든 단어들을 순

bruders.tistory.com

 

 

트랜스포머(Transformer)와 어텐션 매커니즘(Attention Mechanism)이란 무엇인가?

1. 배경(Background) 2017년에 Attention is All You Need라는 논문이 나온 이후로 어텐션 구조는 최초에 제안되었던 NLP 분야는 물론 Computer Vision 분야와 Time Series 분야까지 다양한 분야에서 적용되고 있습니

velog.io

 

1. PEFT(Parameter-Efficient Fine-Tuning of Billion-Scale Models on Low-Resource Hardware)

PEFT(Parameter-Efficient Fine-Tuning)는 최근 등장한 기술로, GPT, T5, BERT와 같은 대형 언어 모델의 파인튜닝 과정에서 발생하는 문제를 해결하기 위해 개발됨

 

기존의 방식의 문제점인. 모델의 크기가 커짐에 따라 모델 전체를 그래픽카드에서 파인튜닝하는 것이 어려워지고, 많은 비용과 저장 공간이 필요함, 또한 파인튜닝 후의 모델 크기도 사전학습 모델과 비슷하여 관리가 어려움

 

PEFT는 이러한 문제를 해결하기 위해 사전학습된 언어 모델의 대다수 파라미터를 고정시키고 일부 파라미터만을 파인튜닝함으로써 저장 공간과 계산 비용을 크게 줄임. 이 과정에서 발생할 수 있는 catastrophic forgetting 문제도 극복함

 

PEFT는 또한 적은 데이터 환경에서나 도메인 이탈 데이터에서도 더 나은 성능을 보이며, 예를 들어 이미지 분류나 stable diffusion의 dreambooth과 같은 컴퓨터 비전 분야에서도 효과적임

 

또한, PEFT를 사용하면 전체 파인튜닝을 통해 생성되는 대규모 체크포인트 파일과 달리 수 메가바이트 크기의 작은 체크포인트 파일을 얻을 수 있어 저장 공간 관리에도 도움이 됨

 

예를 들어, Hugging Face의 bigscience/mt0-xl은 40GB의 저장 공간을 차지하고 각 다운스트림 데이터 세트에 대해 40GB의 체크포인트 파일이 생성되지만, PEFT를 사용하면 몇 개의 적은 용량을 가진 체크포인트 파일을 사용할 수 있음

 

이렇게 PEFT를 통해 학습된 적은 양의 가중치는 사전학습된 모델의 가장 윗부분에 위치하므로, 기존 모델을 완전히 대체할 필요 없이 작업에 필요한 부분만 추가할 수 있어 유연성이 높음

 

1.1 LoRA(Low-Rank Adaptation)

  • LoRA 논문 리뷰
 

[논문 리뷰] LoRA: Low-Rank Adaptaion of Large Language Models

이 글에서는 2022년 ICLR에서 발표된 논문인 LoRA: Low-Rank Adaptaion of Large Language Models에 대해 간략히 살펴볼 예정이다. 본 논문은 Microsoft로부터 발표되었으며, 논문 링크와 Github 링크는 다음과 같다.

taeyuplab.tistory.com

 

가장 많이 활용되는 방식으로 사전 학습된 모델의 weight들은 고정시킨 뒤, 학습 가능한 rank decomposition matrices를 트랜스포머 각 레이어에 붙여 finetuning시 이들만 업데이트

 

PEFT을 위해 제안되었던 방법은 어댑터(adapters)를 사용

 

여기서 말하는 adapater란 기존에 이미 학습이 완료된 모델(pre-trained model)의 사이사이에 학습 가능한 작은 feed-forward networks를 삽입하는 구조

 

이때 pre-trained model의 weights는 고정해놓고 학습 가능한 작은 feed-forward networks만 아키텍쳐 중간 중간마다 추가함으로써 적은 수의 파라미터로 모델을 튜닝하는 기법

 

그림 1과 같이 fine-tuning시에 pre-trained weights W는 frozen해두고 low rank decomposition된 weights A,B만 학습하고 W에 summation하게 됨

 

Low rank로 decomposition된 weights는 당연하게도 기존 W보다 훨씬 작은 크기의 weight이기 때문에 time, resource cost를 줄일 수 있음

 

또한 pre-trained model을 가지고 있는 상태에서 특정 task에 adaptation하기 위해서 A와B만 storage에 저장하면 되고 다른 task에 adaptation하기 위해 또 다른 A’, B’만 갈아 끼우면 되기 때문에 storage, task switching면에서 매우 효율적

 

추가적으로 inference시에도 fine-tuned model의 latency성능이 낮아지지도 않음

1.2 IA3(Infused Adapter by Inhibiting and Amplifying Inner Activations)

 

  • LoRA와 비슷한 방법으로 적은 파라미터만을 추가해서 모델을 튜닝할 수 있는 기법
  • 뉴럴네트워크의 Inner Activation을 줄이기도하고 늘리기도하는 어댑터를 중간에 삽입하는 방법
  • Self-Attention, Cross-Attention에서의 Key, Value 값을 rescale해주는 벡터와 position-wise feed-forward network의 값에 rescale을 해주는 벡터를 추가해서 모델을 튜닝 해주는 기법

 

2. RLHF(Reinforcement Learning from Human Feedback)

  • Step 1. SFT를 통한 파인튜닝
    잘 정제된 데이터를 사용하여 SFT(Supervised Fine-tuning) 기법으로 레퍼런스 모델을 만듦

  • Step 2. 인간의 피드백을 통한 리워드 모델 학습
    SFT 모델이 여러 개의 출력을 생성, 그리고 사람이 모델의 출력을 보고 어떤 것이 더 좋은지 순위를 매김
    이렇게 사람의 선호가 반영된 데이터를 사용하여 리워드 모델을 학습

  • Step 3. 강화학습 최적화
    레퍼런스 모델(2단계의 SFT 모델)에 입력을 주고 나오는 출력을 이제는 사람 대신 리워드 모델이 평가
    강화학습을 적용하는 과정에서, PPO(Proximal Policy Optimization) 알고리즘을 적용
    이는 보상을 극대화 하는 정책을 유지하지만 너무 리워드 모델쪽에 편향되면 답변의 질이 저하 될 수 있기 때문에 일반화를 위해 레퍼런스 모델의 출력도 유지하도록 조절 하는 기법

  • 레퍼런스
 

ChatGPT에 적용된 RLHF(인간 피드백 기반 강화학습)의 원리

ChatGPT는 주제에 상관없는 대화(개방형 도메인 대화)가 가능한 모델를 위해 특별히 설계된 GPT-3.5(InstructGPT)를 기반한 모델이다. OpenAI는 ChatGPT를 생성하기 위해 2022년 초반에 학습된 GPT-3.5를…

moon-walker.medium.com

 

 

3. DPO(Directly Preference Optimization)

  • DPO 논문 리뷰
 

[Paper] DPO 논문 리뷰

오늘 다뤄볼 논문은 Direct Preference Optimization : Your Language Model is Secretly a Reward Model이다. 최근 LLM에서는 RLHF(Reinforcement Learning with Human Feedback) 방법론을 자주 접목시켜 모델을 학습하는데, DPO는 이 RL

hi-lu.tistory.com

 

 

 

RLHF에서 reward 모델을 설계해야 하는 프로세스 없이, preference data로 최적화 시킬 수 있는 기법

  • 장점:
    • 강화학습을 피하면서 인간의 선호도에 적합하게 최적화 가능
    • 선호하는 답변과 비선호하는 답변 모두 필요
  • RLHF와의 차이점:
    • DPO는 PPO (Proximal Policy Optimization)같이 강화 학습 policy를 사용하지 않고 최적화함
    • RLHF를 수행하기 위해서는 reward 모델을 설계해야 하는 큰 단점이 존재함
  • 훈련 방식:
    • 선호하는 답변의 likelihood를 증가시키고, 비선호하는 likelihood를 감소시키는 방식으로 훈련 진행

 

 

4. Dataset TIP

적절한 Prompt Template 정하기

  • 특정 작업을 수행하기 위해 모델에게 주어지는 입력 양식으로, 이를 적절히 선택하는 것이 매우 중요
  • Alpaca와 같은 툴을 사용하여 사용할 Prompt template을 선정할 때, 훈련된 template이 다른 경우에는 성능 저하가 발생할 수 있음

다양한 Domain Knowledge를 포함한 데이터셋

  • 모델이 일반적인 성능을 향상시키기 위해 다양한 도메인 지식을 가진 시퀀스를 학습시켜야 함
  • 특정 도메인: 특정 목적을 위해 도메인 내의 다양한 지시사항을 포함한 데이터셋을 확보하는 것이 중요

SFT 데이터셋과 DPO 데이터셋의 교점

  • 실험을 통해 발견된 결과에 따르면, SFT 데이터셋이 DPO 데이터셋의 일부를 포함할 때, DPO를 적용한 후 성능이 향상되는 경향이 있음

중복된 데이터셋 제거

  • 유사도 기반: 중복도가 높은 데이터셋을 제거하는 것이 중요
  • 알고리즘 활용: Near-dedup 알고리즘 등을 사용하여 중복을 제거할 수 있음

데이터가 없는 상황에서의 대응

  • 해결책: Text mining과 Teacher Model을 활용하여 데이터셋을 확보해야 함
  • Teacher 모델 선별: 적절한 Teacher 모델 선택이 중요하며, 예를 들어 LLaMA3 70B를 활용하여 LLaMA3 13B를 훈련시킬 수 있음

큰 Teacher 모델을 통해 data를 생성하고, 이 output을 활용하여 데이터 생성

 

 

4.1 DPO 데이터셋 구축 방법

  • 기존 Corpus에서 Text mining을 통해서 SFT 데이터를 생성
  • 다양한 도메인의 corpus에서 단어, 혹은 배열 등을 활용하여 instruct tune data를 생성
  • DPO 데이터셋을 구축하기 위해서, 훈련시킬 모델의 inference 결과는 Reject로, 기존 label은 Chosen으로 하여 DPO dataset을 구성 할 수 있음
Comments