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
- 사람이 하나 하나 질문-답변(QA)을 만들고 이를 Seed-Dataset으로 설정
- 기존 GPT 등의 생성형 모델들에게 In-Context Learning으로 Few-shot을 Seed-dataset을 활용하여 주어 새로운 QA를 생성함
- 만들어진 새로운 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