""" KcELECTRA 분류 모델 → HuggingFace Hub 업로드 스크립트 ====================================================== 사용법: 1. HF 토큰 발급: https://huggingface.co/settings/tokens (write 권한) 2. HF_TOKEN과 HF_USERNAME을 아래 상수에 채우기 3. python scripts/upload_classifier_to_hf.py 업로드 결과: HF Hub repo: HF_USERNAME/kcelectra-category 서브폴더: kcelectra-category-v3/ → AutoModel.from_pretrained("HF_USERNAME/kcelectra-category", subfolder="kcelectra-category-v3") 완료 후 반드시: classifier_kcelectra.py 의 _BASE_MODEL_ID 를 실제 repo ID로 수정할 것. """ import os import sys from pathlib import Path # ── 여기 두 값을 채워 주세요 ────────────────────────────────────── HF_TOKEN = "" # HF write 토큰 (빈 문자열이면 huggingface-cli login 세션 사용) HF_USERNAME = "kysophia" # ───────────────────────────────────────────────────────────────── REPO_NAME = "kcelectra-category" SUBFOLDER = "kcelectra-category-v3" _HERE = Path(__file__).parent.parent # classification/ CKPT_DIR = _HERE / "checkpoints" / "kcelectra-category-v3" def _check_prerequisites(): if not HF_USERNAME: print("[오류] HF_USERNAME을 이 스크립트 상단에 입력하세요.") sys.exit(1) if not CKPT_DIR.exists(): print(f"[오류] 체크포인트 폴더가 없습니다: {CKPT_DIR}") print(" Colab 학습 완료 후 kcelectra-category-v3/ 를 이 경로에 두세요.") sys.exit(1) required = ["config.json", "label2id.json", "tokenizer.json", "tokenizer_config.json"] missing = [f for f in required if not (CKPT_DIR / f).exists()] has_weights = any((CKPT_DIR / w).exists() for w in ("model.safetensors", "pytorch_model.bin")) if missing: print(f"[오류] 필수 파일 누락: {missing}") sys.exit(1) if not has_weights: print("[오류] model.safetensors 또는 pytorch_model.bin 이 없습니다.") sys.exit(1) try: from huggingface_hub import HfApi # noqa: F401 except ImportError: print("[오류] huggingface_hub 가 설치되지 않았습니다.") print(" pip install huggingface-hub") sys.exit(1) def upload(): _check_prerequisites() from huggingface_hub import HfApi api = HfApi(token=HF_TOKEN or None) repo_id = f"{HF_USERNAME}/{REPO_NAME}" print(f"[1/3] repo 생성 또는 확인: {repo_id}") api.create_repo(repo_id=repo_id, repo_type="model", exist_ok=True, private=False) print(f"[2/3] 파일 업로드: {CKPT_DIR} → {repo_id}/{SUBFOLDER}/") api.upload_folder( folder_path=str(CKPT_DIR), repo_id=repo_id, path_in_repo=SUBFOLDER, commit_message=f"Add KcELECTRA classification v3 checkpoint", ) print(f"\n[3/3] 완료!") print(f" Hub URL : https://huggingface.co/{repo_id}") print(f" 로드 코드:") print(f' AutoTokenizer.from_pretrained("{repo_id}", subfolder="{SUBFOLDER}")') print(f' AutoModelForSequenceClassification.from_pretrained(') print(f' "{repo_id}", subfolder="{SUBFOLDER}", num_labels=6)') print(f"\n classifier_kcelectra.py 의 _BASE_MODEL_ID = \"{repo_id}\" 로 수정하세요.") if __name__ == "__main__": upload()