| | |
| | """ |
| | Upload MemGen to HuggingFace Hub |
| | |
| | Usage: |
| | python scripts/upload_to_huggingface.py --repo_id LCZZZZ/model111 |
| | """ |
| |
|
| | import os |
| | import argparse |
| | from pathlib import Path |
| | from huggingface_hub import HfApi, create_repo, upload_folder |
| | import logging |
| |
|
| | logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') |
| |
|
| |
|
| | def create_gitignore(base_path: str): |
| | """Create a .gitignore file to exclude unnecessary files.""" |
| | gitignore_content = """ |
| | # Python cache |
| | __pycache__/ |
| | *.py[cod] |
| | *$py.class |
| | *.so |
| | .Python |
| | |
| | # Virtual environments |
| | venv/ |
| | env/ |
| | ENV/ |
| | |
| | # IDE |
| | .vscode/ |
| | .idea/ |
| | *.swp |
| | *.swo |
| | |
| | # Large model files (if any) |
| | *.bin |
| | *.safetensors |
| | *.pth |
| | *.pt |
| | *.ckpt |
| | |
| | # Logs and outputs (optional - comment out if you want to upload) |
| | test_output/ |
| | wandb/ |
| | *.log |
| | |
| | # Backup files |
| | *_backup_original/ |
| | *.backup |
| | *.backup_no_letters |
| | |
| | # Data caches |
| | dataset/*/cache/ |
| | .cache/ |
| | |
| | # System files |
| | .DS_Store |
| | Thumbs.db |
| | """ |
| | |
| | gitignore_path = os.path.join(base_path, ".gitignore") |
| | if not os.path.exists(gitignore_path): |
| | with open(gitignore_path, 'w') as f: |
| | f.write(gitignore_content) |
| | logging.info(f"Created .gitignore at {gitignore_path}") |
| | else: |
| | logging.info(f".gitignore already exists at {gitignore_path}") |
| |
|
| |
|
| | def upload_to_hf(repo_id: str, folder_path: str, create_if_not_exists: bool = True): |
| | """ |
| | Upload a folder to HuggingFace Hub. |
| | |
| | Args: |
| | repo_id: HuggingFace repository ID (e.g., "username/repo_name") |
| | folder_path: Local folder path to upload |
| | create_if_not_exists: Whether to create the repo if it doesn't exist |
| | """ |
| | api = HfApi() |
| | |
| | |
| | try: |
| | api.repo_info(repo_id=repo_id, repo_type="model") |
| | logging.info(f"Repository {repo_id} already exists") |
| | except Exception as e: |
| | if create_if_not_exists: |
| | logging.info(f"Repository {repo_id} not found, creating...") |
| | create_repo(repo_id=repo_id, repo_type="model", exist_ok=True) |
| | logging.info(f"Repository {repo_id} created successfully") |
| | else: |
| | raise Exception(f"Repository {repo_id} does not exist and create_if_not_exists=False") |
| | |
| | |
| | create_gitignore(folder_path) |
| | |
| | |
| | logging.info(f"Uploading {folder_path} to {repo_id}...") |
| | logging.info("This may take a while depending on the size...") |
| | |
| | try: |
| | result = upload_folder( |
| | repo_id=repo_id, |
| | folder_path=folder_path, |
| | repo_type="model", |
| | commit_message="Upload MemGen code and data", |
| | ignore_patterns=[ |
| | "*.pyc", |
| | "__pycache__", |
| | ".git", |
| | "*.log", |
| | "test_output/*", |
| | "wandb/*", |
| | "*_backup_original/*", |
| | "*.backup", |
| | "*.backup_no_letters", |
| | ".cache/*", |
| | ] |
| | ) |
| | |
| | logging.info(f"✓ Upload completed successfully!") |
| | logging.info(f"Repository URL: https://huggingface.co/{repo_id}") |
| | return result |
| | |
| | except Exception as e: |
| | logging.error(f"Upload failed: {e}") |
| | raise |
| |
|
| |
|
| | def main(): |
| | parser = argparse.ArgumentParser(description="Upload MemGen to HuggingFace Hub") |
| | parser.add_argument( |
| | "--repo_id", |
| | type=str, |
| | default="LCZZZZ/model111", |
| | help="HuggingFace repository ID (e.g., 'username/repo_name')" |
| | ) |
| | parser.add_argument( |
| | "--folder_path", |
| | type=str, |
| | default="/root/CVPR/MemGen", |
| | help="Local folder path to upload" |
| | ) |
| | parser.add_argument( |
| | "--no-create", |
| | action="store_true", |
| | help="Don't create repository if it doesn't exist" |
| | ) |
| | |
| | args = parser.parse_args() |
| | |
| | if not os.path.exists(args.folder_path): |
| | logging.error(f"Folder not found: {args.folder_path}") |
| | return |
| | |
| | print("=" * 80) |
| | print("Upload to HuggingFace Hub") |
| | print("=" * 80) |
| | print(f"Repository: {args.repo_id}") |
| | print(f"Folder: {args.folder_path}") |
| | print("=" * 80) |
| | print("\nStarting upload...") |
| | |
| | upload_to_hf( |
| | repo_id=args.repo_id, |
| | folder_path=args.folder_path, |
| | create_if_not_exists=not args.no_create |
| | ) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|
| |
|