|
import os |
|
from huggingface_hub import HfApi, create_repo |
|
from pathlib import Path |
|
import sys |
|
|
|
|
|
def check_files_exist(model_path): |
|
"""Check if all necessary files exist in the model directory.""" |
|
required_files = [ |
|
"config.json", |
|
"model.safetensors", |
|
"special_tokens_map.json", |
|
"tokenizer.json", |
|
"tokenizer_config.json", |
|
"training_args.bin", |
|
"vocab.txt", |
|
"README.md" |
|
] |
|
|
|
missing_files = [] |
|
for file in required_files: |
|
if not os.path.exists(os.path.join(model_path, file)): |
|
missing_files.append(file) |
|
|
|
return missing_files |
|
|
|
|
|
def upload_model_to_hf(model_path, repo_name, organization=None): |
|
""" |
|
Upload a model to Hugging Face Hub. |
|
|
|
Args: |
|
model_path (str): Path to the model directory |
|
repo_name (str): Name for the repository on Hugging Face |
|
organization (str, optional): Organization name if uploading to an organization |
|
""" |
|
try: |
|
|
|
api = HfApi() |
|
|
|
|
|
missing_files = check_files_exist(model_path) |
|
if missing_files: |
|
print(f"Error: Missing required files: {', '.join(missing_files)}") |
|
return False |
|
|
|
|
|
if organization: |
|
full_repo_name = f"{organization}/{repo_name}" |
|
else: |
|
full_repo_name = f"{api.whoami()['name']}/{repo_name}" |
|
|
|
print(f"Creating repository: {full_repo_name}") |
|
|
|
|
|
try: |
|
create_repo( |
|
repo_id=full_repo_name, |
|
private=False, |
|
exist_ok=True |
|
) |
|
except Exception as e: |
|
print(f"Error creating repository: {str(e)}") |
|
return False |
|
|
|
print("Repository created successfully!") |
|
|
|
|
|
print(f"Uploading files from {model_path}") |
|
api.upload_folder( |
|
folder_path=model_path, |
|
repo_id=full_repo_name, |
|
repo_type="model" |
|
) |
|
|
|
print("Upload completed successfully!") |
|
print(f"Your model is now available at: https://huggingface.co/{full_repo_name}") |
|
return True |
|
|
|
except Exception as e: |
|
print(f"An error occurred: {str(e)}") |
|
return False |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
MODEL_PATH = "/Users/erikbranmarino/BERT-PRCT-fine-tuning/ct-bert-finetuned-20250131_120923" |
|
REPO_NAME = "CT-BERT-PRCT" |
|
|
|
|
|
if not os.path.exists(MODEL_PATH): |
|
print(f"Error: Model path {MODEL_PATH} does not exist!") |
|
sys.exit(1) |
|
|
|
|
|
success = upload_model_to_hf(MODEL_PATH, REPO_NAME) |
|
|
|
if not success: |
|
sys.exit(1) |