다음 단계
다음 단계 (Next Steps)
이어지는 섹션들은 Hugging Face 허브의 Git 저장소를 최대한 활용할 때 유용한 기능과 추가 정보를 소개해요.
출처: 문서
본문
프로그래밍 방식으로 저장소 관리하기
Hugging Face는 huggingface_hub 라이브러리를 통해 Python으로 저장소에 접근하는 것을 지원해요. 앞서 살펴본 저장소 다운로드, 파일 업로드 같은 작업뿐 아니라 다른 유용한 함수도 라이브러리에서 사용할 수 있어요!
git을 직접 사용하는 걸 선호한다면 아래 섹션들을 읽어 보세요.
Git에 대해 더 배우기
Git을 계속 공부하고 싶다면 이 Git 튜토리얼이 좋은 출발점이에요. 더 깊이 있는 배경 지식은 GitHub의 Git Guides를 참고할 수 있어요.
브랜치(branch) 사용하기
Git 저장소를 협업적으로 효과적으로 사용하고, 준비되지 않은 코드를 릴리스하지 않으면서 기능을 개발하려면 브랜치를 사용하면 돼요. 브랜치는 "진행 중(work in progress)" 코드와 "프로덕션 준비(production-ready)" 코드를 분리해 주고, 여러 사람이 서로 자주 충돌하지 않으면서 같은 프로젝트를 작업할 수 있게 해 줘요. 실험을 각자의 브랜치에 격리하고, 팀 차원의 브랜치 관리 관행을 도입할 수도 있어요.
Git 브랜치를 배우려면 Learn Git Branching 인터랙티브 튜토리얼을 시도해 보세요.
태그(tag) 사용하기
Git은 커밋에 태그를 달아 프로젝트의 마일스톤을 쉽게 표시할 수 있게 해 줘요. 허브 저장소의 커밋에도 태그를 사용할 수 있어요. 태그 사용법은 이 DevConnected 글을 참고하세요.
태그는 저장소 히스토리에서 중요한 커밋을 식별하기 쉽게 해 줄 뿐 아니라, A/B 테스트, 특정 태그에서 저장소 클론 등을 가능하게 해 줘요. huggingface_hub 라이브러리도 특정 태그 커밋에서 파일 다운로드 같은 태그 작업을 지원해요.
저장소 복제(duplicate)하기
Git 히스토리를 보존할 필요가 있는지에 따라 저장소를 복제하는 여러 방법이 있어요.
허브에서 복제하기
아무 저장소 페이지 오른쪽 위의 점 세 개를 클릭한 뒤 Duplicate this model, Duplicate this dataset, 또는 Duplicate this Space를 선택하세요. Xet 중복 제거 기술 덕분에 이 작업은 거의 즉시 이루어져요. 다음을 선택할 수 있어요:
- Owner: 내 계정 또는 쓰기 권한이 있는 조직.
- Repository name: 복제된 저장소의 이름. 기본적으로 원본과 같은 이름을 내 네임스페이스 아래에 유지합니다(예:
bigscience/bloom-560m복제 →your-username/bloom-560m). - Visibility: 복제한 저장소를 공개 또는 비공개로 만들 수 있어요. 비공개 저장소에 대해 더 알아보려면 여기를 참고하세요.
모델과 데이터셋의 경우 Git 히스토리는 하나의 커밋으로 스쿼시(squash)됩니다. Spaces의 경우 전체 Git 히스토리가 보존됩니다. Spaces의 공개 변수는 복사되지만, 시크릿(secrets)은 직접 다시 입력해야 해요.
제한 사항
일부 저장소는 복제할 수 없어요:
- Gated 저장소(접근 요청이 활성화된 모델/데이터셋).
- 작성자가 복제를 비활성화한 저장소.
- 리전 간 복제는 지원되지 않아요(예: US 리전에 저장된 저장소를 EU 조직으로 복제할 수 없음).
프로그래밍 방식으로 복제하기
huggingface_hub 라이브러리나 CLI로도 저장소를 복제할 수 있어요. 허브 버튼과 동일한 서버 측 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 dataset
Spaces의 경우 설정(하드웨어, sleep 시간, 스토리지, 변수, 시크릿)을 직접 구성해야 해요. 자세한 내용은 Manage your Space 가이드를 확인하세요.
또는 저장소의 로컬 사본을 유지하려면, hf download 후 hf upload로 다른 네임스페이스에 올릴 수 있어요. 이 방법도 Git 히스토리를 보존하지 않습니다.
Git으로 수동 포크(fork)하기
모델/데이터셋의 Git 히스토리를 보존해야 하거나 프로세스를 더 세밀하게 제어하고 싶다면(예: 내 변경 사항 위에 리베이스), Git으로 수동으로 저장소를 포크할 수 있어요.
git-xet이 설치되어 있어야 해요. 모든 LFS 파일을 내려받아 다시 업로드해야 하므로 대역폭에 따라 포크에 시간이 걸릴 수 있어요(재업로드는 Xet 덕분에 빠를 거예요).
-
https://huggingface.co 에 대상 저장소(예:
me/myfork)를 만드세요. -
클론하고 원본 저장소를 remote로 추가하세요:
git clone [email protected]:me/myfork
cd myfork
git xet install
git remote add upstream [email protected]:friend/upstream
git fetch upstream
git lfs fetch --all upstream
- 포크 내용을 업스트림 히스토리로 교체하세요:
git reset --hard upstream/main
- 푸시하세요:
git push --force origin main
더 알아보기 (Learn more)
huggingface_hub라이브러리 문서에서 Python으로 저장소를 관리하는 더 많은 기능을 살펴보세요.- Xet 중복 제거 문서에서 빠른 복제가 어떻게 동작하는지 배울 수 있어요.