지난 포스트(Transformers와 Tensorflow를 활용한 BERT Fine-tuning)에 이어,
이번에는 HuggingFace Model Hub에 학습된 모델을 포팅하는 방법에 소개하고자 한다.
HuggingFace Model Hub는 코드 공유 저장소인 github와 유사하게 각자 개인들이 학습한 언어모델을 다수에게 공유하는 모델 저장소이다.
BERT, RoBERTa, GPT, XML, T5 등 다양한 언어 모델을 지원하며, PyTorch, Tensorflow, JAX, ONNX 등 다양한 딥러닝 프레임워크를 지원한다.
또한 사용법도 단지 transformers 라이브러리에서 from_pretrained()
메소드에 모델의 이름을 넣어주면 곧바로 Hub로 부터 모델을 다운로드 및 로드할 수 있을 정도로 손쉽게 사용할 수 있다.
HuggingFace Model Hub는 기본적으로 Git을 통해 모델 저장소로 모델을 업로드한다.
하지만 git의 경우 기본적으로 최대 100MB로 업로드 파일의 사이즈에 제한이 걸려있기 때문에 사이즈가 큰 언어모델을 업로드하기 위해서는 Git LFS(Large File Storage)를 이용해야 한다.
# Download
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# Install
sudo apt-get install git-lfs
우선 curl 명령어로 git-lfs를 패키지를 다운로드 후 install 명령어로 설치해준다.
cd [your-project-dir]
git lfs install
이후, git-lfs를 사용하려는 프로젝트 디렉토리로 이동 후 git lfs install
를 통해 git을 init한다
git config --global user.email "your-email"
git config --global user.name "your-name"
마지막으로 모델을 내 huggingface 계정 저장소로 업로드하기 위해, huggingface의 계정 이메일과 이름을 git config에 설정해주면 git-lfs 설정은 완료된다.
hub로 모델을 포팅하는 방법은 Python내에서 이용하는 방법과 Terminal을 이용하는 방법이 있다.
Python내에서 모델을 porting하는 방법은 단지 push_to_hub()
라는 메소드를 통해 쉽게 할 수 있다. push_to_hub()
메소드에 모델명 및 API Token 정보만 파라미터로 전달해주면 Hub에 repository 생성 및 모델 포팅까지 한번에 이루어진다.
📌 자세한 내용은 공식 document 참고
## repo
MODEL_SAVE_REPO = 'repo-name' # ex) 'my-bert-fine-tuned'
HUGGINGFACE_AUTO_TOKEN = 'your-api-token' # https://huggingface.co/settings/token
## Push to huggingface-hub
model.push_to_hub(
MODEL_SAVE_HUB_PATH,
use_temp_dir=True,
use_auth_token=HUGGINGFACE_AUTH_TOKEN
)
tokenizer.push_to_hub(
MODEL_SAVE_HUB_PATH,
use_temp_dir=True,
use_auth_token=HUGGINGFACE_AUTH_TOKEN
)
API Token의 경우 본인 계정 로그인 후 https://huggingface.co/settings/token 해당 링크에서 확인할 수 있으며, use_auth_token
에 값을 전달해준다.
use_temp_dir
의 default값은 False인데, True로 지정할 경우 local 디렉토리에 모델을 저장하지 않고 hub로만 모델을 porting한다. local에 모델을 저장하고 싶을 경우 False로 두면 된다.
Create a repository
# login
transformers-cli login
# create a repo
# transformers-cli repo create [your-huggingface-model-repository-url]
transformers-cli repo create 'my-bert-fine-tuned' # example
terminal에서 사용할 경우, 우선 repository를 생성해야하며 위의 명령어를 사용한다.
📌 repository 생성은 termianl 말고 huggingface 홈페이지에서도 가능하다.
Clone the repository
# git clone [your-huggingface-model-repository-url]
git clone https://huggingface.co/jaehyeong/my-bert-fine-tuned # example
위에서 생성한 repository를 내 local 디렉토리로 clone한다.
Upload your model to hub
# cd [your-huggingface-model-repository-dir]
cd my-bert-fine-tuned
git add .
git commit -m 'commit-message'
git push origin main
clone받은 repository에 저장된 모델을 이동 후, git 명령어를 통해 hub로 모델을 포팅한다.
python에서 내가 업로드한 모델을 사용하고자 할 경우, 내가 업로드한 모델 저장소의 이름을 transformers의 from_pretrained()
메소드에 계정명/모델 저장소 이름
형식으로 전달해주면 바로 로드가 가능하다!
(아래는 예시 코드)
from transformers import BertTokenizer, BertModel
# Load Tokenizer
tokenizer = BertTokenizer.from_pretrained('jaehyeong/my-bert-fine-tuned')
# Load Model
model = BertModel.from_pretrained('jaehyeong/my-bert-fine-tuned')
안녕하세요 구글링하다 댓글남깁니다.
코랩에서 그라디오로 동작여부를 확인한 후
이제 허깅페이스에 올리려고하는데
코랩에서 pip install ~ 이렇게 설치하는 부분을
허깅페이스에서는 어떻게 해야할까요?
keras-cv와 한영번역을 위한 transper만 불러오면 됩니다.