Git과 HTTP 패러다임
huggingface_hub 라이브러리는 git 기반 저장소(모델, 데이터셋 또는 Spaces)의 모음인 Hugging Face Hub와 상호작용하기 위한 라이브러리입니다. huggingface_hub를 사용하여 Hub에 액세스하는 주요 방법은 두 가지입니다.
첫 번째 방법인 이른바 “git 기반” 방법은 터미널에서 표준 git 명령어를 직접 사용하는 데 기반합니다. 이 방법을 사용하면 저장소를 클론하고 커밋을 생성하며 변경 사항을 수동으로 푸시할 수 있습니다. 두 번째 옵션인 “HTTP 기반” 방법은 HfApi 클라이언트를 사용하여 HTTP 요청을 보내는 것입니다. 각 방법의 장단점을 살펴보겠습니다.
Git: 과거의 CLI 기반 접근 방식
처음에는 대부분의 사용자가 git 명령어, 예를 들어 git clone, git add, git commit, git push, git tag, 또는 git checkout와 같은 순수한 명령어를 사용하여 Hugging Face Hub와 상호작용했습니다.
이 접근 방식은 전통적인 소프트웨어 개발과 마찬가지로, 머신에 저장소의 전체 로컬 복사본을 두고 작업할 수 있게 해줍니다. 오프라인 접근이 필요하거나 저장소의 전체 히스토리를 다루고 싶을 때 이점이 될 수 있습니다. 그러나 단점도 있습니다. 저장소를 로컬에서 최신 상태로 유지하고, 자격 증명을 처리하며, git-lfs를 통해 대용량 파일을 관리해야 하는 책임이 사용자에게 있습니다. 이는 대규모 머신러닝 모델이나 데이터셋을 다룰 때 번거로울 수 있습니다.
많은 머신러닝 워크플로에서는 추론을 위해 일부 파일만 다운로드하거나, 저장소 전체를 클론하지 않고 가중치만 변환하는 경우가 있습니다. 이러한 경우 git을 사용하는 것은 과도할 수 있으며 불필요한 복잡성을 초래할 수 있습니다.
HfApi: 유연하고 편리한 HTTP 클라이언트
HfApi 클래스는 유지보수가 번거로운 로컬 git 리포지토리의 대안을 제공하기 위해 개발되었습니다. 특히 대규모 모델이나 데이터셋을 다룰 때 이러한 번거로움이 두드러집니다. HfApi 클래스는 git 기반 워크플로우와 동일한 기능, 즉 파일 다운로드 및 푸시, 브랜치 및 태그 생성 등을 제공하지만, 동기화를 유지해야 하는 로컬 폴더가 필요하지 않습니다.
git에서 이미 제공하는 기능 외에도, HfApi 클래스는 리포지토리 관리, 효율적인 재사용을 위한 캐싱을 활용한 파일 다운로드, Hub에서 리포지토리와 메타데이터 검색, 토론/PR/댓글과 같은 커뮤니티 기능 접근, Spaces 하드웨어 및 시크릿 설정 등 추가 기능을 제공합니다.
무엇을 사용해야 하나요? 그리고 언제 사용해야 하나요?
전반적으로 HTTP 기반 방식이 모든 상황에서 huggingface_hub를 사용하는 권장 방법입니다. HfApi를 사용하면 변경 사항을 가져오고 보내고, PR, 태그, 브랜치를 관리하며, 토론에 참여하는 등 다양한 작업을 수행할 수 있습니다.
그러나 모든 git 명령어가 HfApi를 통해 사용할 수 있는 것은 아닙니다. 일부는 영원히 구현되지 않을 수 있지만, 우리는 항상 개선하여 이러한 격차를 줄이도록 노력하고 있습니다. 사용 사례가 다루어지지 않는 경우, GitHub에 이슈를 등록해 주세요. 사용자와 함께 사용자를 위해 HF 생태계를 구축하는 데 도움이 되는 피드백을 환영합니다.
HTTP 기반 HfApi를 직접적인 git 명령보다 선호하는 것은 Hugging Face Hub에서 git 버전 관리가 곧 사라질 것이라는 의미는 아닙니다. git이 유용한 워크플로에서는 항상 로컬에서 git을 사용할 수 있습니다.