Generation for NLP: Fine-Tuning Data

SeongGyun Hong·2024년 11월 12일

NaverBoostCamp

목록 보기
28/64

1. Fine-Tuning Data

Pre-Training으로 일반학습을 하였다면
도메인 특화 또는 특정 Task 수행을 위해서는 Fine-Tuning 데이터셋이 필요하다.

  • BERT의 경우에 Pre-train을 MLM으로 진행하고 이후 Fine-Tuning의 경우에 분류 작업을 시켜주는 등을 진행했다면
  • CLM과 같은 언어모델의 경우에는 Instruction-Tuning을 활용하여 Fine-Tuning시켜준다.

MRC 데이터셋만 보더라도 인코더 모델의 경우에는 Span 을 통해 예측을 진행하지만, Decoder 모델의 경우에는 Text-Generation을 통해 학습을 진행해야 하므로 label에 span정보가 아닌 Text 가 바로 적혀있다.

2. Instruction Fine Tuning 유행

  • LLaMA의 Self-Instruct 연구 이후에 Instruction Tuning을 위한 dataset이 급격하게 증가함.

Self-Instruction dataset

  • 공개된 데이터셋에서 Instruction Dataset을 만드는 Frame work
  1. 사람이 하나 하나 질문-답변(QA)을 만들고 이를 Seed-Dataset으로 설정
  2. 기존 GPT 등의 생성형 모델들에게 In-Context Learning으로 Few-shot을 Seed-dataset을 활용하여 주어 새로운 QA를 생성함
  3. 만들어진 새로운 QA데이터셋에 대해서 데이터 필터링을 진행

위와 같은 방식으로 Self-Instruction Dataset을 만듦

Stanford Alpaca

  • 최대한 분포가 겹치지 않도록 중복이 없는 인스트럭션 데이터셋을 만들기 위해 노력함
  • 175개의 seed dataset을 활용하여 Self-Instruction을 통해 instruction을 생성하여(text-davinch-003) 52000개의 QA데이터 셋을 만들고
  • 해당 데이터셋으로 Llama 2 7B에 대하여 학습 진행 - 3 epochs
  • OpenAI text-davinch-003 기준으로 이게 총 500 달러 미만 듦 ;;;
  • 겨우 50만원 수준으로 우리가 데이터셋을 만들 수 있구나..!

    KoAlpaca의 경우 Alpaca Dataset 52k에 대해서 번역(DeepL API)을 진행하여 사용했음
    다만 이때 Instruct 만 번역하고
    생성 같은 경우에는 GPT-3.5 turbo API를 사용하여 생성함. 왜냐하면 Answer는 더 좋은 모델로 답변할 수 있기 때문

Tips

  • OpenAI Batch API
  • Lite LLM
  • Anthropic Prompt Engineering Guide
profile
헤매는 만큼 자기 땅이다.

0개의 댓글