0. Hugging Face 소개
허깅페이스는 머신러닝 기술, 특히 딥러닝 모델의 손쉬운 공유 및 배포, 사용, 훈련을 가능하게 하는 생태계이다.
- 기존의 성능이 검증된 pre-trained 모델을 쉽게 (무료로) 다운 받아서 사용할 수 있고,
- 본인의 task에 맞게 모델을 fine-tuning하는 것도 가능하다.
- 스스로 제작/파인튜닝한 딥러닝 모델을 공유할 수도 있다.
1. Pre-trained 모델 사용하기
- 허깅페이스는 Transformers라는 파이썬 패키지를 통해 Transformer류 모델의 serving을 간편하게 구현한다.
pip install transformers
from transformers import pipeline
- pipeline 함수는 허깅페이스에 업로드된 모델을 불러오는 API 기능을 제공한다.
- 먼저, 해결하려는 과제에 맞는 모델을 찾아야 한다. 허깅페이스에 접속해서 Models 탭으로 이동하면 아래와 같은 화면이 나온다. 메타에서 llama 모델을 공개한지 얼마 안 되어서 그런지 llama 모델로 뒤덮여있다.
- Text classification 문제를 해결하는 모델을 찾아보자. 블로그 글 작성 시점에서 가장 다운로드를 많이 받은 모델은 roberta-base-go_emotions인데, roberta 모델을 베이스로 해서 go-emotions 데이터셋으로 훈련한 모델이다. 주어진 자연어 텍스트의 감성을 분류하는 모델이라고 한다.
- 좌측 탭에 표시된 task와 모델 주소를 pipeline 함수에 입력하면 모델을 순식간에 객체로 불러올 수 있다.
sentiment_classification = pipeline("text-classification", "SamLowe/roberta-base-go_emotions")
- "today is payday!"라는 문장을 넣었더니 excitement 클래스에 속할 확률이 50.4%로 가장 높았다.
sentiment_classification("today is payday!")
>>> [{'label': 'excitement', 'score': 0.5041834115982056}]
2. 모델 다운받기
- 방금 pipeline으로 불러온 모델은 대략 500MB 정도 되는 모델이다. 사용할 때마다 API로 호출해서 쓰기에는 부담스러운 크기이다.
- 당연히 허깅페이스에서는 모델을 로컬에 다운받는 기능도 제공한다.
- 이번에는 Zero-shot classification 모델에 속하는 facebook의 bart-large-mnli 모델을 사용해보자. 어떤 모델이 되었건 간에 모델 페이지로 들어가면 File and Versions 라는 탭이 있다. 이 탭으로 이동하면 아래와 같은 화면이 나오는데,
- 여기서 모든 파일을 다 다운로드 받아주면 된다.
- Transformers 패키지가 설치된 가상환경 내 폴더로 다운 받은 파일들을 옮겨준 후에는, 아까와 동일하게 pipeline 함수를 쓰되, 로컬 폴더 주소를 입력하면 된다.
classifier = pipeline("zero-shot-classification",
model='C:/Python_/pretrained_models/bart-large-mnli')
- 다운받은 모델은 자연어 문장과 후보 레이블을 알려주면, 입력된 자연어 문장과 가장 가까운 후보 레이블이 무엇인지 return하는 모델이다. 예를 들어
classifier("This position requires statistical background and programming skill",
candidate_labels = ['Data Analyst', 'Head hunter', 'Financial manager'])
>>> {'sequence': 'This position requires statistical background and programming skill',
'labels': ['Data Analyst', 'Financial manager', 'Head hunter'],
'scores': [0.7551137208938599, 0.14233411848545074, 0.10255210101604462]}
- "This position requires statistical background and programming skill" 이라는 문장은 열거한 직무들 중에서 Data analyst와 가장 가깝다는 결과를 준다.
'유용한것 이것저것' 카테고리의 다른 글
SQL - 프로그래머스 문제 몇 가지 기록 (0) | 2024.03.09 |
---|---|
Selenium으로 웹크롤링 자동화 구현하기 (0) | 2023.09.18 |
Hugging Face 사용법 (2) Fine-tuning (0) | 2023.07.26 |