허깅페이스(Hugging Face)
자연어 처리(NLP) 중심의 라이브러리와 수천 개의 사전학습 모델을 제공하는 플랫폼
대화형 AI(챗봇)을 만드는 스타트업으로 출발 → 현재 AI 오픈소스 생태계를 선도하는 커뮤니티로 성장
2016년 프랑스에서 설립
현재 뉴욕과 파리에 본사를 두고 있음
AI 오픈소스 생태계 확장에 기여하며, GPT, T5 등 다양한 대규모 모델을 쉽게 접할 수 있도록 도움
허깅페이스라는 이름은 '🤗' 이모지에서 따옴
따뜻하고 친근한 느낌을 주기 때문에, 어려운 AI 기술도 누구나 쉽게 다가갈 수 있도록 하겠다는 뜻을 담고 있음
- Transformers 라이브러리
BERT, GPT, T5, RoBERTa 등 유명 NLP 모델들을 쉽게 불러와 사용할 수 있도록 도와주는 Python 라이브러리
PyTorch와 TensorFlow 모두 지원 - 모델 허브(Model Hub)
수천 개의 사전 학습(pre-trained) 모델이 공개되어 있어, 클릭 몇 번으로 모델을 가져와 바로 사용 가능
모델마다 사용 예제, 라이선스, 평가 지표 등도 함께 제공 - 커뮤니티 중심
전 세계의 연구자, 개발자, 기업들이 함께 참여하는 오픈소스 중심의 커뮤니티
→ 누구든지 모델을 업로드하고 공유할 수 있으며, 토론도 활발히 진행됨
장점
- 쉬운 접근성
직관적인 문서와 튜토리얼, 라이브 데모로 초보자도 쉽게 접근 가능 - 모델 다양성
NLP뿐만 아니라 최근에는 컴퓨터 비전(CV), 음성 처리, 멀티모달 등으로 확장 중 - 오픈소스 무료 제공
연구와 학습을 위한 자유로운 접근 허용 - 커뮤니티의 힘
빠른 질문 응답, 다양한 사용 사례 공유, 지속적인 업데이트
단점
- 리소스 요구량
일부 모델은 실행 시 수 GB의 메모리를 사용하며, 고성능 GPU가 필요 - 초기 환경 설정
초보자가 로컬 환경에서 직접 세팅할 경우, 약간의 진입 장벽 존재 - NLP 중심
여전히 NLP에 가장 최적화되어 있으며, 다른 분야는 상대적으로 발전 속도가 느림
활용 분야
텍스트 생성 | 소설, 시, 이메일 자동 생성 등 |
감정 분석 | 리뷰 긍/부정 판별, 감정 분류 |
번역 | 다국어 텍스트 번역 |
요약 | 긴 문서의 핵심 요약 |
챗봇 제작 | 단순 질의응답부터 맞춤형 AI 챗봇까지 |
→ 모델을 훈련시키거나 미세 조정하여 AI 모델 커스터마이징 가능
transformers 설치
pip install transformers
transformers 라이브러리 사용 실습
- tokenizer로 입력 텍스트 → 숫자 토큰(input_ids)
- 모델에 input_ids 입력 → 다음 단어 예측(generate)
- 출력 토큰 → 텍스트로 디코딩(decode)
# GPT-2 모델을 위한 토크나이저와 언어모델 클래스 임포트
from transformers import GPT2Tokenizer, GPT2LMHeadModel
# 사전학습된 GPT-2 토크나이저 불러오기 (단어를 숫자로 바꿔줌)
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
# 사전학습된 GPT-2 언어모델 불러오기
model = GPT2LMHeadModel.from_pretrained("gpt2")
# 입력할 문장
text = "You are SO cute"
# 텍스트를 토크나이저로 숫자 토큰으로 변환 (PyTorch 텐서로 반환)
encoded_input = tokenizer(text, return_tensors="pt")
# 입력 텐서를 확인해볼 수 있음 (input_ids, attention_mask 등 포함)
encoded_input # 이 줄은 중간 결과 확인용
"""
{'input_ids': tensor([[ 1639, 389, 12809, 13779]]), 'attention_mask': tensor([[1, 1, 1, 1]])}
"""
# 모델에 입력을 넣고 텍스트 생성하기
output = model.generate(encoded_input['input_ids'], max_length=50, do_sample=True, temperature=1.0, repetition_penalty=5.0)
# 생성된 토큰을 다시 사람이 읽을 수 있는 텍스트로 변환
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
# 최종 생성된 텍스트 출력
generated_text
"""
"You are SO cute.\nI can tell you right now, that every thing I am doing is wrong and if there was ever a time she didn't come back to pick me up? It never ends well sometimes….."
"""
generate() 주요 옵션 / 기본값
max_length | 생성할 최대 토큰 수 (입력 포함) | 20 |
min_length | 최소 생성 길이 (초기 종료 방지용) | 0 |
do_sample | 샘플링 여부 (True면 랜덤성 추가) | False |
temperature | 샘플링 확률 조절 (높을수록 창의적) | 1.0 |
top_k | 상위 k개 단어만 고려 (랜덤성 조절) | 50 |
top_p | 상위 누적 확률 p 이하 단어만 선택(nucleus sampling) | 1.0 |
repetition_penalty | 같은 말 반복 방지 계수 | 1.0 |
num_return_sequences | 결과 생성 개수 | 1 |
early_stopping | EOS 토큰 나오면 조기 종료 | False |
*EOS(End Of Sentence / End Of Sequence) 토큰
문장/문단/문장열이 끝났다는 것을 알려주는 특수 토큰
모델마다 EOS 토큰이 다를 수 있음
직접 모델을 구축, 학습할 때 생길 수 있는 문제
- 대형 모델이라면 학습이 힘듦
데이터 및 컴퓨팅 자원의 한계 : Transformer 모델은 특히나 방대한 데이터를 필요로 하고(일반적으로 수십 기가바이트 이상 - GPU 메모리), 학습에 많은 시간이 걸리기 때문에 몇 주간의 학습 시간이 필요할 수도 있음
모델 크기와 메모리 사용량 : 모델이 커질수록 메모리 사용량도 기하급수적으로 늘어남 → 개인이 보유한 일반적인 컴퓨터나 단일 GPU로는 대형 모델들을 학습시키기 어려움 - 복잡한 모델은 직접 만들기 힘듦
구현의 어려움: 많은 지식과 경험 필요
하이퍼 파라미터 튜닝: 학습률, 모델 크기, 레이어 수 등 다양한 하이퍼파라미터를 적절히 조절하는 과정에서 시행착오가 많을 수 있음 (최적의 파라미터를 찾기 위해서는 많은 실험과 시간이 필요)
→ 불러온 모델은 이미 방대한 데이터셋으로 학습된 상태이기 때문에, 추가적인 학습 없이도 다양한 작업에 바로 활용 가능하지만 문제점도 존재
- 맞춤화의 어려움
사전 학습된 모델은 특정 데이터나 작업에 대해 학습된 상태이기 때문에, 다른 작업에 맞추려면 추가적인 미세 조정(Fine-Tuning)이 필요함 - 비용 문제
미세 조정이나 추가 학습을 하려면 대형 클라우드 서비스나 고성능 장비가 필요할 수 있으며, 상당한 비용을 요구할 수 있음
문제 극복 방안
클라우드 서비스 활용
Google Colab, AWS와 같은 클라우드 기반의 GPU 서비스를 활용
무료 또는 저렴한 비용으로 GPU 자원을 사용 가능
사전 학습된 모델을 적절히 활용
경량화 모델 사용
DistilBERT나 TinyBERT와 같은 경량화된 모델은 대형 모델의 성능을 유지하면서도 자원 소모를 줄일 수 있는 대안이 될 수 있음
'⊢ AI 모델 활용' 카테고리의 다른 글
사전 학습과 파인 튜닝 (2) | 2025.03.25 |
---|---|
Hugging Face와 Transformers 라이브러리로 살펴본 NLP 모델들 (0) | 2025.03.24 |
API(Application Programming Interface)로 인공지능 활용하기 (0) | 2025.03.23 |
GitHub의 Open Project로 AI 활용하기 (0) | 2025.03.23 |
AI 활용에 대한 이해: 연구와 활용의 차이 (0) | 2025.03.21 |