#!/usr/bin/env python3 import os from pathlib import Path from huggingface_hub import HfApi, create_repo, upload_folder # ===== 사용자 설정 ===== # 실제로 만들 Hugging Face 모델 repo ID (예시) REPO_ID = "roboseasylabs/SenseVoice-Small-ko" # <-- 원하는 이름으로 수정 # 업로드할 로컬 폴더 (학습 결과) MODEL_DIR = Path("/home/khw/workspace/STTProject/SenseVoice-Small-ko") # 로컬에 있는 model.py를 함께 올리고 싶으면 (FunASR/SenseVoice용) # outputs 안에 이미 복사해 두었으면 생략 가능 def main(): # 1) 토큰 가져오기 (환경변수 사용 권장) # 미리 export HUGGINGFACE_HUB_TOKEN=hf_xxx 하기 # 미리 export HF_HUB_DOWNLOAD_TIMEOUT=3600 하기 (업로드/다운로드 시간 늘리기) token = os.environ.get("HUGGINGFACE_HUB_TOKEN") if token is None: raise RuntimeError( "HUGGINGFACE_HUB_TOKEN 환경변수가 설정되어 있지 않습니다. " "https://huggingface.co/settings/tokens 에서 토큰을 만들고,\n" "export HUGGINGFACE_HUB_TOKEN=hf_xxx 로 설정한 뒤 다시 실행하세요." ) api = HfApi() # 2) 리포지터리 생성 (이미 있으면 exist_ok=True 로 그냥 통과) create_repo( repo_id=REPO_ID, token=token, private=True, # 비공개로 올리려면 True exist_ok=True, repo_type="model", ) # 4) 폴더 통째로 업로드 print(f"[info] uploading folder: {MODEL_DIR} -> {REPO_ID}") upload_folder( repo_id=REPO_ID, folder_path=str(MODEL_DIR), path_in_repo=".", # 리포 루트에 그대로 올리기 token=token, repo_type="model", # ignore_patterns=[ # "model.pt.ep*", # 체크포인트들 제외 # "*.pt.ep*", # 혹시 다른 파일명도 비슷하게 찍히면 같이 제외 # ], ) print("[done] uploaded to:", f"https://huggingface.co/{REPO_ID}") if __name__ == "__main__": main()