2023 성균관대 하계집중 산학협력프로젝트 VAIV
Github : https://github.com/VAIV-2023/RLHF-Korean-Friendly-LLM
GPT 기반의 자연스럽고(Friendly) 윤리적인(Harmless) 일상 대화형 챗봇 모델
과제 목표
GPT-NEOX 기반 자연스럽고 윤리적인 한국어 기반 일상 대화형 챗봇 모델 구현
- Self-Instruct: GPT4를 이용한 데이터 증강
- RLHF(Reinforcement Learning from Human Feedback): 사람의 선호도를 반영한 강화학습
- DeepSpeed: 대규모 분산 딥러닝을 위한 새로운 메모리 최적화 기술
개발 내용
Task 1: 강화학습 단계별 데이터셋 구축
Task 2: SFT 모델 Fine-tuning (https://huggingface.co/Trofish/KULLM-SFT-v2)
Task 3: Reward 모델 ver1,2,3 구현
Task 4: RLHF와 DeepSpeedChat을 통한 최종 모델 구현 (https://huggingface.co/Trofish/KULLM-RLHF)
Task1. 강화학습 단계별 데이터셋 구축
데이터셋 선정 시 고려 사항
-
일상 대화와 혐오 표현 대처 능력을 올리기 위한 데이터셋과, 학습 시 챗봇 모델의 general한 task에 대한 성능이 하락하는 것을 막기 위해서 general task 데이터셋을 구성
-
국립국어원 일상 대화 데이터셋: 일상적인 대화에 대한 자연스러운 응답이 있으면서도, 맞춤법이 잘 지켜지고 은어, 비문, 초성 등이 없으며 주제별로 다양한 대화가 있음
-
AI Hub 혐오 표현 데이터셋: 혐오, 차별, 성적인 내용, 폭력, 범죄 등 카테고리별로 다양한 혐오 표현이 있음
-
General task 데이터셋
- Evol-Instruct 데이터셋: 다양한 분야에 대한 복잡하고 논리적인 prompt와 답변이 있음
- Self-Instruct 데이터셋: 사람이 직접 생성한 양질의 Seed data를 기반으로 데이터 증강
- RLHF 한국어 번역 데이터셋: DeepSpeedChat에서 공개한 데이터셋을 한국어로 번역
Task2. SFT 모델 Fine-tuning
Baseline Model
- 고려대학교 NLP & AI 연구실과 HIAI 연구소가 개발한 한국어 LLM "KULLM" 사용
Datasets
SFT Model Finetuning
- 모델학습에는 Google Colab에서 제공하는 A100 40GB GPU 사용
SFT Model Evaluation
- G-Eval: https://arxiv.org/abs/2303.16634
Final SFT Model
- https://huggingface.co/Trofish/KULLM-SFT-v2
Task3-1. Reward Model ver1 구현
Baseline Model
- EleutherAI에서 개발한 초거대 한국어 언어 모델 Polyglot-Ko 사용
- 1.3b 모델과 5.8b 모델을 각각 실험
Datasets
- InstructGPT의 데이터셋 구축 방법
- Reward 모델 학습 데이터셋으로 SFT 학습에 사용한 prompt(1,500개 - 일상대화:혐오표현=2:1)와 새로운 prompt(1,000개 - DeepSpeedChat 번역 데이터셋) 사용
- SFT 모델에서 한개의 prompt당 K개의 Response를 생성하고, 순위를 Labeling
- 데이터셋 라벨링
- Instruct GPT의 경우 사람이 직접 Labeling을 하엿지만, 일관된 평가와 시간 단축을 위해 GPt-4와 G-Eval을 이용
- SFT에서 생성한 두 Response 중 G-Eval 평가 점수 합이 높은 것을 Chosen response로 결정
- 데이터셋 유형별로 G-Eval 평가 Prompt에 차이를 두었음
Reward v1 Model Finetuning
- InstructGPT 논문에 따르면, Reward 모델은 overfitting되면 성능이 크게 저하된다고 함 --> epoch 수를 1로 설정
- batch size나 learning rate 등 다른 hyper-parameter는 성능에 큰 영향이 없다고 함
- Colab A100 40GB 기준 총 학습 시간 4분
Reward v1 Model Evaluation
- Reward Model Template
- "아래는 작업을 설명하는 명령어입니다. 요청을 적절히 완료하는 응답을 작성하세요. \n\n ### 명령어:\n{prompt}\n\n ### 응답:\n"
Task3-2. Reward Model ver2,3 구현
RewardModel ver1 Issues
- 구현된 Reward 모델의 성능이 좋지 않음 (Accuracy 0.65)
- Reward 모델을 사용하여 Step3 학습시 혐오표현이 아닌데도 혐오표현이라고 인식하고 답변하는 문제 발생
Issue 해결방안 (Reward Model ver2,3)
- General Task 답변에 대한 평가 성능을 높이기 위해 Evol-instruct 데이터 추가
- SFT 모델로 답변을 2개 생성하였을 때, Chosen, Rejected 답변의 차이가 크게 없어 모델이 학습되지 않는 현상을 방지하기 위하여 2개의 모델 **(ChatGPT, SFT)**를 사용하여 답변을 생성
- 혐오표현 학습시(Ver2) Step3 학습 이후에 답변이 이상하게 생성되는 Issue가 있어, 혐오표현을 데이터를 제거하고 학습(Ver3)
- RM-ver1은 GPT4가 Chosen, Rejected 레이블링을 진행하였지만, Resource 이슈로 인해 일부만 사람이 라벨링 진행
- 일상대화, 혐오표현 데이터셋
- ChatGPT와 SFT 모두 일관되게 높은 퀄리티의 답변을 생성하지 않아, 사람이 직접 라벨링 진행
- RLHF 한국어 번역, Evol-Instruct 데이터셋
- ChatGPT가 일관되게 높은 퀄리티의 답변을 생성하여 ChatGPT를 Chosen, SFT를 Rejected로 라벨링 진
- 일상대화, 혐오표현 데이터셋
Reward Model ver2,3 Evaluation
Task4. RLHF와 DeepSpeedChat을 통한 최종 모델 구현
- Microsoft에서 만든 대규모 분산 딥러닝을 위한 새로운 메모리 최적화 기술(DeepSpeed)을 RLHF Process에 적용한 DeepSpeedChat 사용
- Human preference로 학습을 시킨 Reward 모델과 강화학습을 통해 SFT 모델에 사람의 선호도를 반영하여 자연스럽고(FRIENDLY), 윤리적인 (HARMLESS) 챗봇 생성
Baseline Models
- Actor Model: KULLM-SFT-V2
- Reward Model: Polyglot-Ko-Reward-V3
Training Options
RLHF Training
- 학습 결과, SFT 모델의 답변에 대한 퀄리티인 Reward가 상승하는 것을 확인 (사람의 선호도가 높은 답변을 생성)
RLFH Model Evaluation
Final RLHF Model
- https://huggingface.co/Trofish/KULLM-RLHF
Contributors 🙌
- 박성완 (성균관대학교 소프트웨어학과 20학번, waniboyy@gmail.com)
- 송현빈 (성균관대학교 소프트웨어학과 20학번, shbin0519@gmail.com)
- 허유민 (성균관대학교 소프트웨어학과 21학번, ymheo1123@gmail.com)
- 홍여원 (성균관대학교 소프트웨어학과 20학번, ryeowon13@gmail.com)