RoBERTa 실전 사용 — 파이프라인과 분류
RoBERTa 실전 사용
RoBERTa는 원시 모델로 마스크드 언어 모델링에 쓸 수 있지만, 실제로는 다운스트림 태스크에 파인튜닝해 쓰는 게 주 목적이에요. 시퀀스 분류·토큰 분류·질의응답처럼 문장 전체로 판단하는 태스크에 잘 맞아요.
fill-mask 파이프라인
from transformers import pipeline
pipeline = pipeline(
task="fill-mask",
model="FacebookAI/roberta-base",
device=0
)
pipeline("Plants create <mask> through a process known as photosynthesis.")
마스크드 LM 모델 직접 로드
import torch
from transformers import AutoModelForMaskedLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
model = AutoModelForMaskedLM.from_pretrained(
"FacebookAI/roberta-base",
device_map="auto",
attn_implementation="sdpa"
)
시퀀스 분류
import torch
from transformers import AutoTokenizer, RobertaForSequenceClassification
tokenizer = AutoTokenizer.from_pretrained("FacebookAI/roberta-base")
model = RobertaForSequenceClassification.from_pretrained("FacebookAI/roberta-base")
inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
평가 결과 (GLUE)
파인튜닝했을 때 GLUE 테스트 성적이에요.
| Task | MNLI | QQP | QNLI | SST-2 | CoLA | STS-B | MRPC | RTE |
|---|---|---|---|---|---|---|---|---|
| 87.6 | 91.9 | 92.8 | 94.8 | 63.6 | 91.2 | 90.2 | 78.7 |