PyTorch는 자연어 처리(NLP)에서 GPT, BERT, T5 같은 최신 딥러닝 모델을 구현하는 데 많이 사용된다. 특히 Hugging Face Transformers 라이브러리는 PyTorch 기반으로 설계되어 있으며, 사전 학습된 언어 모델을 쉽게 활용할 수 있도록 돕는다.
1. GPT 모델이란?
GPT(Generative Pre-trained Transformer)는 OpenAI가 개발한 Transformer 기반의 언어 모델
- 사전 학습(Pre-training)된 후, 특정 NLP 작업(텍스트 생성, 번역, 요약 등)에 맞춰 파인튜닝(Fine-tuning)이 가능
- GPT-3, GPT-4 같은 대형 모델은 Hugging Face를 통해 쉽게 활용할 수 있음
2. 허깅페이스 트랜스포머(Hugging Face Transformers)란?
Hugging Face의 transformers 라이브러리는 사전 학습된 NLP 모델을 PyTorch 및 TensorFlow에서 쉽게 사용할 수 있도록 지원하는 라이브러리입니다.
- BERT, GPT, T5, RoBERTa 등 100,000개 이상의 모델을 제공
- PyTorch 기반으로 동작하며, Trainer API를 사용해 모델 학습 가능
- Hugging Face Hub에서 다양한 모델을 다운로드하여 즉시 사용 가능
#설치 방법
pip install transformers torch
3. Hugging Face Transformers란?
(1) GPT 모델 불러오기
from transformers import GPT2LMHeadModel, GPT2Tokenizer
import torch
# 모델 및 토크나이저 로드
model_name = "gpt2" # 또는 "gpt2-medium", "gpt2-large", "gpt2-xl"
tokenizer = GPT2Tokenizer.from_pretrained(model_name)
model = GPT2LMHeadModel.from_pretrained(model_name)
# 모델을 GPU로 이동 (선택사항)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
(2) 텍스트 생성
# 입력 텍스트 정의
input_text = "Once upon a time"
# 토큰 변환 및 모델 입력
input_ids = tokenizer.encode(input_text, return_tensors="pt").to(device)
# 텍스트 생성
output = model.generate(input_ids, max_length=100, num_return_sequences=1)
# 디코딩하여 출력
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print(generated_text)
- tokenizer.encode() : 입력 텍스트를 토큰으로 변환
- model.generate() : GPT 모델을 사용하여 새로운 텍스트 생성
- tokenizer.decode() : 생성된 토큰을 다시 텍스트로 변환
4. GPT 모델을 Hugging Face에서 Fine-tuning 하기
(1) 데이터셋 준비 (Hugging Face Datasets 사용)
from datasets import load_dataset
# Hugging Face에서 데이터셋 로드 (예: IMDB 리뷰 데이터)
dataset = load_dataset("imdb")
# 훈련 및 검증 데이터셋 분할
train_data = dataset["train"]
test_data = dataset["test"]
print(train_data[0]) # 첫 번째 데이터 출력
*datasets 라이브러리 : 다양한 NLP 데이터셋을 쉽게 불러올 수 있는 Hugging Face의 툴
(2) GPT 모델을 파인튜닝하기 위한 훈련 설정
from transformers import Trainer, TrainingArguments
# 학습 설정
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
learning_rate=5e-5,
weight_decay=0.01,
num_train_epochs=3,
save_strategy="epoch",
logging_dir="./logs",
)
# Trainer 객체 생성
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_data,
eval_dataset=test_data
)
# 모델 학습 시작
trainer.train()
- TrainingArguments() : 학습 관련 설정 지정
- Trainer() : PyTorch 기반의 학습 관리
- .train() : 모델 훈련 실행
5. GPT 모델을 Hugging Face에서 Fine-tuning 하기
간단한 Transformer Block 예제
import torch.nn as nn
import torch
class TransformerBlock(nn.Module):
def __init__(self, embed_size, heads, dropout, forward_expansion):
super(TransformerBlock, self).__init__()
self.attention = nn.MultiheadAttention(embed_dim=embed_size, num_heads=heads)
self.norm1 = nn.LayerNorm(embed_size)
self.norm2 = nn.LayerNorm(embed_size)
self.feed_forward = nn.Sequential(
nn.Linear(embed_size, forward_expansion * embed_size),
nn.ReLU(),
nn.Linear(forward_expansion * embed_size, embed_size)
)
self.dropout = nn.Dropout(dropout)
def forward(self, value, key, query, mask):
attention = self.attention(query, key, value, attn_mask=mask)[0]
x = self.norm1(attention + query)
forward = self.feed_forward(x)
out = self.norm2(forward + x)
return out
- MultiheadAttention : Transformer의 핵심인 다중 헤드 어텐션
- LayerNorm : 정규화 레이어
- feed_forward : 신경망 계층 추가
6. 정리
- GPT는 Transformer 기반의 언어 모델이며, PyTorch와 Hugging Face를 활용해 쉽게 사용 가능
- Hugging Face transformers 라이브러리는 사전 학습된 GPT 모델을 제공하여 코드 몇 줄로 활용 가능
- Fine-tuning을 통해 특정 데이터셋에 맞춘 GPT 모델을 학습 가능
- PyTorch로 직접 Transformer를 구현할 수도 있지만, Hugging Face를 사용하는 것이 효율적
- PyTorch와 Hugging Face를 활용하면 최신 NLP 모델을 간편하게 적용하고 커스터마이징할 수 있음
'Study > AI' 카테고리의 다른 글
[AI] TensorFlow의 NLP 활용: GPT & Hugging Face 연동 (4) | 2025.03.13 |
---|---|
[AI] 텐서플로우(TensorFlow) (2) | 2025.03.13 |
[AI] 파이토치(PyTorch) (2) | 2025.03.13 |
[AI] OWASP TOP 10 LLM 애플리케이션 취약점 (2) | 2025.02.18 |
[AI] 적대적 공격 (Adversarial Attack) (10) | 2024.10.21 |