palimpseste-max / split_and_push.py
thefinalboss's picture
Upload split_and_push.py with huggingface_hub
0547bdc verified
Raw
History Blame Contribute Delete
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)