diff --git a/troubleshooting/250808_happybell80_감정분류모델학습.md b/troubleshooting/250808_happybell80_감정분류모델학습.md new file mode 100644 index 0000000..2c3d133 --- /dev/null +++ b/troubleshooting/250808_happybell80_감정분류모델학습.md @@ -0,0 +1,90 @@ +# 250808 한국어 감정 분류 모델 학습 + +## 오후 5시 13분 + +### 한국어 감정 분류 모델 학습 및 배포 + +#### 배경 +- 로빙의 감정 인식 기능 필요 +- 한국어 텍스트에서 7가지 감정 분류 (공포, 놀람, 분노, 슬픔, 중립, 행복, 혐오) +- KLUE-BERT 기반 모델 학습 + +#### 작업 과정 + +##### 1. 환경 구성 +- WSL2 환경에서 학습 진행 +- 하드웨어: i9-12900KF, RTX 3060 x2, CUDA 12.6 +- emotion_training 폴더 생성 후 training_emotion으로 변경 +- uv 패키지 매니저로 가상환경 구성 + +##### 2. 데이터 준비 +**KOTE 데이터셋** +- Hugging Face에서 다운로드 +- 6개 감정, 심각한 클래스 불균형 +- 학습 결과: F1 35.8% + +**AI Hub 데이터셋** +- 한국어_단발성_대화_데이터셋.xlsx +- 한국어_연속적_대화_데이터셋.xlsx +- 38,594개 샘플, 7개 감정 균형 분포 +- 학습 결과: F1 56.3% + +##### 3. 주요 문제 해결 + +**TrainingArguments 파라미터 변경** +```python +# 기존 (오류) +evaluation_strategy="epoch" +# 수정 +eval_strategy="epoch" +``` + +**compute_loss 시그니처 오류** +```python +# WeightedTrainer 클래스에 추가 +def compute_loss(self, model, inputs, return_outputs=False, num_items_in_batch=None): + # num_items_in_batch 파라미터 추가 필요 +``` + +**Bash 타임아웃 문제 (중요)** +- 기본 2분 타임아웃으로 학습 중단 반복 +- 사용자 피드백: "타임아웃은 .. 신발.." +- 해결: 1시간 타임아웃 설정 +```bash +# Claude Code에서 timeout 설정 +timeout=3600000 # 1시간 +``` + +##### 4. 최종 모델 성능 +- Macro F1 Score: 56.3% +- ECE (Expected Calibration Error): 0.090 +- Brier Score: 0.564 +- 온도 보정 적용 (T=1.232) + +##### 5. Git 저장소 구성 +- 저장소: https://git.ro-being.com/ivada_Ro-being/training_emotion.git +- 폴더 구조 정리: + - scripts/: 데이터 처리 스크립트 + - data/: 학습 데이터 + - outputs/: 학습된 모델 + - logs/: 학습 로그 +- .gitignore로 체크포인트 제외 (용량 관리) + +##### 6. 배포 계획 +- 51124 서버에 skill-emotion 서비스 구축 +- 포트 8503 사용 +- FastAPI 기반 API 서버 +- 로빙과 HTTP API로 연동 + +#### 교훈 +1. **타임아웃 설정의 중요성**: 긴 학습 작업 시 충분한 타임아웃 설정 필수 +2. **라이브러리 버전 호환성**: transformers 라이브러리 업데이트로 파라미터명 변경 주의 +3. **데이터 품질**: KOTE보다 AI Hub 데이터가 균형잡혀 있어 성능 향상 (35.8% → 56.3%) +4. **파일 인코딩**: README 작성 시 UTF-8 인코딩 확인 필요 +5. **브랜치명 규칙**: main 브랜치 사용 (master 대신) +6. **uv 패키지 매니저**: pip보다 빠르고 의존성 관리 편리 + +#### 다음 단계 +- skill-emotion 서비스 구현 +- 로빙(rb10508_test)과 통합 +- 실시간 감정 분석 기능 추가 \ No newline at end of file