fastai와 Hugging Face Hub 통합
Hugging Face는 fastai 라이브러리를 Hugging Face Hub에 통합하여 사용자가 단 한 줄의 Python 코드로 fastai 모델을 공유, 업로드 및 다운로드할 수 있게 했습니다. 이 통합을 통해 fastai 실무자들이 모델 호스팅, 버전 관리, 커뮤니티 탐색을 위한 Hub의 중앙 플랫폼을 활용할 수 있어 사전 학습된 모델에 대한 접근성을 민주화합니다.
fastai Learner를 위한 직접 Hub 통합
fastai 실무자들은 이제 huggingface_hub Python 라이브러리를 사용해 Hugging Face Hub와 상호작용할 수 있습니다. fastai의 Learner는 모델, 데이터 로더, 손실 함수를 하나로 묶은 것으로, Hub에 손쉽게 푸시하거나 풀할 수 있습니다.
설치 및 설정
이 기능을 사용하려면 Hugging Face 계정과 huggingface_hub 라이브러리가 필요합니다. 설치는 "fastai" extra를 지정하여 모든 필요한 종속성(fastai>=2.4, fastcore>=1.3.27, toml 포함)이 설치되도록 수행할 수 있습니다:
pip install huggingface_hub["fastai"]
모델을 Hub에 업로드하기
사용자는 push_to_hub_fastai 함수를 사용해 Learner 객체를 Hub에 공유할 수 있습니다. 이를 위해서는 write 토큰을 통한 인증이 필요하며, 이는 huggingface-cli login 명령, Python 노트북의 notebook_login() 함수, 혹은 토큰을 함수에 직접 전달하는 방식으로 처리할 수 있습니다.
from huggingface_hub import push_to_hub_fastai
# repo_id follows the format "namespace/repo_name"
repo_id = "username/model-name"
push_to_hub_fastai(learner=learn, repo_id=repo_id)
업로드가 완료되면 Hub가 자동으로 모델 카드를 생성하며, 사용자는 재현성 및 발견성을 높이기 위해 이를 편집하는 것이 권장됩니다.
Hub에서 모델 로드하기
Hub에서 사전 학습된 Learner를 로드하려면 from_pretrained_fastai 함수를 사용하면 되며, 이를 통해 사용자는 즉시 예측을 수행하거나 모델을 전이 학습의 기반으로 활용할 수 있습니다.
from huggingface_hub import from_pretrained_fastai
repo_id = "username/model-name"
learner = from_pretrained_fastai(repo_id)
fastai와 Transformers를 Blurr와 결합하기
표준 fastai 모델을 넘어, 이 통합은 fastai 개발자를 위해 Hugging Face transformers를 학습 및 배포할 수 있도록 설계된 Blurr 라이브러리까지 확장됩니다.
고수준 Blurr API를 사용하면 개발자는 Hub에서 transformer 모델(distilbert-base-uncased 등)을 로드하고, 이를 fastai 생태계 내에서 Blearner로 학습시킨 뒤, 동일한 push_to_hub_fastai와 from_pretrained_fastai 함수를 이용해 모델을 Hub에 공유하고 다시 로드할 수 있습니다.
fastai 모델을 위한 Hub 기능
Hub에 fastai 모델을 공유하면 로컬 저장소에 비해 여러 기술적 이점을 제공합니다:
- Version Control: 모델은 Git 저장소로 저장되며, 대용량 파일을 위한 git-lfs를 통한 전체 버전 관리와 커밋 및 브랜치를 지원합니다.
- Discoverability: 사용자는 fastai 라이브러리 전용으로 Hugging Face Model Hub를 필터링하여 기존 모델을 찾고 탐색할 수 있습니다.
- Reproducibility: 모델 카드를 사용하면 실무자가 학습 과정과 모델 기능을 문서화할 수 있어, 다른 사람들이 결과를 재현할 수 있습니다.