Download split_and_push.py from thefinalboss/palimpseste-max: direct link, hf CLI and curl.
- Browser
- Download file 1.79 kB
-
https://huggingface.co/thefinalboss/palimpseste-max/resolve/main/split_and_push.py
- Command line
-
hf download hf://thefinalboss/palimpseste-max/split_and_push.py
-
curl -L -o split_and_push.py https://huggingface.co/thefinalboss/palimpseste-max/resolve/main/split_and_push.py
1.79 kB
| #!/usr/bin/env python | |
| """Split memory.bin into <5GB chunks, uploading each to HF Hub, then delete.""" | |
| import sys, os, shutil | |
| sys.path.insert(0, '.') | |
| from huggingface_hub import HfApi | |
| api = HfApi() | |
| src = 'palimpseste-max/palimpseste_memory.bin' | |
| sz = os.path.getsize(src) | |
| chunk_size = 4_500_000_000 | |
| n_chunks = (sz + chunk_size - 1) // chunk_size | |
| print(f'Source: {sz/1024**3:.2f} GB -> {n_chunks} chunks', flush=True) | |
| # Phase 1: Write chunk 0, upload it, delete it. Repeat. | |
| with open(src, 'rb') as f: | |
| for i in range(n_chunks): | |
| chunk_path = f'palimpseste-max/palimpseste_memory.bin.part{i}' | |
| remaining = min(chunk_size, sz - i * chunk_size) | |
| print(f'Writing chunk {i} ({remaining/1024**3:.2f} GB)...', flush=True) | |
| written = 0 | |
| with open(chunk_path, 'wb') as out: | |
| while written < remaining: | |
| block = f.read(min(8 * 1024 * 1024, remaining - written)) | |
| if not block: | |
| break | |
| out.write(block) | |
| written += len(block) | |
| csz = os.path.getsize(chunk_path) | |
| print(f' chunk {i}: {csz/1024**3:.2f} GB', flush=True) | |
| # Upload to HF Hub | |
| repo_path = f'palimpseste-max/palimpseste_memory.bin.part{i}' | |
| print(f' uploading chunk {i} to HF Hub...', flush=True) | |
| api.upload_file( | |
| path_or_fileobj=chunk_path, | |
| path_in_repo=repo_path, | |
| repo_id='thefinalboss/palimpseste-max', | |
| repo_type='model', | |
| ) | |
| print(f' chunk {i} uploaded!', flush=True) | |
| # Delete local chunk to free space | |
| os.remove(chunk_path) | |
| print(f' chunk {i} deleted locally', flush=True) | |
| # Delete the original | |
| os.remove(src) | |
| print(f'Original deleted. Split+upload COMPLETE!', flush=True) | |