South-Korea-Shuan commited on
Commit
580e13f
·
verified ·
1 Parent(s): 9e33468

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +140 -1
README.md CHANGED
@@ -3,4 +3,143 @@ datasets:
3
  - gbharti/finance-alpaca
4
  - sujet-ai/Sujet-Finance-Instruct-177k
5
  - BigShort/krx_report
6
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  - gbharti/finance-alpaca
4
  - sujet-ai/Sujet-Finance-Instruct-177k
5
  - BigShort/krx_report
6
+ ---
7
+
8
+
9
+ # Qwen 2.5 7B Instruct 모델 파인튜닝
10
+
11
+ 이 저장소는 Amazon SageMaker를 사용하여 Qwen 2.5 7B Instruct 모델을 파인튜닝하는 코드를 포함하고 있습니다. 이 프로젝트는 대규모 언어 모델의 효율적인 파인튜닝을 위해 QLoRA(Quantized Low-Rank Adaptation)를 사용합니다.
12
+
13
+ ## 프로젝트 구조
14
+
15
+ ```
16
+ .
17
+ ├── scripts/
18
+ │ ├── train.py
19
+ │ ├── tokenization_qwen2.py
20
+ │ ├── requirements.txt
21
+ │ └── bootstrap.sh
22
+ ├── sagemaker_train.py
23
+ └── README.md
24
+ ```
25
+
26
+ ## 사전 요구사항
27
+
28
+ - Amazon SageMaker 접근 권한
29
+ - Hugging Face 계정 및 접근 토큰
30
+ - AWS 자격 증명 구성
31
+ - Python 3.10+
32
+
33
+ ## 환경 설정
34
+
35
+ 프로젝트에서 사용하는 주요 의존성:
36
+
37
+ - PyTorch 2.1.0
38
+ - Transformers (main 브랜치의 최신 버전)
39
+ - Accelerate >= 0.27.0
40
+ - PEFT >= 0.6.0
41
+ - BitsAndBytes >= 0.41.0
42
+
43
+ ## 모델 구성
44
+
45
+ - 기본 모델: `Qwen/Qwen2.5-7B-Instruct`
46
+ - 학습 방법: QLoRA (4비트 양자화)
47
+ - 인스턴스 유형: ml.p5.48xlarge
48
+ - 분산 전략: PyTorch DDP
49
+
50
+ ## 학습 구성
51
+
52
+ ### 하이퍼파라미터
53
+
54
+ ```python
55
+ {
56
+ 'epochs': 3,
57
+ 'per_device_train_batch_size': 4,
58
+ 'gradient_accumulation_steps': 8,
59
+ 'learning_rate': 1e-5,
60
+ 'max_steps': 1000,
61
+ 'bf16': True,
62
+ 'max_length': 2048,
63
+ 'gradient_checkpointing': True,
64
+ 'optim': 'adamw_torch',
65
+ 'lr_scheduler_type': 'cosine',
66
+ 'warmup_ratio': 0.1,
67
+ 'weight_decay': 0.01,
68
+ 'max_grad_norm': 0.3
69
+ }
70
+ ```
71
+
72
+ ### 환경 변수
73
+
74
+ 학습 환경은 분산 학습 및 메모리 관리를 위한 최적화로 구성되어 있습니다:
75
+
76
+ - CUDA 장치 구성
77
+ - 메모리 최적화 설정
78
+ - 분산 학습을 위한 EFA(Elastic Fabric Adapter) 구성
79
+ - Hugging Face 토큰 및 캐시 설정
80
+
81
+ ## 학습 프로세스
82
+
83
+ 1. **환경 준비**:
84
+ - 필요한 의존성이 포함된 `requirements.txt` 생성
85
+ - Transformers 설치를 위한 `bootstrap.sh` 생성
86
+ - SageMaker 학습 구성 설정
87
+
88
+ 2. **모델 로딩**:
89
+ - 4비트 양자화로 기본 Qwen 2.5 7B 모델 로드
90
+ - 양자화를 위한 BitsAndBytes 구성
91
+ - k-bit 학습을 위한 모델 준비
92
+
93
+ 3. **데이터셋 처리**:
94
+ - Sujet Finance 데이터셋 사용
95
+ - Qwen2 형식으로 대화 포맷팅
96
+ - 최대 2048 토큰 길이로 토크나이징
97
+ - 병렬 처리를 통한 데이터 전처리 구현
98
+
99
+ 4. **학습**:
100
+ - 메모리 효율성을 위한 gradient checkpointing 구현
101
+ - 웜업이 포함된 코사인 학습률 스케줄 사용
102
+ - 50 스텝마다 체크포인트 저장
103
+ - 10 스텝마다 학습 메트릭 로깅
104
+
105
+ ## 모니터링 및 메트릭
106
+
107
+ 학습 과정에서 다음 메트릭을 추적합니다:
108
+ - 학습 손실(Training loss)
109
+ - 평가 손실(Evaluation loss)
110
+
111
+ ## 오류 처리
112
+
113
+ 구현에는 포괄적인 오류 처리 및 로깅이 포함되어 있습니다:
114
+ - 환경 유효성 검사
115
+ - 데이터셋 준비 검증
116
+ - 학습 프로세스 모니터링
117
+ - 자세한 오류 메시지 및 스택 추적
118
+
119
+ ## 사용 방법
120
+
121
+ 1. AWS 자격 증명 및 SageMaker 역할 구성
122
+ 2. Hugging Face 토큰 설정
123
+ 3. 학습 스크립트 실행:
124
+
125
+ ```bash
126
+ python sagemaker_train.py
127
+ ```
128
+
129
+ ## 커스텀 컴포넌트
130
+
131
+ ### 커스텀 토크나이저
132
+
133
+ 프로젝트는 다음 기능이 포함된 Qwen2 토크나이저의 커스텀 구현(`tokenization_qwen2.py`)을 포함합니다:
134
+ - 특수 토큰 처리
135
+ - 유니코드 정규화
136
+ - 어휘 관리
137
+ - 모델 학습을 위한 입력 준비
138
+
139
+ ## 주의사항
140
+
141
+ - 학습 스크립트는 ml.p5.48xlarge 인스턴스 타입에 최적화되어 있습니다
142
+ - PyTorch Distributed Data Parallel을 사용한 학습
143
+ - 메모리 최적화를 위한 gradient checkpointing 구현
144
+ - 학습 실패에 대한 자동 재시도 메커니즘 포함
145
+