2026. 5. 28. 09:33ㆍAI/LLM
앞서 트랜스포머(Transformer)에서 파이프라인(Pipeline)의 내부 동작 방식에 대해 살펴봤는데
그 과정에서 기존 파운데이션 모델(Foundation Model)에 추가로 학습시키는 과정인
파인튜닝(Fine-Tuning) 과정이 어떻게 이루어지는지 살펴봤었다.
그 과정에서 편하게 해주는 도구인 트레이너 API(Trainer API)에 대해 알아볼 것이다.
그러나 이 부분은 실제 학습시키는 내용이므로, 처리하는데 몇시간 이상 걸린다.
그러므로 코드만 간단하게 살펴볼 것이다.
첫번째 코드는 지난번에 살펴봤던 것인데 다시 한번 복기해보자.
from datasets import load_dataset
from transformers import AutoTokenizer, DataCollatorWithPadding
raw_datasets = load_dataset("glue","mrpc")
checkpoint = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
def tokenize_function(example):
return tokenizer(example["senetence1"], example["sentence2"], truncation=True)
tokenized_datasets = raw_datasets.map(tokenize_function, batched=True)
data_collator = DataCollatorWithPadding(tokenizer=tokenizer)
Pre-Trained 된 모델을 가져다가 학습을 할 때 토큰화시켜 임베딩 작업을 먼저 하는데
이 과정에서 기존 Dataset 에다가 토큰 작업 된 부분이 컬럼으로 추가로 들어오는 형태이다.
토큰화 작업에 대해 자세히 이야기하자면, 내부에 각각 자연어들이 문장의 길이가 다 다를 수 있으므로
패딩 작업을 통해 길이를 맞추는데 메모리 낭비를 줄이기 위해 batch 단위로 패딩을 맞춘다.
그 batch 단위로 패딩을 맞추는 부분이 data_collator 함수이다.
이제 학습 시키는 부분에 관한 내용인데, 학습-수정-평가 과정이 연결되어 작업된다.
그 과정을 좀더 편하게 허깅 페이스에서 제공하는 라이브러리가 있는데
그것이 Trainer API 라고 부른다.
먼저 설정하는 것이 TrainingArguments이다.
from transformers import TrainingArguments
training_args = TrainingArguments("test-trainer")
학습 설정 객체를 생성하는 단계로써, 저장 위치 설정이나, Batch 크기나, 반복횟수 등을 지정한다.
그 다음 문장을 분류하는 모델을 가져온다.
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(checkpoint, num_labels=2)
이제 위에서 설정한 것을 기반으로 트레이너 API를 사용한다.
from transformers import Trainer
trainer = Trainer(
model,
training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["validation"],
data_collator=data_collator,
processing_class=tokenizer
)
trainer.train()
학습 시 Loss 계산 및 BackWard, Forward, Evalutation, Save, Logging 연산들을 대신 해준다.
그리고, 실제로 trainer.train() 과정을 통해 학습을 진행한다.
이제 여러 시간을 거쳐 학습이 완료되면, Validation 과정을 거쳐 검증 데이터를 가지고 추론한다.
predictions = trainer.predict(tokenized_datasets["validation"])
그 결과값을 벡터 데이터에서 자연어 데이터로 처리하는 과정을 또 거친다 (사람이 이해하기 편해야 하므로)
import numpy as np
preds = np.argmax(predictions.preditions, axis=1)
그래서 그 데이터를 기반으로 성능 평가 단계를 거친다.
import evaluate
metric = evaluate.load("glue","mrpc")
metric.compute(predictions=preds, references=predictions.label_ids)
그리고 수정 후 다시 트레이닝 하는 과정을 여러번 거치는 것이다.
training_args = TrainingArguments("test-trainer", evalutation_strategy="epoch")
'AI > LLM' 카테고리의 다른 글
| 허깅 페이스(Hugging Face) - 감정 분석 앱 (6) (0) | 2026.06.05 |
|---|---|
| 허깅 페이스(Hugging Face) - 멀티 모달 (5) (0) | 2026.06.02 |
| 허깅 페이스(Hugging Face) - 데이터 파인튜닝 프로세싱 (3) (0) | 2026.05.28 |
| AI 활용 - 클로드 코드 스킬(Claude Code Skills)이란? (0) | 2026.05.27 |
| AI 활용 - 클로드 코드로 AI 개발 워크플로우 짜기 (0) | 2026.05.25 |