I. 프로젝트 개요
1. 실험 개요
- 주제: 대화 요약 모델 개발 및 최적화
- Data
- Type: Unstructured
- Modality: Text
- Metric:
- 목표:
- 주어진 대화 데이터를 활용하여 최적의 요약 모델 구축
- Fine-tuning 및 Prompt Engineering을 통한 성능 향상
- 다양한 모델 비교 및 평가
- 활용 기술 및 도구:
- 개발 환경: Linux 서버 (GPU 지원), 로컬 Python 환경
- 개발 도구: Jupyter Notebook, CURSOR, VS Code
- 라이브러리: Hugging Face Transformers, PyTorch, Solar API
- 협업 도구: Slack, Git
2. 주요 ROUGE 지표
- ROUGE-1: unigram overlap (단어 단위로 겹치는 부분 확인).
- ROUGE-2: bigram overlap (2-gram 기준 겹침).
- ROUGE-L: longest common subsequence (LCS, 가장 긴 공통 서브시퀀스 기반).
3. 데이터
데이터 구조
- 컬럼 구성:
fname
: 각 대화의 고유 ID.
dialogue
: 발화자 간 전체 대화 (\\\\n
으로 구분).
summary
: 대화에 대한 요약문.
topic
: 주제
- 문체:
- 평가 데이터:
- 각 대화에 대해 3개의 요약문 제공 → 다양한 응답에 적절히 평가 가능.
대화 분석
- 대화는 여러 turn(턴)으로 나뉨.
- 첫 턴: 주로 안부, 자기소개, 주요 대화 주제 제시.
4. 개인 업무 및 실험
- Data EDA 및 Preprocessing (Train, Validation Split, Tokenizer 설정)
- 모델 Fine-tuning (Hugging Face 기반)
- Post-Training EDA 및 Prediction 검토
- Prompt Engineering 및 Few-shot Learning 실험
II. 데이터 분석 및 전처리
1. EDA
- 샘플 데이터 추출 및 Word Cloud 확인
- Dialogue 및 Summary의 길이 비율 분석
2. Preprocessing: Validation Set
- Validation과 Test Set의 차이를 고려하여 새롭게 Train/Validation Split 진행
- Dialogue / Summary Ratio를 기준으로 Stratified Sampling 적용
- 결과적으로 Train과 Validation Set의 요약/대화 길이 비율을 약 0.2로 균일화하여 성능 개선 유도
3. Tokenizer: Special Token 추가
- 개인정보 보호 처리 되어 있는 Special Token 추가
- 예:
#CarNumber#
, #PhoneNumber#
, #Person#
, #Email#
, #Address#
등
- 결과적으로 모델의 성능 향상 확인
III. 모델 개발 및 학습
1. 모델 유형별 접근
Hugging Face 모델 (Fine-tuning)
모델 |
구조 |
주요 특징 |
BART |
Seq2Seq (Encoder-Decoder) |
요약 및 번역에 적합 |
T5 |
Seq2Seq (Encoder-Decoder) |
한국어 요약 최적화 |
LLAMA |
Causal LM (Decoder-Only) |
대화 기반 요약 가능 |
Fine-tuning 전략
- Partial Fine-Tuning: 특정 레이어만 Unfreeze하여 미세 조정
- LoRA & Quantization 적용: 모델 크기 축소 및 메모리 최적화
- 학습률 조정: Initial Learning Rate 0.00002 → 0.001로 증가
Prompt Engineering 및 Few-shot Learning (API 활용)
- 모델:
solar-1-mini-chat
- Prompt 방식:
- Few-shot 예시를 User 프롬프트 내에 직접 포함
- Few-shot 예시를 User-Assistant 쌍으로 분리 제공하여 학습 효과 극대화
- Hyperparameter 조정:
temperature
,top_p
, top_k
IV. 모델 평가 및 성능 분석
1. Model 성능 및 속도 비교
- Hugging Face 모델과 API 모델 성능 비교
- 모델 크기 증가에 따라 성능 향상은 있지만 연산 시간 및 메모리 사용량도 증가하는 경향
- 최적 모델 선택: T5 (Fine-tuning) & solar-1-mini-chat (Prompt Engineering)
2. Prediction 분석 및 Post-Training EDA
- 결과 Metric (ROUGE Score) 분석
- Prediction의 주요 문제점:
- 해결책:
3. Loss Monitoring 및 학습 안정화
- Train Loss가 불안정하게 감소하는 현상 해결을 위해 Learning Rate 조정
- Batch Size 최적화: 작은 배치에서도 Gradient Accumulation을 활용하여 큰 배치 효과 유지
V. 추가 실험 및 최종 결과
1. 추가 실험: Dynamic Sampling & Parameter 조절
- Few-shot Sample을 정적으로 설정하는 대신, 입력 텍스트 길이에 따라 동적으로 조정
max_token_length = input_text_length * 0.2
로 자동 설정하여 최적화
- 실제 데이터와 유사한 Train Sample을 찾아 Few-shot Prompt에 추가하여 성능 개선
2. 최종 결과
- ROUGE Score 기준 성능 평가
- 최적의 모델 조합:
VI. 회고 및 향후 개선점
1. Prompt Engineering과 Fine-tuning 전략의 혼합 실험 부족
- 각각의 접근법을 개별적으로 실험했지만, 최적 설정을 조합하는 실험이 부족했음
- 향후 Prompt Engineering 결과를 Fine-tuning에 반영하는 실험 진행 필요
2. 실험 설계 및 검증 프로세스 강화 필요
- Validation set 중요성: Test Set과 가까운 Validation Set 구성 중요
- Debug Mode 활용: 일부 데이터 샘플링하여 빠른 실험 환경 조성
5. 시도 중 어떠한 실패를 경험했는가? 실패의 과정에서 어떠한 교훈을 얻었는가?
6. 협업 과정에서 잘된 점과 아쉬웠던 점은 무엇인가?
7. 이번 경진대회를 통해 얻은 깨달음과 앞으로의 계획
이러한 교훈을 바탕으로, 다음 프로젝트에서는 팀의 역량을 최대한 발휘할 수 있도록 아래와 같은 시도를 해볼 예정
#패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab #국비지원 #패스트캠퍼스업스테이지에이아이랩 #패스트캠퍼스업스테이지부트캠프