PEFT
Safetensors
krx
File size: 3,873 Bytes
2714fb4
 
 
68fa2b2
 
 
 
 
2714fb4
 
f7ecbbe
6f0625d
f7ecbbe
6f0625d
f7ecbbe
6f0625d
 
 
 
 
 
 
 
 
 
 
2714fb4
f7ecbbe
6f0625d
f7ecbbe
 
 
6f0625d
2714fb4
f7ecbbe
2714fb4
f7ecbbe
2714fb4
6f0625d
f7ecbbe
6f0625d
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
2714fb4
6f0625d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
 
2714fb4
f7ecbbe
 
 
 
2714fb4
f7ecbbe
 
 
 
 
2714fb4
f7ecbbe
 
 
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
2714fb4
6f0625d
 
 
2714fb4
f7ecbbe
2714fb4
f7ecbbe
2714fb4
f7ecbbe
 
 
 
 
2714fb4
f7ecbbe
6f0625d
f7ecbbe
 
 
 
2714fb4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
---
base_model: Qwen/Qwen2.5-7B-Instruct
library_name: peft
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 구현
- 학습 실패에 대한 자동 재시도 메커니즘 포함