Hub documentation
다음 단계
다음 단계
다음 섹션에서는 Hugging Face Hub의 Git 저장소를 최대한 활용하는 데 도움이 될 수 있는 기능과 추가 정보를 강조합니다.
리포지토리를 프로그래매틱으로 관리하는 방법
Hugging Face는 huggingface_hub 라이브러리를 통해 Python으로 리포지토리에 접근할 수 있습니다. 리포지토리 다운로드 및 파일 업로드와 같이 살펴본 작업들은 이 라이브러리를 통해 사용할 수 있으며, 다른 유용한 함수들도 제공합니다!
git을 직접 사용하려는 경우, 아래 섹션을 참고하세요.
Git에 대해 더 알아보기
Git에 대해 더 배우고 싶다면 이 Git 튜토리얼을 방문하는 것이 좋습니다. Git에 대한 더 자세한 배경 지식을 원하시면 GitHub의 Git 가이드를 참고할 수 있습니다.
브랜치 사용 방법
Git 저장소를 효과적으로 협업하고, 조기에 코드를 릴리스하지 않으면서 기능을 개발하려면 branches를 사용할 수 있습니다. Branches는 “작업 중” 코드를 “프로덕션 준비 완료” 코드와 분리할 수 있게 해주며, 여러 사람이 프로젝트에 참여하더라도 서로의 기여와 빈번하게 충돌하지 않도록 하는 추가적인 이점이 있습니다. Branches를 사용하여 실험을 각자의 브랜치에 격리하고, 브랜치를 관리하기 위한 팀 전체의 관행도 채택할 수 있습니다.
Git 브랜치에 대해 배우려면 Learn Git Branching 인터랙티브 튜토리얼을 시도해 볼 수 있습니다.
태그 사용
Git을 사용하면 커밋에 태그를 붙여 프로젝트의 마일스톤을 쉽게 기록할 수 있습니다. 따라서 Hub 저장소의 커밋에 태그를 붙여 마크할 수 있습니다. 태그 사용법에 대해 자세히 알아보려면 이 DevConnected 게시물을 방문하세요.
리포지토리 히스토리에서 중요한 커밋을 쉽게 식별할 수 있을 뿐만 아니라, Git 태그를 사용하면 A/B 테스트를 수행하고 특정 태그에서 리포지토리를 클론하는 등의 작업도 가능합니다. huggingface_hub 라이브러리도 태그를 활용한 작업을 지원하며, 예를 들어 특정 태그가 지정된 커밋에서 파일을 다운로드하는 작업이 가능합니다.
리포지토리 복제하는 방법
Git 히스토리를 보존해야 하는지에 따라 저장소를 복제하는 방법은 여러 가지가 있습니다.
Hub에서 복제
어떤 리포지토리 페이지의 오른쪽 상단에 있는 세 점을 클릭한 다음 이 모델 복제, 이 데이터셋 복제, 또는 이 Space 복제를 선택합니다. Xet 중복 제거 기술을 사용하기 때문에 이 작업은 거의 즉시 완료됩니다. 다음을 선택할 수 있습니다:
- Owner: 작성 권한이 있는 계정 또는 조직.
- 저장소 이름: 복제된 저장소의 이름입니다. 기본적으로 소스와 동일한 이름을 사용하며, 사용자의 네임스페이스 아래에 생성됩니다(예:
bigscience/bloom-560m을 복제하면your-username/bloom-560m이 생성됩니다). - 공개 범위: 복제된 저장소를 공개 또는 비공개로 설정할 수 있습니다. 비공개 저장소에 대한 자세한 내용은 여기에서 확인하세요.
모델과 데이터셋의 경우 Git 히스토리가 단일 커밋으로 압축됩니다. Spaces의 경우 전체 Git 히스토리가 보존됩니다. Spaces의 경우 공개 변수는 복사되지만, 시크릿은 수동으로 다시 입력해야 합니다.
제한 사항
일부 저장소는 복제할 수 없습니다:
- 게이트된 저장소(액세스 요청이 활성화된 모델 또는 데이터셋).
- 저자가 중복을 비활성화한 저장소.
- 크로스 리전 복제는 지원되지 않습니다(예: US 리전에 저장된 저장소는 EU 조직으로 복제할 수 없음).
프로그램을 통한 복제
huggingface_hub 라이브러리 또는 CLI를 사용하여 저장소를 복제할 수도 있습니다. 이 방법들은 위의 Hub 버튼과 동일한 서버 측 API를 사용합니다(모델과 데이터셋의 경우 Git 히스토리가 압축되고, Spaces의 경우 유지됩니다).
Python 사용:
from huggingface_hub import duplicate_repo
duplicate_repo("bigscience/bloom-560m", private=False)
duplicate_repo("openai/gdpval", repo_type="dataset")
duplicate_repo("multimodalart/dreambooth-training", repo_type="space", private=False)또는 CLI를 사용하여:
hf repos duplicate bigscience/bloom-560m
hf repos duplicate openai/gdpval --type datasetSpaces의 경우 하드웨어, 수면 시간, 저장소, 변수 및 시크릿 등 자체 설정을 구성해야 합니다. 자세한 내용은 Space 관리 가이드를 참고하세요.
대신, 저장소의 로컬 복사본을 유지하려면 hf download를 실행한 후 다른 네임스페이스로 hf upload할 수 있습니다. 이 경우에도 Git 히스토리가 보존되지 않습니다.
Git으로 수동 포크
모델/데이터셋의 Git 히스토리를 보존하거나 프로세스에 대한 더 많은 제어(예: 자체 변경 사항 위에 rebasing)가 필요하면, Git을 사용하여 저장소를 수동으로 fork할 수 있습니다.
git-xet이 설치되어 있어야 합니다. 모든 LFS 파일을 가져와서 다시 업로드해야 하므로 대역폭에 따라 포크하는 데 시간이 걸릴 수 있습니다(다만 Xet 덕분에 다시 업로드는 빠르게 진행됩니다).
https://huggingface.co에서 대상 저장소(예:
me/myfork)를 생성합니다이를 클론하고 소스 저장소를 원격으로 추가합니다:
git clone git@hf.co:me/myfork
cd myfork
git xet install
git remote add upstream git@hf.co:friend/upstream
git fetch upstream
git lfs fetch --all upstream- 포크의 내용을 업스트림 히스토리로 교체합니다:
git reset --hard upstream/main
- Push:
git push --force origin main