LLM 25일 코스 - Day 13: Transformers 라이브러리 시작하기

Day 13: Transformers 라이브러리 시작하기

Hugging Face Transformers는 사전학습된 수천 개의 모델을 몇 줄의 코드로 사용할 수 있게 해주는 라이브러리입니다. 오늘은 설치부터 핵심 기능인 pipeline()까지 빠르게 살펴봅니다.

설치와 기본 설정

# 설치
# pip install transformers torch

from transformers import pipeline

# 감성 분석 파이프라인 생성
classifier = pipeline("sentiment-analysis")
result = classifier("이 영화 정말 재미있었어요!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.9998}]

# 여러 문장을 한번에 처리
texts = ["오늘 날씨가 좋다", "서비스가 너무 불친절해요"]
results = classifier(texts)
for text, res in zip(texts, results):
    print(f"{text} -> {res['label']} ({res['score']:.4f})")

pipeline()으로 다양한 태스크 수행

pipeline() 함수 하나로 번역, 요약, 텍스트 생성 등 다양한 NLP 태스크를 수행할 수 있습니다. 내부적으로 모델과 토크나이저를 자동으로 다운로드합니다.

from transformers import pipeline

# 텍스트 요약
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")
article = """
인공지능 기술이 빠르게 발전하면서 다양한 산업에 영향을 미치고 있다.
특히 대규모 언어 모델은 텍스트 생성, 번역, 코드 작성 등 여러 분야에서
인간 수준의 성능을 보여주고 있다. 기업들은 이러한 기술을 활용하여
업무 효율성을 높이고 새로운 서비스를 개발하고 있다.
"""
summary = summarizer(article, max_length=50, min_length=10)
print(summary[0]["summary_text"])

# 번역 (영어 -> 프랑스어)
translator = pipeline("translation_en_to_fr", model="Helsinki-NLP/opus-mt-en-fr")
print(translator("Hello, how are you today?"))

AutoModel과 AutoTokenizer로 세밀한 제어

pipeline()이 편리하지만, 모델과 토크나이저를 직접 로드하면 더 세밀하게 제어할 수 있습니다.

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)

# GPU가 있으면 GPU로 이동
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = model.to(device)
print(f"모델이 {device}에서 실행됩니다.")

# 토큰화 후 모델에 직접 입력
inputs = tokenizer("Transformers library is amazing!", return_tensors="pt").to(device)
with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits
    predicted_class = torch.argmax(logits, dim=-1).item()
    print(f"예측 클래스: {predicted_class}")

pipeline()은 빠른 프로토타이핑에, AutoModel/AutoTokenizer 조합은 커스텀 로직이 필요할 때 사용합니다. 두 가지 방법을 상황에 맞게 선택하세요.

오늘의 연습문제

  1. pipeline("zero-shot-classification")을 사용하여 임의의 뉴스 기사 텍스트를 “정치”, “경제”, “스포츠”, “기술” 카테고리로 분류해보세요.
  2. pipeline("text-generation")으로 “인공지능의 미래는”이라는 프롬프트에 이어질 문장을 3개 생성해보세요. num_return_sequences 파라미터를 활용합니다.
  3. AutoTokenizer로 한국어 문장 3개를 토큰화하고, 각 문장의 토큰 개수와 토큰 리스트를 출력해보세요. 모델은 bert-base-multilingual-cased를 사용합니다.

이 글이 도움이 되었나요?