--- datasets: - gbharti/finance-alpaca - sujet-ai/Sujet-Finance-Instruct-177k tags: - krx --- # Qwen 2.5 7B Instruct 모델 파인튜닝 이 저장소는 Amazon SageMaker를 사용하여 Qwen 2.5 7B Instruct 모델을 파인튜닝하는 코드를 포함하고 있습니다. 이 프로젝트는 대규모 언어 모델의 효율적인 파인튜닝을 위해 QLoRA(Quantized Low-Rank Adaptation)를 사용합니다. ## 프로젝트 구조 ``` . ├── scripts/ │ ├── train.py │ ├── tokenization_qwen2.py │ ├── requirements.txt │ └── bootstrap.sh ├── sagemaker_train.py └── README.md ``` ## 사전 요구사항 - Amazon SageMaker 접근 권한 - Hugging Face 계정 및 접근 토큰 - AWS 자격 증명 구성 - Python 3.10+ ## 환경 설정 프로젝트에서 사용하는 주요 의존성: - PyTorch 2.1.0 - Transformers (main 브랜치의 최신 버전) - Accelerate >= 0.27.0 - PEFT >= 0.6.0 - BitsAndBytes >= 0.41.0 ## 모델 구성 - 기본 모델: `Qwen/Qwen2.5-7B-Instruct` - 학습 방법: QLoRA (4비트 양자화) - 인스턴스 유형: ml.p5.48xlarge - 분산 전략: PyTorch DDP ## 학습 구성 ### 하이퍼파라미터 ```python { 'epochs': 3, 'per_device_train_batch_size': 4, 'gradient_accumulation_steps': 8, 'learning_rate': 1e-5, 'max_steps': 1000, 'bf16': True, 'max_length': 2048, 'gradient_checkpointing': True, 'optim': 'adamw_torch', 'lr_scheduler_type': 'cosine', 'warmup_ratio': 0.1, 'weight_decay': 0.01, 'max_grad_norm': 0.3 } ``` ### 환경 변수 학습 환경은 분산 학습 및 메모리 관리를 위한 최적화로 구성되어 있습니다: - CUDA 장치 구성 - 메모리 최적화 설정 - 분산 학습을 위한 EFA(Elastic Fabric Adapter) 구성 - Hugging Face 토큰 및 캐시 설정 ## 학습 프로세스 1. **환경 준비**: - 필요한 의존성이 포함된 `requirements.txt` 생성 - Transformers 설치를 위한 `bootstrap.sh` 생성 - SageMaker 학습 구성 설정 2. **모델 로딩**: - 4비트 양자화로 기본 Qwen 2.5 7B 모델 로드 - 양자화를 위한 BitsAndBytes 구성 - k-bit 학습을 위한 모델 준비 3. **데이터셋 처리**: - Sujet Finance 데이터셋 사용 - Qwen2 형식으로 대화 포맷팅 - 최대 2048 토큰 길이로 토크나이징 - 병렬 처리를 통한 데이터 전처리 구현 4. **학습**: - 메모리 효율성을 위한 gradient checkpointing 구현 - 웜업이 포함된 코사인 학습률 스케줄 사용 - 50 스텝마다 체크포인트 저장 - 10 스텝마다 학습 메트릭 로깅 ## 모니터링 및 메트릭 학습 과정에서 다음 메트릭을 추적합니다: - 학습 손실(Training loss) - 평가 손실(Evaluation loss) ## 오류 처리 구현에는 포괄적인 오류 처리 및 로깅이 포함되어 있습니다: - 환경 유효성 검사 - 데이터셋 준비 검증 - 학습 프로세스 모니터링 - 자세한 오류 메시지 및 스택 추적 ## 사용 방법 1. AWS 자격 증명 및 SageMaker 역할 구성 2. Hugging Face 토큰 설정 3. 학습 스크립트 실행: ```bash python sagemaker_train.py ``` ## 커스텀 컴포넌트 ### 커스텀 토크나이저 프로젝트는 다음 기능이 포함된 Qwen2 토크나이저의 커스텀 구현(`tokenization_qwen2.py`)을 포함합니다: - 특수 토큰 처리 - 유니코드 정규화 - 어휘 관리 - 모델 학습을 위한 입력 준비 ## 주의사항 - 학습 스크립트는 ml.p5.48xlarge 인스턴스 타입에 최적화되어 있습니다 - PyTorch Distributed Data Parallel을 사용한 학습 - 메모리 최적화를 위한 gradient checkpointing 구현 - 학습 실패에 대한 자동 재시도 메커니즘 포함