| import os |
| import sys |
| import logging |
| from huggingface_hub import HfApi, create_repo, upload_folder |
| from getpass import getpass |
|
|
| logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s") |
| log = logging.getLogger(__name__) |
|
|
| |
| |
| |
| |
| BASE_MODEL_DIR = "artifacts/deploy/ankahi-gemma4-e4b-int8" |
| ADAPTERS_DIR = "artifacts/stage2" |
| |
| |
|
|
| |
| |
| REPO_ID = "bhriguverma/ankahi-gemma-aac-int8" |
|
|
| |
|
|
| def upload_model_to_hf(token: str): |
| """Uploads the model and adapters to Hugging Face.""" |
| api = HfApi() |
|
|
| try: |
| log.info(f"Attempting to create or connect to repository: {REPO_ID}") |
| |
| create_repo(REPO_ID, private=True, token=token, exist_ok=True) |
| log.info(f"Repository '{REPO_ID}' ready.") |
| except Exception as e: |
| log.error(f"Failed to connect to Hugging Face Hub or create repository. Error: {e}") |
| sys.exit(1) |
|
|
| repo_url = f"https://huggingface.co/{REPO_ID}" |
| log.info(f"Uploading model components to: {repo_url}") |
|
|
| |
| try: |
| log.info(f"Uploading base model from: {BASE_MODEL_DIR}") |
| upload_folder( |
| repo_id=REPO_ID, |
| folder_path=BASE_MODEL_DIR, |
| token=token, |
| commit_message="Upload INT8 quantized base Gemma 4 model for Ankahi", |
| repo_type="model", |
| commit_description="Upload INT8 quantized base Gemma 4 model for Ankahi", |
| ) |
| log.info(f"Successfully uploaded base model from {BASE_MODEL_DIR}") |
| except Exception as e: |
| log.error(f"Failed to upload base model from {BASE_MODEL_DIR}: {e}") |
| sys.exit(1) |
|
|
| |
| try: |
| log.info(f"Uploading persona adapters from: {ADAPTERS_DIR}") |
| upload_folder( |
| repo_id=REPO_ID, |
| folder_path=ADAPTERS_DIR, |
| token=token, |
| commit_message="Upload persona adapters for Ankahi", |
| repo_type="model", |
| commit_description="Upload persona adapters for Ankahi", |
| ) |
| log.info(f"Successfully uploaded persona adapters from {ADAPTERS_DIR}") |
| except Exception as e: |
| log.error(f"Failed to upload persona adapters from {ADAPTERS_DIR}: {e}") |
| sys.exit(1) |
| |
| |
| try: |
| log.info("Uploading supplementary files (config, requirements, etc.)...") |
| supplementary_files = [ |
| "README.md", |
| "ankahi_backend/requirements.txt", |
| "ankahi_backend/config.py", |
| "RESULTS.md", |
| "ANKAHI_DEVELOPER_HANDOVER.md" |
| ] |
| |
| for file_path in supplementary_files: |
| if os.path.exists(file_path): |
| log.info(f"Uploading {file_path}...") |
| if os.path.dirname(file_path): |
| folder_path = os.path.dirname(file_path) |
| path_in_repo = os.path.basename(file_path) |
| else: |
| folder_path = '.' |
| path_in_repo = os.path.basename(file_path) |
|
|
| upload_folder( |
| repo_id=REPO_ID, |
| folder_path=folder_path, |
| path_in_repo=path_in_repo, |
| token=token, |
| commit_message=f"Upload {os.path.basename(file_path)}", |
| repo_type="model", |
| commit_description=f"Upload {os.path.basename(file_path)}", |
| discard_local_dir=True |
| ) |
| log.info(f"Uploaded {file_path}") |
| else: |
| log.warning(f"Supplementary file not found, skipping: {file_path}") |
| log.info("Supplementary files upload complete.") |
| except Exception as e: |
| log.error(f"Failed to upload supplementary files: {e}") |
|
|
| log.info("\n--- Upload complete ---") |
| log.info(f"Model and adapters uploaded to: {repo_url}") |
| log.info("Please check your Hugging Face repository for the uploaded files.") |
| log.info("Remember to set your repository to public if intended.") |
|
|
| if __name__ == "__main__": |
| |
| hf_token = "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" |
| |
| upload_model_to_hf(hf_token) |