LLM/허깅 페이스(Hugging Face)
3-3. 허깅페이스를 이용한 모델 학습
Human-analog
2024. 11. 20. 07:18
3.4 모델 학습시키기
모델을 학습시키기 위해서는 데이터 준비와 모델 설정이 중요한 단계예요. Hugging Face는 Trainer API를 제공해서 학습 과정을 더 쉽게 진행할 수 있도록 도와줘요.
3.4.1 데이터 준비
모델을 학습시키기 위해 데이터를 먼저 준비해야 해요. Hugging Face의 datasets 라이브러리를 사용하면 다양한 데이터셋을 간단하게 불러와 사용할 수 있어요.
from datasets import load_dataset
# IMDB 감정 분석 데이터셋 불러오기
dataset = load_dataset("imdb")
# 훈련 및 평가 데이터셋으로 분리
train_dataset = dataset['train']
test_dataset = dataset['test']
print(train_dataset[0])
이 코드는 IMDB 데이터셋을 불러와 훈련용 데이터와 평가용 데이터를 준비하는 과정이에요. 데이터셋을 쉽게 불러와 사용할 수 있어요.
- 요약:
datasets 라이브러리를 사용해 IMDB 데이터셋을 불러와 훈련 및 평가 데이터를 준비할 수 있어요. - 용어설명:
- 데이터셋: 모델 학습과 평가를 위한 데이터 모음.
3.4.2 트레이너 API를 사용해 학습하기
Hugging Face의 Trainer 클래스는 모델 학습을 더 쉽게 할 수 있도록 도와줘요. 데이터셋을 준비하고 모델을 설정한 후, 이 클래스를 통해 학습을 간편하게 진행할 수 있어요.
from transformers import BertForSequenceClassification, Trainer, TrainingArguments
# BERT 모델 설정 (이진 분류)
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
# 학습 설정
training_args = TrainingArguments(
output_dir='./results', # 결과가 저장될 폴더
num_train_epochs=3, # 학습 반복 횟수
per_device_train_batch_size=8, # 배치 크기
evaluation_strategy="epoch", # 평가 전략
)
# 트레이너 설정
trainer = Trainer(
model=model, # 학습할 모델
args=training_args, # 학습 설정
train_dataset=train_dataset, # 훈련 데이터
eval_dataset=test_dataset # 평가 데이터
)
# 학습 시작
trainer.train()
이 코드는 BERT 모델을 사용해 IMDB 감정 분석 데이터셋으로 학습을 수행하는 예시예요. Trainer API를 사용하면 학습을 간단하게 설정하고 시작할 수 있어요.
- 요약:
Trainer API를 사용해 모델을 설정하고, 데이터를 기반으로 간단하게 학습을 시작할 수 있어요. - 용어설명:
- Trainer API: Hugging Face에서 모델 학습을 간편하게 할 수 있도록 제공하는 클래스.
3.4.3 트레이너 API를 사용하지 않고 학습하기(PyTorch)
만약 Trainer API 대신 기본적인 PyTorch 방식으로 학습을 하고 싶다면, 아래와 같은 코드로 직접 학습 루프를 구현할 수 있어요. 이 방법은 더 유연한 제어가 가능하지만, 직접 학습 루프를 구성해야 해요.
from torch.utils.data import DataLoader
from transformers import AdamW
# 데이터로더 설정
train_loader = DataLoader(train_dataset, batch_size=8, shuffle=True)
# 옵티마이저 설정
optimizer = AdamW(model.parameters(), lr=5e-5)
# 학습 루프
for epoch in range(3): # 3 에포크 동안 학습
model.train()
for batch in train_loader:
optimizer.zero_grad()
inputs = {key: value.to(model.device) for key, value in batch.items()}
outputs = model(**inputs)
loss = outputs.loss
loss.backward()
optimizer.step()
이 코드는 PyTorch 방식으로 직접 학습 루프를 구현한 예시예요. 이 방법은 더 유연한 제어가 가능하지만, Trainer API를 사용하면 간편하게 학습할 수 있어요.
- 요약:
PyTorch 방식으로 직접 학습 루프를 구현하여 학습을 유연하게 제어할 수 있어요. - 용어설명:
- PyTorch 학습 루프: 모델 학습을 위해 직접 학습 과정을 제어하는 방식.
정리
- 데이터 준비에서는 datasets 라이브러리를 사용해 IMDB 데이터셋을 불러와 훈련과 평가 데이터를 준비할 수 있어요.
- Trainer API를 사용하면 BERT 모델을 쉽게 학습시킬 수 있고, 학습 설정과 평가를 간편하게 할 수 있어요.
- PyTorch 방식으로 직접 학습 루프를 구현하면 더 유연한 학습 제어가 가능하지만, Trainer API는 더 간편한 학습 방식을 제공해요.