RoBERTa 실전 사용 — 파이프라인과 분류

RoBERTa 실전 사용

RoBERTa는 원시 모델로 마스크드 언어 모델링에 쓸 수 있지만, 실제로는 다운스트림 태스크에 파인튜닝해 쓰는 게 주 목적이에요. 시퀀스 분류·토큰 분류·질의응답처럼 문장 전체로 판단하는 태스크에 잘 맞아요.

출처: https://huggingface.co/FacebookAI/roberta-base

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

더 알아보기