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 토큰 및 캐시 설정

학습 프로세스

  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. 학습 스크립트 실행:
python sagemaker_train.py

커스텀 컴포넌트

커스텀 토크나이저

프로젝트는 다음 기능이 포함된 Qwen2 토크나이저의 커스텀 구현(tokenization_qwen2.py)을 포함합니다:

  • 특수 토큰 처리
  • 유니코드 정규화
  • 어휘 관리
  • 모델 학습을 위한 입력 준비

주의사항

  • 학습 스크립트는 ml.p5.48xlarge 인스턴스 타입에 최적화되어 있습니다
  • PyTorch Distributed Data Parallel을 사용한 학습
  • 메모리 최적화를 위한 gradient checkpointing 구현
  • 학습 실패에 대한 자동 재시도 메커니즘 포함
Downloads last month
23
Safetensors
Model size
7.62B params
Tensor type
F32
·
Inference Examples
This model does not have enough activity to be deployed to Inference API (serverless) yet. Increase its social visibility and check back later, or deploy to Inference Endpoints (dedicated) instead.

Model tree for seong67360/Qwen2.5-7B-Instruct_v4

Base model

Qwen/Qwen2.5-7B
Finetuned
(151)
this model

Datasets used to train seong67360/Qwen2.5-7B-Instruct_v4