Bigdata

Huggingface - pipelines 설치 및 사용

올엠 2025. 8. 6. 22:03
반응형

Hugging Face 에서 제공하는 pipelines는 간편하게 AI를 무료로 이용할 수 있는 기능을 제공한다. 고수준의 라이브러리 단 몇줄로 AI를 활용할 수 있다. 여기에서는 어떻게 이용할 수 있는지 설치 부터 대표적인 이용 방법을 정리해본다.


1. 라이브러리 설치

!pip install -q --upgrade torch==2.5.1+cu124 torchvision==0.20.1+cu124 torchaudio==2.5.1+cu124 --index-url https://download.pytorch.org/whl/cu124
!pip install -q --upgrade transformers==4.48.3 datasets==3.2.0 diffusers
  • 최신 버전의 PyTorch 및 관련 라이브러리 설치 (cu124는 CUDA 12.4 버전용).
  • Hugging Face의 transformers, datasets, diffusers 라이브러리 설치.

2. 라이브러리 임포트

import torch
from google.colab import userdata
from huggingface_hub import login
from transformers import pipeline
from diffusers import DiffusionPipeline
from datasets import load_dataset
import soundfile as sf
from IPython.display import Audio
  • 필요한 라이브러리들을 불러옵니다.
  • userdata: Colab에서 사용자 토큰을 안전하게 불러오기 위해 사용.
  • pipeline: Hugging Face의 다양한 작업을 쉽게 수행할 수 있는 API.

3. Hugging Face 로그인

hf_token = userdata.get('HF_TOKEN')
login(hf_token, add_to_git_credential=True)
  • Hugging Face 토큰을 불러와 로그인합니다.
  • 모델 다운로드 및 사용 권한을 위해 필요합니다.

이제부터는 이용방법들이다.

감정 분석 (Sentiment Analysis)

classifier = pipeline("sentiment-analysis", model="nlpai-lab/korean-sentiment-analysis", device="cuda")
result = classifier("요즘 인공지능 공부가 너무 재미있어요!")
print(result)
  • 문장의 감정을 분석합니다 (긍정/부정).
  • GPU를 사용하여 빠르게 처리.

개체명 인식 (Named Entity Recognition)

ner = pipeline("ner", model="kykim/bert-kor-base", grouped_entities=True, device="cuda")
result = ner("윤석열 대통령은 서울에서 회의를 가졌습니다.")
print(result)
  • 문장에서 사람, 장소, 조직 등의 개체를 인식합니다.

질문 응답 (Question Answering)

question_answerer = pipeline("question-answering", model="deepset/bert-base-cased-squad2", device="cuda")
context = "윤석열은 대한민국의 대통령이다."
question = "대한민국 대통령은 누구입니까?"
result = question_answerer(question=question, context=context)
print(result)
  • 주어진 문맥을 기반으로 질문에 답변합니다.

요약 (Summarization)

summarizer = pipeline("summarization", model="knkarthick/bert-base-cnn-korean", device="cuda")
text = """허깅페이스의 트랜스포머 라이브러리는 자연어 처리 분야에서 매우 강력하고 유용한 도구입니다.
텍스트 분류, 개체명 인식, 질문 응답 등 다양한 작업을 수행할 수 있으며, 오픈소스 커뮤니티에서 널리 사용되고 있습니다.
"""
summary = summarizer(text, max_length=50, min_length=25, do_sample=False)
print(summary[0]['summary_text'])
  • 긴 텍스트를 간결하게 요약합니다.

번역 (Translation)

translator = pipeline("translation_en_to_ko", model="Helsinki-NLP/opus-mt-en-ko", device="cuda")
result = translator("The Hugging Face Transformers library is amazing.")
print(result[0]['translation_text'])
  • 영어 → 한국어 번역.

제로샷 분류 (Zero-shot Classification)

classifier = pipeline("zero-shot-classification", model="joeddav/xlm-roberta-large-xnli", device="cuda")
result = classifier("허깅페이스 라이브러리는 정말 혁신적이에요!", candidate_labels=["기술", "스포츠", "정치"])
print(result)
  • 사전 학습 없이 문장을 주어진 카테고리 중 하나로 분류.

텍스트 생성 (Text Generation)

generator = pipeline("text-generation", model="skt/kogpt2-base-v2", device="cuda")
result = generator("인공지능 기술은 앞으로", max_length=50, do_sample=True)
print(result[0]['generated_text'])
  • 주어진 문장을 기반으로 이어지는 텍스트 생성.

이미지 생성 (Text-to-Image)

image_gen = DiffusionPipeline.from_pretrained(
    "stabilityai/stable-diffusion-2",
    torch_dtype=torch.float16,
    use_safetensors=True,
    variant="fp16"
).to("cuda")

text = "인공지능을 공부하는 한국 학생들, 미래적인 분위기"
image = image_gen(prompt=text).images[0]
image
  • 텍스트를 기반으로 이미지를 생성 (Stable Diffusion 사용).

음성 생성 (Text-to-Speech)

synthesiser = pipeline("text-to-speech", "microsoft/speecht5_tts", device='cuda')

embeddings_dataset = load_dataset("Matthijs/cmu-arctic-xvectors", split="validation")
speaker_embedding = torch.tensor(embeddings_dataset[7306]["xvector"]).unsqueeze(0)

speech = synthesiser("안녕하세요. 인공지능 엔지니어의 길을 걷고 있는 여러분을 응원합니다!", forward_params={"speaker_embeddings": speaker_embedding})

sf.write("speech.wav", speech["audio"], samplerate=speech["sampling_rate"])
Audio("speech.wav")
  • 텍스트를 음성으로 변환.
  • 특정 화자의 음색을 반영하기 위해 xvector 임베딩 사용
반응형