Qwen 2.5 7B Instruct ๋ชจ๋ธ ํ์ธํ๋
์ด ์ ์ฅ์๋ Amazon SageMaker๋ฅผ ์ฌ์ฉํ์ฌ Qwen 2.5 7B Instruct ๋ชจ๋ธ์ ํ์ธํ๋ํ๋ ์ฝ๋๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ์ ํจ์จ์ ์ธ ํ์ธํ๋์ ์ํด QLoRA(Quantized Low-Rank Adaptation)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ธ ์ฌ์ฉ ๋ฐฉ๋ฒ
์๊ตฌ์ฌํญ
- Python 3.8 ์ด์
- CUDA ์ง์ GPU (์ต์ 24GB VRAM ๊ถ์ฅ)
- ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ:
pip install torch transformers accelerate
๊ธฐ๋ณธ ์ฌ์ฉ ์์
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# CUDA ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
if torch.cuda.is_available():
print(f"Using GPU: {torch.cuda.get_device_name(0)}")
else:
print("Warning: CUDA not available, using CPU")
# ๋ชจ๋ธ๊ณผ ํ ํฌ๋์ด์ ๋ก๋
model = AutoModelForCausalLM.from_pretrained(
"seong67360/Qwen2.5-7B-Instruct_v4",
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(
"seong67360/Qwen2.5-7B-Instruct_v4",
trust_remote_code=True
)
# ๋ํ ์์
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is quantum computing?"}
]
# ์๋ต ์์ฑ
response = model.chat(tokenizer, messages)
print(response)
๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ์ต์
GPU ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ํ๋ ๊ฒฝ์ฐ, 8๋นํธ ๋๋ 4๋นํธ ์์ํ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
# 8๋นํธ ์์ํ
model = AutoModelForCausalLM.from_pretrained(
"seong67360/Qwen2.5-7B-Instruct_v4",
device_map="auto",
trust_remote_code=True,
load_in_8bit=True
)
# ๋๋ 4๋นํธ ์์ํ
model = AutoModelForCausalLM.from_pretrained(
"seong67360/Qwen2.5-7B-Instruct_v4",
device_map="auto",
trust_remote_code=True,
load_in_4bit=True
)
์์ฑ ํ๋ผ๋ฏธํฐ ์ค์
response = model.chat(
tokenizer,
messages,
temperature=0.7, # ๋์์๋ก ๋ ์ฐฝ์์ ์ธ ์๋ต
top_p=0.9, # ์ํ๋ง์ ์ฌ์ฉ๋ ๋์ ํ๋ฅ ์ ์๊ณ๊ฐ
max_new_tokens=512, # ์์ฑํ ์ต๋ ํ ํฐ ์
repetition_penalty=1.1 # ๋ฐ๋ณต ๋ฐฉ์ง๋ฅผ ์ํ ํ๋ํฐ (1.0 ์ด์)
)
ํ๋ก์ ํธ ๊ตฌ์กฐ
.
โโโ 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
ํ์ต ๊ตฌ์ฑ
ํ์ดํผํ๋ผ๋ฏธํฐ
{
'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 ํ ํฐ ๋ฐ ์บ์ ์ค์
ํ์ต ํ๋ก์ธ์ค
ํ๊ฒฝ ์ค๋น:
- ํ์ํ ์์กด์ฑ์ด ํฌํจ๋
requirements.txt
์์ฑ - Transformers ์ค์น๋ฅผ ์ํ
bootstrap.sh
์์ฑ - SageMaker ํ์ต ๊ตฌ์ฑ ์ค์
- ํ์ํ ์์กด์ฑ์ด ํฌํจ๋
๋ชจ๋ธ ๋ก๋ฉ:
- 4๋นํธ ์์ํ๋ก ๊ธฐ๋ณธ Qwen 2.5 7B ๋ชจ๋ธ ๋ก๋
- ์์ํ๋ฅผ ์ํ BitsAndBytes ๊ตฌ์ฑ
- k-bit ํ์ต์ ์ํ ๋ชจ๋ธ ์ค๋น
๋ฐ์ดํฐ์ ์ฒ๋ฆฌ:
- Sujet Finance ๋ฐ์ดํฐ์ ์ฌ์ฉ
- Qwen2 ํ์์ผ๋ก ๋ํ ํฌ๋งทํ
- ์ต๋ 2048 ํ ํฐ ๊ธธ์ด๋ก ํ ํฌ๋์ด์ง
- ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๊ตฌํ
ํ์ต:
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ ์ํ gradient checkpointing ๊ตฌํ
- ์์ ์ด ํฌํจ๋ ์ฝ์ฌ์ธ ํ์ต๋ฅ ์ค์ผ์ค ์ฌ์ฉ
- 50 ์คํ ๋ง๋ค ์ฒดํฌํฌ์ธํธ ์ ์ฅ
- 10 ์คํ ๋ง๋ค ํ์ต ๋ฉํธ๋ฆญ ๋ก๊น
๋ชจ๋ํฐ๋ง ๋ฐ ๋ฉํธ๋ฆญ
ํ์ต ๊ณผ์ ์์ ๋ค์ ๋ฉํธ๋ฆญ์ ์ถ์ ํฉ๋๋ค:
- ํ์ต ์์ค(Training loss)
- ํ๊ฐ ์์ค(Evaluation loss)
์ค๋ฅ ์ฒ๋ฆฌ
๊ตฌํ์๋ ํฌ๊ด์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ ๋ฐ ๋ก๊น ์ด ํฌํจ๋์ด ์์ต๋๋ค:
- ํ๊ฒฝ ์ ํจ์ฑ ๊ฒ์ฌ
- ๋ฐ์ดํฐ์ ์ค๋น ๊ฒ์ฆ
- ํ์ต ํ๋ก์ธ์ค ๋ชจ๋ํฐ๋ง
- ์์ธํ ์ค๋ฅ ๋ฉ์์ง ๋ฐ ์คํ ์ถ์
์ฌ์ฉ ๋ฐฉ๋ฒ
- AWS ์๊ฒฉ ์ฆ๋ช ๋ฐ SageMaker ์ญํ ๊ตฌ์ฑ
- Hugging Face ํ ํฐ ์ค์
- ํ์ต ์คํฌ๋ฆฝํธ ์คํ:
python sagemaker_train.py
์ปค์คํ ์ปดํฌ๋ํธ
์ปค์คํ ํ ํฌ๋์ด์
ํ๋ก์ ํธ๋ ๋ค์ ๊ธฐ๋ฅ์ด ํฌํจ๋ Qwen2 ํ ํฌ๋์ด์ ์ ์ปค์คํ
๊ตฌํ(tokenization_qwen2.py
)์ ํฌํจํฉ๋๋ค:
- ํน์ ํ ํฐ ์ฒ๋ฆฌ
- ์ ๋์ฝ๋ ์ ๊ทํ
- ์ดํ ๊ด๋ฆฌ
- ๋ชจ๋ธ ํ์ต์ ์ํ ์ ๋ ฅ ์ค๋น
์ฃผ์์ฌํญ
- ํ์ต ์คํฌ๋ฆฝํธ๋ ml.p5.48xlarge ์ธ์คํด์ค ํ์ ์ ์ต์ ํ๋์ด ์์ต๋๋ค
- PyTorch Distributed Data Parallel์ ์ฌ์ฉํ ํ์ต
- ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ํ gradient checkpointing ๊ตฌํ
- ํ์ต ์คํจ์ ๋ํ ์๋ ์ฌ์๋ ๋ฉ์ปค๋์ฆ ํฌํจ
- Downloads last month
- 12