EdgeLoRA의 Adaptive Adapter Selection 컴포넌트 분석 및 개선 실험
이 레포지토리는 EdgeLoRA의 adapter router 성능을 분석하고 개선하기 위한 실험을 수행합니다. Multi-label classification을 통해 주어진 텍스트에 가장 적합한 adapter(s)를 선택하는 모델을 학습합니다.
지원 Task: BBH, GPQA, IFEval, Math, MMLU-Pro, MuSR (총 7개 adapter)
- Python 3.11
- CUDA 12.4
- PyTorch 2.0+
- Custom transformers (EdgeLoRA 지원)
# Custom transformers 설치 (EdgeLoRA 지원)
pip install git+https://github.com/shenzheyu/transformers.git@edgelora
# 기타 의존성
pip install accelerate peft trl datasets pandas scipy fire# 기본 설정으로 학습 (rank=32, 3 epochs)
bash finetune.sh
# 커스텀 설정
CUDA_VISIBLE_DEVICES=0 python finetune.py \
--base_model 'meta-llama/Llama-3.1-8B-Instruct' \
--output_dir './trained_models/my_experiment' \
--lora_r 32 \
--lora_alpha 64 \
--num_epochs 3 \
--batch_size 32 \
--micro_batch_size 4--lora_r: LoRA rank (default: 32)--lora_alpha: LoRA alpha (default: 64, alpha/r = 2.0)--num_epochs: 학습 epoch 수 (default: 3)--cutoff_len: 최대 시퀀스 길이 (default: 1024)--batch_size: 전체 배치 크기 (default: 32)--micro_batch_size: GPU당 배치 크기 (default: 4)
최신 실험 결과는 docs/experiments/ 디렉토리를 참고하세요.
- LoRA rank: 32
- 평균 정확도: 38.27%
- 학습 시간: 약 2.7시간 (RTX 4090 1개)
Task별 성능:
| Task | Accuracy |
|---|---|
| BBH | 54.13% |
| IFEval | 49.06% |
| MuSR | 39.86% |
| MMLU-Pro | 38.83% |
| GPQA | 34.30% |
| Math | 13.41% |
자세한 내용: rank_32_full 실험 보고서
adapter-router/
├── finetune.py # 학습 스크립트
├── finetune.sh # 학습 실행 스크립트
├── train.csv # 학습 데이터
├── test.csv # 테스트 데이터
├── docs/
│ └── experiments/ # 실험 결과 문서
├── logs/ # 학습 로그 (gitignore)
└── trained_models/ # 학습된 모델 (gitignore)
- ✅ 평가 로직 버그 수정: 단일 GPU 환경에서 테스트 정확도 미측정 문제 해결
- ✅ torch.compile 비활성화: 학습 안정성 개선
- ✅ tokenizer max_length 명시: 일관성 향상
- ✅ 실험 문서화 시스템 구축
- Validation set 추가 및 early stopping 구현
- Learning rate scheduling (cosine annealing)
- Rank ablation study (r=8, 16, 32, 64)
- Task-specific adapter weight 분석
- Math task 성능 개선 연구