Download scripts/prepare_prose.py from EndlessChasing/Mamb2_8B_Recall: direct link, hf CLI and curl.
- Browser
- Download file 2.37 kB
-
https://huggingface.co/EndlessChasing/Mamb2_8B_Recall/resolve/main/scripts/prepare_prose.py
- Command line
-
hf download hf://EndlessChasing/Mamb2_8B_Recall/scripts/prepare_prose.py
-
curl -L -o prepare_prose.py https://huggingface.co/EndlessChasing/Mamb2_8B_Recall/resolve/main/scripts/prepare_prose.py
2.37 kB
| #!/usr/bin/env python3 | |
| """Regenerate the exact historical 448 WikiText TRAIN token windows by content.""" | |
| import argparse | |
| import json | |
| import os | |
| from pathlib import Path | |
| import sys | |
| import torch | |
| ROOT=Path(__file__).resolve().parents[1] | |
| sys.path.insert(0,str(ROOT)) | |
| from mamba2_recall import calibration, runtime | |
| MANIFEST_SHA='facb2ca461615a4199781bd21784d642d6674f5b862641b3b9edac3fb499b89d' | |
| def main(): | |
| p=argparse.ArgumentParser(description=__doc__) | |
| p.add_argument('--source-dir',type=Path,required=True) | |
| p.add_argument('--out',type=Path,required=True) | |
| args=p.parse_args() | |
| if os.environ.get('CUDA_VISIBLE_DEVICES')!='': | |
| raise RuntimeError('Set CUDA_VISIBLE_DEVICES= to keep this CPU-only') | |
| if args.out.exists(): | |
| raise FileExistsError(args.out) | |
| manifest_path=ROOT/'docs'/'prose_train_manifest.json' | |
| if runtime.sha256_file(manifest_path)!=MANIFEST_SHA: | |
| raise ValueError('Historical prose selection manifest changed') | |
| manifest=json.loads(manifest_path.read_text()) | |
| tokenizer=runtime.SentencePieceTokenizer(args.source_dir) | |
| ids,dataset=calibration.load_wikitext_tokens(tokenizer,'train') | |
| starts=manifest['training_starts'] | |
| if (len(starts)!=448 or len(ids)!=2533678 or dataset!=manifest['dataset'] | |
| or len(set(starts))!=448 or any(type(s) is not int or s<0 or s+2048>len(ids) for s in starts)): | |
| raise ValueError('Historical corpus/windows identity differs') | |
| tokens=torch.stack([ids[start:start+2048] for start in starts]) | |
| content_sha=runtime.token_digest(tokens.flatten().numpy()) | |
| if content_sha!=manifest['training_tokens_sha256_int64le']: | |
| raise ValueError('Recreated TRAIN token content differs') | |
| args.out.parent.mkdir(parents=True,exist_ok=True) | |
| with args.out.open('xb') as stream: | |
| torch.save(tokens,stream) | |
| roundtrip=torch.load(args.out,map_location='cpu',weights_only=True) | |
| if not torch.equal(roundtrip,tokens): | |
| raise RuntimeError('Serialized TRAIN windows differ') | |
| print(json.dumps({'windows':448,'tokens':int(tokens.numel()), | |
| 'content_sha256':content_sha,'file_sha256':runtime.sha256_file(args.out), | |
| 'historical_file_sha256':manifest['training_tokens_file_sha256'], | |
| 'identical_file':runtime.sha256_file(args.out)==manifest['training_tokens_file_sha256']})) | |
| if __name__=='__main__':main() | |