본문 바로가기
데이터 AI

[LLM] Hugging Face란? / Transformers 라이브러리 사용해보기

by lemonpie611 2025. 3. 26.

1. Hugging Face란?

Hugging Face는 다양한 사전 학습된 모델을 제공하는 오픈소스 플랫폼으로, 텍스트, 이미지, 오디오 등 다양한 데이터를 처리할 수 있는 언어 모델(Large Language Models, LLMs)을 쉽게 사용할 수 있게 도와준다. 특히 Transformer 기반의 모델들을 쉽게 다운로드하고 훈련할 수 있는 API와 도구들을 제공한다.

 

2. Hugging Face의 주요 기능

1) Transformers 라이브러리

  • 트랜스포머 기반 모델들(BERT, GPT, RoBERTa 등)을 손쉽게 사용할 수 있게 도와주는 핵심 라이브러리이다.
  • PyTorch와 TensorFlow 모두와 호환되며, 자연어 처리(NLP)뿐만 아니라 이미지 처리와 음성 인식 같은 다른 분야에도 활용 가능하다.

2) Datasets 라이브러리

  • 모델 훈련에 필요한 공개 데이터셋을 손쉽게 다운로드하고 처리할 수 있는 도구로, 데이터 준비 과정을 효율적으로 단축시킬 수 있으며, 자동으로 데이터 캐시 처리가 되어 효율적인 데이터 파이프라인 구축이 가능하다.

3) 모델 허브 (Model Hub)

  • 수천 개의 사전 학습된 모델을 제공하는 플랫폼으로, 사용자는 원하는 모델을 쉽게 검색하고 다운로드할 수 있다.
  • 성능 지표, 사용 방법, 관련 논문 등이 함께 제공된다.

4) Spaces

  • AI 애플리케이션을 빠르게 배포하고 공유할 수 있는 플랫폼이다.
  • 자신이 만든 모델이나 애플리케이션을 웹 인터페이스를 통해 다른 사용자들과 손쉽게 공유할 수 있으며, 데모나 프로토타입을 빠르게 배포하고 피드백을 받을 수 있다.

5) API와 인퍼런스 API

  • Hugging Face는 RESTful API를 제공하여 클라우드에서 AI 모델을 바로 사용할 수 있도록 한다.
  • 모델을 별도의 서버나 호스팅 없이 간단한 API 호출만으로 애플리케이션에 AI 기능을 통합할 수 있습니다.

 

3. Hugging Face의 Transformers 라이브러리 사용해보기

Hugging Face의 대표적인 라이브러리인 Transformers는, 사전학습된 BERT 모델을 사용해 문장을 토큰화하여 문장의 감정 분석을 수행할 수 있다.

 

Hugging Face에 로그인 후 Models 탭에 들어가면, 다음과 같이 업로드된 모델들을 볼 수 있다. 여기서, 우측의 Natural Language Processing의 Text Classification을 클릭해 문장 분석을 수행하는 모델을 찾아보자.

 

내가 선택한 모델은 emotion_text_classifier이다. 감정 분석을 할 수 있는 패키지라고 한다.

감정 카테고리는 anger, disgust, fear, joy, neutral, sadness, surprise 7가지로 분류된다고 한다.

사용 방법도 친절하게 안내되어 있다.

1) Hugging Face 라이브러리 설치

터미널에 다음 명령어를 실행한다.

pip install transformers

 

transformers 라이브러리에서 pipeline을 import 한다.

pipeline이란 작업을 수행하기 위한 기본 설정을 도와주는 것으로, 'sentiment-analysis'로 감정 분석 파이프라인을 생성 시, 내부적으로 BERT와 같은 사전 학습된 모델이 자동으로 불러와진다.

from transformers import pipeline

2) BERT 모델을 사용한 문장 감정 분석

# 감정 분석을 위한 파이프라인 생성
classifier = pipeline("sentiment-analysis", model="michellejieli/emotion_text_classifier")

# 감정 분석을 진행할 문장
sentence1 = "I love this!"
sentence2 = "I don't like it.."

# 감정 분석 실행
result1 = classifier(sentence1)
result2 = classifier(sentence2)

# 결과
print(result1)
print(result2)
  • classifier(sentence): sentence의 감정을 분석. POSITIVE 혹은 NEGATIVE으로 출력됨.

3) 결과

[{'label': 'joy', 'score': 0.9887555241584778}]
[{'label': 'disgust', 'score': 0.8472950458526611}]

 

첫번째 'I love this!' 문장은 약 98.9%로 joy에 해당하는 감정을 나타낸다고 분석되었고, 두번째 'I don't like it..' 문장은 약 84.7%의 확률로 disgust에 해당하는 감정을 나타낸다고 분석하였다.