Download scripts/shard_corpus.py from thefinalboss/fractus-cte: direct link, hf CLI and curl.
- Browser
- Download file 1.21 kB
-
https://huggingface.co/thefinalboss/fractus-cte/resolve/badc05a426cebee540324e82ea60a9fa62cf65a5/scripts/shard_corpus.py
- Command line
-
hf download hf://thefinalboss/fractus-cte@badc05a426cebee540324e82ea60a9fa62cf65a5/scripts/shard_corpus.py
-
curl -L -o shard_corpus.py https://huggingface.co/thefinalboss/fractus-cte/resolve/badc05a426cebee540324e82ea60a9fa62cf65a5/scripts/shard_corpus.py
1.21 kB
| #!/usr/bin/env python3 | |
| """ | |
| Shard the full Fractus corpus (4.23B tokens) into 4 equal parts for multi-GPU training. | |
| Produces: data/shard_gpu0.pt ... data/shard_gpu3.pt | |
| """ | |
| import torch, os, argparse | |
| def main(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("--src", default="data/full_corpus.pt") | |
| parser.add_argument("--out-dir", default="data") | |
| parser.add_argument("--n-shards", type=int, default=4) | |
| args = parser.parse_args() | |
| print(f"Loading {args.src}...") | |
| tokens = torch.load(args.src, map_location="cpu", weights_only=False) | |
| print(f"Total tokens: {len(tokens):,}") | |
| n = len(tokens) | |
| shard_size = n // args.n_shards | |
| os.makedirs(args.out_dir, exist_ok=True) | |
| for i in range(args.n_shards): | |
| start = i * shard_size | |
| end = n if i == args.n_shards - 1 else (i + 1) * shard_size | |
| shard = tokens[start:end].clone() | |
| path = os.path.join(args.out_dir, f"shard_gpu{i}.pt") | |
| torch.save(shard, path) | |
| size_gb = os.path.getsize(path) / (1024 ** 3) | |
| print(f"GPU {i}: {len(shard):,} tokens → {path} ({size_gb:.2f} GB)") | |
| del shard | |
| print("ALL_SHARDS_READY") | |
| if __name__ == "__main__": | |
| main() | |