| | """ |
| | Загрузка модели в Model репозиторий через HF CLI (без git) |
| | ⚡ Намного надежнее для больших файлов чем git push! |
| | """ |
| |
|
| | from huggingface_hub import HfApi, create_repo |
| | from pathlib import Path |
| | import os |
| |
|
| | HF_TOKEN = os.environ.get("HF_TOKEN", "hf_YOUR_TOKEN_HERE") |
| | MODEL_REPO = "Gerchegg/Qwen-Soloband-Diffusers" |
| | LOCAL_MODEL_DIR = "Qwen-ImageForFlo_2/model" |
| |
|
| | print(f""" |
| | ============================================================ |
| | UPLOAD MODEL VIA HF API |
| | ============================================================ |
| | |
| | Advantages: |
| | - Auto retry on errors |
| | - Resumable upload |
| | - Progress bars |
| | - Optimized for large files |
| | |
| | Plan: |
| | 1. Create Model repo: {MODEL_REPO} |
| | 2. Upload model/ folder (58GB) via HF API |
| | |
| | No limits for Model repositories! |
| | Time: 30-60 minutes |
| | """) |
| |
|
| | |
| | if not Path(LOCAL_MODEL_DIR).exists(): |
| | print(f"ERROR: Model not found in {LOCAL_MODEL_DIR}") |
| | print(f" Run first: python download_and_pack_model.py") |
| | exit(1) |
| |
|
| | |
| | total_size = sum(f.stat().st_size for f in Path(LOCAL_MODEL_DIR).rglob('*') if f.is_file()) |
| | print(f"Model size: {total_size / 1024**3:.1f} GB") |
| |
|
| | print("\nStarting upload...") |
| |
|
| | |
| | api = HfApi(token=HF_TOKEN) |
| |
|
| | print("\n" + "="*60) |
| | print("STEP 1: Creating Model Repository") |
| | print("="*60) |
| |
|
| | try: |
| | print(f"\nCreating {MODEL_REPO}...") |
| | create_repo( |
| | repo_id=MODEL_REPO, |
| | repo_type="model", |
| | exist_ok=True, |
| | token=HF_TOKEN |
| | ) |
| | print(f"OK Repository created/exists") |
| | print(f" URL: https://huggingface.co/{MODEL_REPO}") |
| | except Exception as e: |
| | print(f"ERROR creating repository: {e}") |
| | exit(1) |
| |
|
| | print("\n" + "="*60) |
| | print("STEP 2: Uploading Model via HF API") |
| | print("="*60) |
| |
|
| | print(f"\nUploading folder {LOCAL_MODEL_DIR}/ -> {MODEL_REPO}") |
| | print(" Using upload_folder API") |
| | print(" Supports resumable uploads") |
| | print(" Progress will be shown automatically\n") |
| |
|
| | try: |
| | |
| | api.upload_folder( |
| | folder_path=LOCAL_MODEL_DIR, |
| | repo_id=MODEL_REPO, |
| | repo_type="model", |
| | token=HF_TOKEN, |
| | commit_message="Add Qwen-Soloband model in diffusers format (58GB with custom transformer)", |
| | ignore_patterns=["*.pyc", "__pycache__", ".git*"] |
| | ) |
| | |
| | print("\n" + "="*60) |
| | print("SUCCESS! MODEL UPLOADED!") |
| | print("="*60) |
| | |
| | print(f"\nModel repository ready!") |
| | print(f" URL: https://huggingface.co/{MODEL_REPO}") |
| | print(f" Size: ~58GB") |
| | |
| | print(f"\nView contents:") |
| | print(f" https://huggingface.co/{MODEL_REPO}/tree/main") |
| | |
| | print(f"\nNext step:") |
| | print(f" Run: python create_space_v2_simple.py") |
| | print(f" This creates Space that loads from this Model repo") |
| | |
| | except Exception as e: |
| | print(f"\nERROR uploading: {e}") |
| | import traceback |
| | print(traceback.format_exc()) |
| | |
| | print("\nWhat you can do:") |
| | print(" 1. Try again - upload_folder supports resuming") |
| | print(" 2. Check internet connection") |
| | print(" 3. Check HF storage space (PRO gives enough)") |
| | |
| | print("\nTo retry, just run again:") |
| | print(" python upload_model_hf_cli.py") |
| |
|
| | print("\nDone!") |
| |
|
| |
|