Append v11 reproduction code without changing prior backup payloads
Browse files- .gitattributes +1 -0
- MANIFEST.json +50 -1
- runs/20261011/metadata/PRIVATE_BACKUP_EXIT_LOG_ATTEMPT1.json +4 -0
- runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_EXIT.json +1 -0
- runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_VERIFIED.json +10 -0
- runs/20261011/metadata/REPRODUCTION_CODE_VERIFIED.json +5 -0
- runs/20261011/metadata/publish_private_backup.py +126 -0
- runs/20261011/metadata/recover_private_terminal.py +48 -0
- runs/20261011/metadata/v11-reproduction-code.json +92 -0
- runs/20261011/metadata/v11-reproduction-code.tar.gz +3 -0
.gitattributes
CHANGED
|
@@ -1,2 +1,3 @@
|
|
| 1 |
*.part-* filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.jsonl filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 1 |
*.part-* filter=lfs diff=lfs merge=lfs -text
|
| 2 |
*.jsonl filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
runs/20261011/metadata/v11-reproduction-code.tar.gz filter=lfs diff=lfs merge=lfs -text
|
MANIFEST.json
CHANGED
|
@@ -555,6 +555,38 @@
|
|
| 555 |
"tools/merge_checkpoint_archive.py": {
|
| 556 |
"bytes": 17223,
|
| 557 |
"sha256": "c6d73d89e4eb29bff568942b91756d2827736a28418c6afbbc47dba8385d6bf7"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 558 |
}
|
| 559 |
},
|
| 560 |
"private": true,
|
|
@@ -586,5 +618,22 @@
|
|
| 586 |
}
|
| 587 |
]
|
| 588 |
},
|
| 589 |
-
"native_optimizer_RNG_uploaded": false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 590 |
}
|
|
|
|
| 555 |
"tools/merge_checkpoint_archive.py": {
|
| 556 |
"bytes": 17223,
|
| 557 |
"sha256": "c6d73d89e4eb29bff568942b91756d2827736a28418c6afbbc47dba8385d6bf7"
|
| 558 |
+
},
|
| 559 |
+
"runs/20261011/metadata/v11-reproduction-code.tar.gz": {
|
| 560 |
+
"bytes": 2884690,
|
| 561 |
+
"sha256": "809014fdf179129889a4d9f3ea46db7c9d1febce82b4b81d02e940a327d11a63"
|
| 562 |
+
},
|
| 563 |
+
"runs/20261011/metadata/v11-reproduction-code.json": {
|
| 564 |
+
"bytes": 11961,
|
| 565 |
+
"sha256": "006ccb2d5ec6b087ae74c89c79d40cd5805bd7420fea5e08d7fcbf5884b8ea3a"
|
| 566 |
+
},
|
| 567 |
+
"runs/20261011/metadata/REPRODUCTION_CODE_VERIFIED.json": {
|
| 568 |
+
"bytes": 123,
|
| 569 |
+
"sha256": "5092a4ebde5ae3194825973d9e185c95a3b76bb12e8036972214da46f29f2a51"
|
| 570 |
+
},
|
| 571 |
+
"runs/20261011/metadata/publish_private_backup.py": {
|
| 572 |
+
"bytes": 9679,
|
| 573 |
+
"sha256": "b22b9e26e83418a83cf9fddfd3423bfef227850ff3132a00e256edfe02ebf0e9"
|
| 574 |
+
},
|
| 575 |
+
"runs/20261011/metadata/recover_private_terminal.py": {
|
| 576 |
+
"bytes": 3405,
|
| 577 |
+
"sha256": "643dcd5d3c0f4e277e1d4da1a3bf16e9aa85cb86a131d5f35c5e65f8f19ab068"
|
| 578 |
+
},
|
| 579 |
+
"runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_VERIFIED.json": {
|
| 580 |
+
"bytes": 362,
|
| 581 |
+
"sha256": "adb004ec607bd01c18c505d57b3f6c3165890c496ac1c02e2de7f12a277a5a32"
|
| 582 |
+
},
|
| 583 |
+
"runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_EXIT.json": {
|
| 584 |
+
"bytes": 44,
|
| 585 |
+
"sha256": "401558967356cd00582b4c8c1cefc42c9c8f939243bdb73e09669ee8133f8a06"
|
| 586 |
+
},
|
| 587 |
+
"runs/20261011/metadata/PRIVATE_BACKUP_EXIT_LOG_ATTEMPT1.json": {
|
| 588 |
+
"bytes": 52,
|
| 589 |
+
"sha256": "8d947a3738e36fa72c9d2ad2cc0ff65cd6bafbb97af88f861c241566d58fefb1"
|
| 590 |
}
|
| 591 |
},
|
| 592 |
"private": true,
|
|
|
|
| 618 |
}
|
| 619 |
]
|
| 620 |
},
|
| 621 |
+
"native_optimizer_RNG_uploaded": false,
|
| 622 |
+
"incremental_history": [
|
| 623 |
+
{
|
| 624 |
+
"parent_commit": "db8ba4fb67ebad6e6e3778c628e23416b4caad85",
|
| 625 |
+
"previous_manifest_sha256": "e7b935096def901641d958a748d6b6996a67e343394f062af60e8b025a1f3752",
|
| 626 |
+
"added_files": [
|
| 627 |
+
"runs/20261011/metadata/v11-reproduction-code.tar.gz",
|
| 628 |
+
"runs/20261011/metadata/v11-reproduction-code.json",
|
| 629 |
+
"runs/20261011/metadata/REPRODUCTION_CODE_VERIFIED.json",
|
| 630 |
+
"runs/20261011/metadata/publish_private_backup.py",
|
| 631 |
+
"runs/20261011/metadata/recover_private_terminal.py",
|
| 632 |
+
"runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_VERIFIED.json",
|
| 633 |
+
"runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_EXIT.json",
|
| 634 |
+
"runs/20261011/metadata/PRIVATE_BACKUP_EXIT_LOG_ATTEMPT1.json"
|
| 635 |
+
],
|
| 636 |
+
"prior_payloads_unchanged": true
|
| 637 |
+
}
|
| 638 |
+
]
|
| 639 |
}
|
runs/20261011/metadata/PRIVATE_BACKUP_EXIT_LOG_ATTEMPT1.json
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"returncode": 1,
|
| 3 |
+
"time": 1791711756.7920353
|
| 4 |
+
}
|
runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_EXIT.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"returncode": 0, "time": 1791711858.535887}
|
runs/20261011/metadata/PRIVATE_TERMINAL_RECOVERY_VERIFIED.json
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"passed": true,
|
| 3 |
+
"commit": "db8ba4fb67ebad6e6e3778c628e23416b4caad85",
|
| 4 |
+
"preserved_original_exit1": true,
|
| 5 |
+
"original_failure": "TypeError in final event logger: duplicate time keyword",
|
| 6 |
+
"no_reupload_or_source_mutation": true,
|
| 7 |
+
"all_remote_files_reverified": true,
|
| 8 |
+
"ten_actual_remote_restore_receipts_reverified": true,
|
| 9 |
+
"time": 1791711858.5345268
|
| 10 |
+
}
|
runs/20261011/metadata/REPRODUCTION_CODE_VERIFIED.json
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"passed": true,
|
| 3 |
+
"files": 85,
|
| 4 |
+
"archive_sha256": "809014fdf179129889a4d9f3ea46db7c9d1febce82b4b81d02e940a327d11a63"
|
| 5 |
+
}
|
runs/20261011/metadata/publish_private_backup.py
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Private data/evaluation backup, authenticated per-file verification, no GPU use."""
|
| 2 |
+
import fcntl, hashlib, json, os, subprocess, time, traceback
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from huggingface_hub import HfApi, hf_hub_download, CommitOperationAdd
|
| 5 |
+
from pack_verified import sha,write,verify
|
| 6 |
+
ROOT=Path('/tmp/nanocode-proot/v11-hf-backup-20261011')
|
| 7 |
+
DEST='eigentom/minicpm5-sft-v11-backup-20261011'
|
| 8 |
+
NODE='hadoop-aipnlp@33.39.125.181'
|
| 9 |
+
NODEROOT='/workdir/minicpm5-sft/v11-ablations-20261010/ops/hf_backup'
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
def event(phase,**kw):
|
| 13 |
+
d=dict(phase=phase,time=time.time());d.update(kw);write(ROOT/'private_backup.status.json',d);print(json.dumps(d),flush=True)
|
| 14 |
+
|
| 15 |
+
|
| 16 |
+
def node_complete():
|
| 17 |
+
code='import json,pathlib; r=pathlib.Path('+repr(NODEROOT)+'); print(json.dumps({n:json.loads((r/n).read_text()) if (r/n).exists() else None for n in ["training.COMPLETE.json","training.EXIT.json","training.ERROR.json"]}))'
|
| 18 |
+
p=subprocess.run(['ssh','-p8022','-o','BatchMode=yes','-o','ConnectTimeout=15',NODE,'/usr/local/conda/bin/python3 -S -'],input=code,text=True,capture_output=True,timeout=90)
|
| 19 |
+
assert p.returncode==0
|
| 20 |
+
return json.loads(p.stdout)
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def main():
|
| 24 |
+
lock=(ROOT/'private_backup.lock').open('a+');fcntl.flock(lock,fcntl.LOCK_EX|fcntl.LOCK_NB)
|
| 25 |
+
write(ROOT/'PRIVATE_BACKUP_IDENTITY.json',dict(pid=os.getpid(),start_tick=int(Path('/proc/self/stat').read_text().split(') ',1)[1].split()[19]),script=str(Path(__file__).resolve()),time=time.time()))
|
| 26 |
+
os.environ.update(HTTP_PROXY='http://10.217.142.137:8080',HTTPS_PROXY='http://10.217.142.137:8080',CUDA_VISIBLE_DEVICES='',HF_HUB_DISABLE_XET='1',HF_HUB_DISABLE_PROGRESS_BARS='1')
|
| 27 |
+
policy=json.loads((ROOT/'BACKUP_POLICY.json').read_text());assert policy['dataset_repo']==DEST and policy['dataset_private'] and not policy['native_optimizer_RNG_upload']
|
| 28 |
+
token=ROOT/'upload.credential';assert token.stat().st_mode&0o077==0
|
| 29 |
+
api=HfApi(token=token.read_text().strip());assert api.whoami()['name']=='eigentom'
|
| 30 |
+
event('waiting_verified_packages')
|
| 31 |
+
while True:
|
| 32 |
+
if (ROOT/'eval.EXIT.json').exists():assert json.loads((ROOT/'eval.EXIT.json').read_text())['returncode']==0,'Eval packaging failed'
|
| 33 |
+
node=node_complete()
|
| 34 |
+
if node['training.EXIT.json']:assert node['training.EXIT.json']['returncode']==0,'Training packaging failed'
|
| 35 |
+
if node['training.COMPLETE.json'] and (ROOT/'eval.COMPLETE.json').exists() and (ROOT/'MODEL_ARCHIVE_COMPLETE.json').exists():break
|
| 36 |
+
if (ROOT/'MODEL_ARCHIVE_EXIT.json').exists():assert json.loads((ROOT/'MODEL_ARCHIVE_EXIT.json').read_text())['returncode']==0,'Model migration failed'
|
| 37 |
+
time.sleep(45)
|
| 38 |
+
event('transfer_verified_training_packages')
|
| 39 |
+
p=subprocess.run(['rsync','-a','--partial','-e','ssh -p8022 -o BatchMode=yes -o ConnectTimeout=15',NODE+':'+NODEROOT+'/packages/',str(ROOT/'packages')+'/'],capture_output=True,text=True)
|
| 40 |
+
assert p.returncode==0,p.stderr[-200:]
|
| 41 |
+
packages={}
|
| 42 |
+
for kind in ['training','eval']:
|
| 43 |
+
for v in 'abcde':
|
| 44 |
+
name=kind+'-v11'+v;p=ROOT/'packages'/name
|
| 45 |
+
event('reverify_staged_package',package=name)
|
| 46 |
+
packages[name]=verify(p)
|
| 47 |
+
metadata=ROOT/'private-metadata';metadata.mkdir(exist_ok=True)
|
| 48 |
+
evalroot=Path('/tmp/nanocode-proot/v11-five-full200-20261010')
|
| 49 |
+
for name in ['FINAL_COMPARISON.json','FINAL_TASK_OUTCOMES.json','FINAL_REPORT.md','PARALLEL_ALL_EVAL_COMPLETE.json','PARALLEL_AGGREGATE_EXIT.json','GPU_RELEASE_VERIFIED.json','USER_DEFER_H100_EVAL.json']:
|
| 50 |
+
p=evalroot/name
|
| 51 |
+
if p.exists():(metadata/name).write_bytes(p.read_bytes())
|
| 52 |
+
for name in ['BACKUP_POLICY.json','MODEL_ARCHIVE_COMPLETE.json','MODEL_ARCHIVE_REMOTE_VERIFIED.json','LEGACY_REPOS_RETIRED.json','GIT_BUNDLES_VERIFIED.json','LEGACY_REPO_INVENTORY.json','LEGACY_COMMIT_LOGS.json']:
|
| 53 |
+
(metadata/name).write_bytes((ROOT/name).read_bytes())
|
| 54 |
+
owner=dict(schema='nanocode-private-data-backup-v1',owner='eigentom',task='v11-hf-backup-20261011')
|
| 55 |
+
own=metadata/'BACKUP_OWNER.json';write(own,owner)
|
| 56 |
+
if api.repo_exists(DEST,repo_type='dataset'):
|
| 57 |
+
info=api.repo_info(DEST,repo_type='dataset',files_metadata=True);assert info.private
|
| 58 |
+
names={x.rfilename for x in info.siblings}
|
| 59 |
+
if 'BACKUP_OWNER.json' in names:
|
| 60 |
+
p=Path(hf_hub_download(DEST,'BACKUP_OWNER.json',repo_type='dataset',token=api.token,cache_dir=str(ROOT/'private-verify-cache')));assert json.loads(p.read_text())==owner
|
| 61 |
+
else:assert (ROOT/'PRIVATE_CREATE_INTENT.json').exists() and names<={'.gitattributes'}
|
| 62 |
+
else:
|
| 63 |
+
write(ROOT/'PRIVATE_CREATE_INTENT.json',dict(repo=DEST,private=True,time=time.time()));api.create_repo(DEST,repo_type='dataset',private=True)
|
| 64 |
+
head=api.repo_info(DEST,repo_type='dataset').sha
|
| 65 |
+
attrs=metadata/'gitattributes';attrs.write_text('*.part-* filter=lfs diff=lfs merge=lfs -text\n*.jsonl filter=lfs diff=lfs merge=lfs -text\n')
|
| 66 |
+
readme=metadata/'README.md';readme.write_text('---\npretty_name: Private v11 SFT data and evaluation backup\n---\n\n# Private v11 backup\n\nFive actual one-epoch training datasets (derived rows and actual runtime packed data), recipes, schedules, evidence, and five complete 200-task evaluation trajectories. Review tasks remain unscored. No native optimizer/RNG checkpoint weights are included.\n\nPackages are byte-exact split zstd tar streams. Concatenate ordered archive parts, decompress, and extract. PACKAGE.json lists part SHA256; files.jsonl lists every restored member SHA256. Use tools/restore_backup.py for safe restoration. MANIFEST.json is the incremental backup index.\n\nModel checkpoints are in eigentom/nanocode-sft-checkpoint-archive; this repository is private.\n')
|
| 67 |
+
files={'.gitattributes':attrs,'BACKUP_OWNER.json':own,'README.md':readme}
|
| 68 |
+
for p in (ROOT/'packages').rglob('*'):
|
| 69 |
+
if p.is_file() and p.name not in ['PROGRESS.json']:
|
| 70 |
+
files['runs/20261011/'+p.relative_to(ROOT/'packages').as_posix()]=p
|
| 71 |
+
for p in metadata.iterdir():
|
| 72 |
+
if p.name not in ['gitattributes','BACKUP_OWNER.json','README.md']:files['runs/20261011/metadata/'+p.name]=p
|
| 73 |
+
for p in (ROOT/'private-model-audits').iterdir():files['runs/20261011/model-audits/'+p.name]=p
|
| 74 |
+
for name in ['pack_verified.py','restore_backup.py','package_queue.py','publish_private_backup.py','merge_checkpoint_archive.py']:
|
| 75 |
+
files['tools/'+name]=ROOT/name
|
| 76 |
+
expected={name:dict(bytes=p.stat().st_size,sha256=sha(p)) for name,p in files.items()}
|
| 77 |
+
total=sum(x['bytes'] for x in expected.values());assert total<95_000_000_000,'Private payload exceeds free plan capacity; do not upgrade automatically'
|
| 78 |
+
manifest=metadata/'MANIFEST.json';write(manifest,dict(schema='nanocode-private-data-backup-v1',packages=packages,files=expected,private=True,model_archive=json.loads((ROOT/'MODEL_ARCHIVE_COMPLETE.json').read_text()),native_optimizer_RNG_uploaded=False))
|
| 79 |
+
files['MANIFEST.json']=manifest;expected['MANIFEST.json']=dict(bytes=manifest.stat().st_size,sha256=sha(manifest))
|
| 80 |
+
for n,p in files.items():
|
| 81 |
+
event('upload_private_file',path=n,bytes=expected[n]['bytes'])
|
| 82 |
+
assert sha(p)==expected[n]['sha256']
|
| 83 |
+
head=api.upload_file(repo_id=DEST,repo_type='dataset',parent_commit=head,path_or_fileobj=str(p),path_in_repo=n,commit_message='Append verified v11 backup '+n).oid
|
| 84 |
+
assert sha(p)==expected[n]['sha256']
|
| 85 |
+
write(ROOT/'PRIVATE_BACKUP_PROGRESS.json',dict(head=head,last_file=n,time=time.time()))
|
| 86 |
+
event('verify_private_remote',commit=head)
|
| 87 |
+
info=api.repo_info(DEST,repo_type='dataset',revision=head,files_metadata=True);assert info.private
|
| 88 |
+
remote={x.rfilename:x for x in info.siblings};assert set(remote)==set(expected)
|
| 89 |
+
for n,x in expected.items():
|
| 90 |
+
other=remote[n];assert other.size==x['bytes'],n
|
| 91 |
+
if other.lfs:assert other.lfs.sha256==x['sha256'],n
|
| 92 |
+
else:
|
| 93 |
+
p=Path(hf_hub_download(DEST,n,repo_type='dataset',revision=head,token=api.token,cache_dir=str(ROOT/'private-verify-cache')));assert sha(p)==x['sha256'],n
|
| 94 |
+
# Real remote round-trip: all ten package metadata/member manifests plus the archive index.
|
| 95 |
+
for n in expected:
|
| 96 |
+
if n.endswith('/files.jsonl') or n.endswith('/PACKAGE.json') or n=='MANIFEST.json':
|
| 97 |
+
p=Path(hf_hub_download(DEST,n,repo_type='dataset',revision=head,token=api.token,cache_dir=str(ROOT/'private-verify-cache')));assert sha(p)==expected[n]['sha256'],n
|
| 98 |
+
# Download the committed compressed bytes and perform actual full reconstruction again.
|
| 99 |
+
for name in packages:
|
| 100 |
+
event('download_and_restore_remote_package',package=name)
|
| 101 |
+
target=ROOT/'remote-restored'/name;target.mkdir(parents=True,exist_ok=True)
|
| 102 |
+
prefix='runs/20261011/'+name+'/'
|
| 103 |
+
for n in expected:
|
| 104 |
+
if n.startswith(prefix):
|
| 105 |
+
rel=n[len(prefix):]
|
| 106 |
+
p=Path(hf_hub_download(DEST,n,repo_type='dataset',revision=head,token=api.token,cache_dir=str(ROOT/'private-verify-cache'))).resolve()
|
| 107 |
+
assert sha(p)==expected[n]['sha256']
|
| 108 |
+
dest=target/rel;dest.parent.mkdir(parents=True,exist_ok=True)
|
| 109 |
+
if not dest.exists():os.link(p,dest)
|
| 110 |
+
assert sha(dest)==expected[n]['sha256']
|
| 111 |
+
verify(target)
|
| 112 |
+
assert not HfApi(token=False).repo_exists(DEST,repo_type='dataset'),'Private dataset unexpectedly anonymously accessible'
|
| 113 |
+
assert api.repo_info(DEST,repo_type='dataset').sha==head
|
| 114 |
+
result=dict(passed=True,repo=DEST,commit=head,files=len(expected),bytes=sum(x['bytes'] for x in expected.values()),all_file_size_sha_verified=True,ten_archives_each_member_reconstructed=True,ten_archives_remote_download_reconstructed=True,private=True,time=time.time())
|
| 115 |
+
write(ROOT/'PRIVATE_BACKUP_REMOTE_VERIFIED.json',result);write(ROOT/'PRIVATE_BACKUP_COMPLETE.json',result)
|
| 116 |
+
event('private_backup_complete',**result)
|
| 117 |
+
|
| 118 |
+
|
| 119 |
+
if __name__=='__main__':
|
| 120 |
+
code=0
|
| 121 |
+
try:main()
|
| 122 |
+
except BaseException as exc:
|
| 123 |
+
code=1;response=getattr(exc,'response',None)
|
| 124 |
+
event('private_backup_failed',error_type=type(exc).__name__,http_status=getattr(response,'status_code',None))
|
| 125 |
+
write(ROOT/'PRIVATE_BACKUP_EXIT.json',dict(returncode=code,time=time.time()))
|
| 126 |
+
raise SystemExit(code)
|
runs/20261011/metadata/recover_private_terminal.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Revalidate completed backup after a logging-only terminal error; never rewrite old EXIT1."""
|
| 2 |
+
import os
|
| 3 |
+
os.environ.update(HF_HUB_DISABLE_XET='1',HTTP_PROXY='http://10.217.142.137:8080',HTTPS_PROXY='http://10.217.142.137:8080',CUDA_VISIBLE_DEVICES='')
|
| 4 |
+
import json,time,hashlib
|
| 5 |
+
from pathlib import Path
|
| 6 |
+
from huggingface_hub import HfApi,hf_hub_download
|
| 7 |
+
ROOT=Path('/tmp/nanocode-proot/v11-hf-backup-20261011')
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
def sha(p):
|
| 11 |
+
h=hashlib.sha256()
|
| 12 |
+
with p.open('rb') as f:
|
| 13 |
+
for b in iter(lambda:f.read(16<<20),b''):h.update(b)
|
| 14 |
+
return h.hexdigest()
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def main():
|
| 18 |
+
d=json.loads((ROOT/'PRIVATE_BACKUP_COMPLETE.json').read_text());assert d['passed'] and d['ten_archives_remote_download_reconstructed']
|
| 19 |
+
token=ROOT/'upload.credential';assert token.stat().st_mode&0o077==0
|
| 20 |
+
api=HfApi(token=token.read_text().strip());assert api.whoami()['name']=='eigentom'
|
| 21 |
+
info=api.repo_info(d['repo'],repo_type='dataset',files_metadata=True);assert info.private and info.sha==d['commit']
|
| 22 |
+
index=json.loads((ROOT/'private-metadata/MANIFEST.json').read_text());expected=dict(index['files']);p=ROOT/'private-metadata/MANIFEST.json';expected['MANIFEST.json']=dict(bytes=p.stat().st_size,sha256=sha(p))
|
| 23 |
+
remote={x.rfilename:x for x in info.siblings};assert set(remote)==set(expected)
|
| 24 |
+
for n,x in expected.items():
|
| 25 |
+
f=remote[n];assert f.size==x['bytes']
|
| 26 |
+
if f.lfs:assert f.lfs.sha256==x['sha256']
|
| 27 |
+
else:
|
| 28 |
+
p=Path(hf_hub_download(d['repo'],n,repo_type='dataset',revision=d['commit'],token=api.token,cache_dir=str(ROOT/'private-verify-cache')));assert sha(p)==x['sha256']
|
| 29 |
+
for name,meta in index['packages'].items():
|
| 30 |
+
folder=ROOT/'remote-restored'/name;proof=json.loads((folder/'VERIFIED.json').read_text())
|
| 31 |
+
assert proof['passed'] and proof['every_member_reconstructed'] and proof['files']==meta['files'] and proof['raw_bytes']==meta['raw_bytes']
|
| 32 |
+
assert sha(folder/'files.jsonl')==meta['file_manifest_sha256']
|
| 33 |
+
for part in meta['parts']:assert sha(folder/part['name'])==part['sha256']
|
| 34 |
+
assert not HfApi(token=False).repo_exists(d['repo'],repo_type='dataset')
|
| 35 |
+
proof=dict(passed=True,commit=d['commit'],preserved_original_exit1=True,original_failure='TypeError in final event logger: duplicate time keyword',no_reupload_or_source_mutation=True,all_remote_files_reverified=True,ten_actual_remote_restore_receipts_reverified=True,time=time.time())
|
| 36 |
+
(ROOT/'PRIVATE_TERMINAL_RECOVERY_VERIFIED.json').write_text(json.dumps(proof,indent=2)+'\n')
|
| 37 |
+
# New verifier actually exits normally; old publisher identity and EXIT1 remain archived.
|
| 38 |
+
(ROOT/'PRIVATE_BACKUP_IDENTITY.json').write_text(json.dumps(dict(pid=os.getpid(),start_tick=int(Path('/proc/self/stat').read_text().split(') ',1)[1].split()[19]),script=str(Path(__file__).resolve()),time=time.time())))
|
| 39 |
+
(ROOT/'PRIVATE_BACKUP_EXIT.json').write_text(json.dumps(dict(returncode=0,operation='terminal_revalidation',original_exit1_receipt='terminal-log-attempt1/PRIVATE_BACKUP_EXIT.json',time=time.time())))
|
| 40 |
+
print('Private backup terminal revalidation passed',flush=True)
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
if __name__=='__main__':
|
| 44 |
+
code=0
|
| 45 |
+
try:main()
|
| 46 |
+
except BaseException as exc:
|
| 47 |
+
code=1;(ROOT/'PRIVATE_TERMINAL_RECOVERY_ERROR.json').write_text(json.dumps(dict(error_type=type(exc).__name__,http_status=getattr(getattr(exc,'response',None),'status_code',None),time=time.time())))
|
| 48 |
+
(ROOT/'PRIVATE_TERMINAL_RECOVERY_EXIT.json').write_text(json.dumps(dict(returncode=code,time=time.time())));raise SystemExit(code)
|
runs/20261011/metadata/v11-reproduction-code.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"local_commit": "0efd34830a9ca665ccc3af0d672ea8d86e40b321",
|
| 3 |
+
"files": {
|
| 4 |
+
"training/minicpm5-sft/scripts/v11_train/resume_master.py": "34a9103fbb366db08aef937530536250a5ba73c8292fa04736fb0b5793d2b8a1",
|
| 5 |
+
"training/minicpm5-sft/scripts/v11_train/archive_weights_queue.py": "7a25a3c0928f95793b4810964610e4b4ed55de2ca52d9df1ac2663d08621382b",
|
| 6 |
+
"training/minicpm5-sft/scripts/v11_train/train_entry.py": "32b72f50dbca0fffa1c8c048da9fc829c803d6379ba936a84dd9b6399d6c4c29",
|
| 7 |
+
"training/minicpm5-sft/scripts/v11_train/checkpoint_audit.py": "e92117b0453380a38573cd527176e21a71761b14e1341585b0310f276429d420",
|
| 8 |
+
"training/minicpm5-sft/scripts/v11_train/continue_replay_build.py": "b517d508f7b0bb99f0bf1c52bd3cd5d1cf41ccd428a45a8f217d1c1a8e7970a0",
|
| 9 |
+
"training/minicpm5-sft/scripts/v11_train/build_queue.py": "ed0f383b3ed874e68da85de7b82934189744f647165ecde14902231e6be3ae29",
|
| 10 |
+
"training/minicpm5-sft/scripts/v11_train/USER_DEFER_H100_EVAL.json": "5a56c9bb0528806dfa5c089336eb6cfd99bb044e812b5643c3b714ecc6b6dc29",
|
| 11 |
+
"training/minicpm5-sft/scripts/v11_train/resume_round.py": "92906689c4acd23646ed3bf43bd325099848423bcb22c5b85f30fca0b9edfdc8",
|
| 12 |
+
"training/minicpm5-sft/scripts/v11_train/live_probe.py": "24a389611dd7ec2636b2da4dde79bfc9f954346500b9a46e1db98dc38b29ada0",
|
| 13 |
+
"training/minicpm5-sft/scripts/v11_train/AUTHORIZATION.json": "bc5ae309be3fe75db1392ec527df4f97719c311a71a0e47c5a49743006727872",
|
| 14 |
+
"training/minicpm5-sft/scripts/v11_train/audit_and_config.py": "17825423fef54ff266481b49bd3289f8f573d3e8e0548afc05a33afd24b0d934",
|
| 15 |
+
"training/minicpm5-sft/scripts/v11_train/RECOVERY_DEPLOYMENT.json": "443ce142cbdaebed80b2cf03bbb2a81027c9af462bf3098ccf485d1116d4b14d",
|
| 16 |
+
"training/minicpm5-sft/scripts/v11_train/README.md": "7b03d74bfc8538412e0d80bc3fa933368b6aaec661fb68add88f69cbf9604919",
|
| 17 |
+
"training/minicpm5-sft/scripts/v11_train/TRAINING_DEPLOYMENT.json": "08b3e33f3fee67e79b000ca517b80603ca1e86d2c736ec8c6472207398d7281a",
|
| 18 |
+
"training/minicpm5-sft/scripts/v11_train/release_contract.py": "75caeefbc5e2ff28d794b3fe44020c0267694efc0b9143a1641ba3cc046c57f6",
|
| 19 |
+
"training/minicpm5-sft/scripts/v11_train/loss_gate.py": "267e1bb8277512c96c39184e98b0800aaae237221e69613c392af070bbe187f2",
|
| 20 |
+
"training/minicpm5-sft/scripts/v11_train/plan_batch_schedule.py": "7ed41f450baf899029fc57d2846712dd3fbbcfc41d1468aa141fbe5f96f516f7",
|
| 21 |
+
"training/minicpm5-sft/scripts/v11_train/MIDTRAIN_RUNTIME_BASELINE.json": "392e97ca68166981b4be2c081ea6c7c1270d1732b3e188c03112877a39f95e01",
|
| 22 |
+
"training/minicpm5-sft/scripts/v11_train/train_queue.py": "814f464d97528823b8079b76205d23362af7215153f3abfc4ceb996872990a0b",
|
| 23 |
+
"training/minicpm5-sft/scripts/v11_train/schedule_consumption.py": "dd664efdd5dedf30e3927efdd51816583c7f4b2056acd220f6c4aa1b0432b7c4",
|
| 24 |
+
"training/minicpm5-sft/scripts/v11_train/queue_v5a_910c.py": "6e76a1442637f6a4be20aa62821e1d418fda089a66fded66eea9d634313efb8a",
|
| 25 |
+
"training/minicpm5-sft/scripts/v11_train/topology_contract.py": "be33d5fb3b4038d7613ab6e6423d97b037fd8b729872f9c04b01cad9931fc87e",
|
| 26 |
+
"training/minicpm5-sft/scripts/v11_train/audit_extra_replay.py": "1531acd008bb9822b9d68a02ba2741f85380acdc7c108da384732d2661e3c77b",
|
| 27 |
+
"training/minicpm5-sft/scripts/v11_train/scheduler_gate.py": "c19c757759ff0a8c53bca38cc8829c5068ff9482be211b4ec663a95b8cce77c6",
|
| 28 |
+
"training/minicpm5-sft/scripts/v11_train/WEIGHTS_ARCHIVE_DEPLOYMENT.json": "0fe3e8642183730b95531285d8550dd99b9802a74749e3908babc6057f341297",
|
| 29 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/HANDOFF-v11d.md": "989c7fb62b667849888e7a74361f08b8aaf92225b4b2cee8b5d69122251ed67c",
|
| 30 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/fp-v11b.json": "4e1d2aa5fc04f42bf6609f5da51bbcb9c26c3d7df63394f345112b3b1130942d",
|
| 31 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/l3_pool_report.json": "2e813755957d2faa5aadd8bb44ebb2e429d6fc1c8377a5ded40a9a3027b677ca",
|
| 32 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/fingerprint_mix.py": "7c38d92478320a0854fbb3083634bcbc8cde83c74db4f10a84de79389e5d57ec",
|
| 33 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/HANDOFF-v11a.md": "340a13a7236e7f29b6f9b75d8655d947ec2d430c2fcb252cd52e60fcae278003",
|
| 34 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/fp-v11c.json": "d0e4330d968e9fcf70cb3a5373dd36f71870e4155e7d297335b1a02c3895cab8",
|
| 35 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/HANDOFF-v11e.md": "243b79e7e8b908d77d71d2ab7313905072f634f4a5c5a02d7b8570dd6095db91",
|
| 36 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/extend_l3_pool.py": "f13c4657d47471ecb4d3175a106f860e8ab6063ea267b0bd38df1190669b4a82",
|
| 37 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/replay_l3_verified_uuids_v11.txt": "1fec9777293881e7194a7ebb5772fc524ddbd01bd7a5a2d0dadfc5c74f6ae847",
|
| 38 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/mix_report-v11a.json": "4ff75fdc0914e1e71e6ec300090c2997c1d642161d6a554ceb50ef85f1c288ea",
|
| 39 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/fp-v11d.json": "45597dd4da169c40a2102331f6fe1c0a1a8ce5145be9e77ef768f14f505540d6",
|
| 40 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/fp-v11e.json": "a5361cedefdd5a810d11a42fa41496cca42564f650a594704d8210155f631093",
|
| 41 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/mix_report-v11c.json": "1400620c67f7617228e42a27532798e056adfadc4b160ed8d6ded92c8337d318",
|
| 42 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/r11a-v11a.json": "333920933581ec7ef443bf3d9752ae82c11a03922fb749a7df00a748a383e660",
|
| 43 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/build_replay_pool.py": "aa2dab0ac6bf72321223cb3c8f759f6f1a3c10665051ceb5d72f3944c32d8095",
|
| 44 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/derive_v11.py": "dea92ca9c1e637dace90c4fd79da8a925e14174ce62a568806219d7271d1e195",
|
| 45 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/r11b-v11b.json": "90911cc1d910c2c9490481c6fc8e2e21c2fc782e26891e810713a541e4ac8ad7",
|
| 46 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/r11e-v11e.json": "719f7fc0dd30be29ecb1006a7439c2d0bec439cddf401149f627a8f10d417df8",
|
| 47 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/mix_report-v11b.json": "9e80ec97e667647e779ea177ac2d443cf59d8e2d54bbb71536657ecfa166b762",
|
| 48 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/HANDOFF-v11b.md": "9cbf53f953d2f91491df839f929cd6c0dff23b072cdc861071ebbf71fccb1936",
|
| 49 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/r11d-v11d.json": "e923bd418cca942e24ba037bd2ce18af59ef17a2f7fd6c4b0ac327dcf78e946d",
|
| 50 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/r11c-v11c.json": "5db9f06d7ad4d6f7b6b1d12f0cf63e3c8780bab8b626026a1e3675052b03796d",
|
| 51 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/mix_report-v11e.json": "7bc3e892de07e726cc78f716f692faba12152510395f46603629e87e9b5a92f2",
|
| 52 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/SOURCE_BINDING.json": "dbc4e89d2ec3a22f3e6cbf135b90ffc95ced11a186b655f15052f6bae02eea55",
|
| 53 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/mix_report-v11d.json": "e14d8158c04a0a62c43de41c203f460def4e8c2911cc8c82332cc69959f8cda0",
|
| 54 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/HANDOFF-v11.md": "a1989f172dc13b23d2e0e99e2495dc693b8c3de79d21c7c7505e6cfbfe47353d",
|
| 55 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/replay_l3_verified_uuids_v8.txt": "b8a63fce5f82b4cdf91a33fb75c34a51a874ff53b0dc287a1b642fffb058f3b6",
|
| 56 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/HANDOFF-v11c.md": "023b8975de510bd30eb225c1f72364a9d23ab5f714f2fafbe133d94642cedfa5",
|
| 57 |
+
"training/minicpm5-sft/scripts/v11_train/upstream/fp-v11a.json": "bf9e4f8f0d86998f8b505a71432faee8a5709b22753bae10fb75827d8450d604",
|
| 58 |
+
"training/minicpm5-sft/scripts/v11_eval/launch_auto_eval.py": "e6300157cb14703afca52e54cb8671d425c8d7c1b22c6eb379b9cc8ff7e8ef64",
|
| 59 |
+
"training/minicpm5-sft/scripts/v11_eval/gpu_scope_two.py": "ed380257ac49d5baa4c92f3379412bc822bb434484140d2c620c26d8c73bcf2b",
|
| 60 |
+
"training/minicpm5-sft/scripts/v11_eval/runtime_supervisor_two_gpu.py": "ebff4afd2a13445b2aca685091b502e5922e8789cb46b536effb6ae96779597e",
|
| 61 |
+
"training/minicpm5-sft/scripts/v11_eval/compare_final_two_gpu.py": "c6c11d48dd82c91c99af4437bf14ab2d42486cd8d028ffe5f53a8a5daa281a16",
|
| 62 |
+
"training/minicpm5-sft/scripts/v11_eval/queue_eval_two_gpu.py": "f09018cc75644a087a532551fc20ff5574e47a8cb5ebccee1f7acb452d0b05d9",
|
| 63 |
+
"training/minicpm5-sft/scripts/v11_eval/parallel_one_eval.py": "903311c0d9975ae26f445151a84e7ff01210c2ff2040048123b27d08777325c1",
|
| 64 |
+
"training/minicpm5-sft/scripts/v11_eval/eval_base.py": "f2f6aff3f5e275ff27938a9ac8d4d563541439902f493ff23f302ca2f7bd156b",
|
| 65 |
+
"training/minicpm5-sft/scripts/v11_eval/runtime_supervisor64.py": "f18b9b56b0458b01a8774a66667024b70999f5b6d8ce66c1f6274dffc95a8ea2",
|
| 66 |
+
"training/minicpm5-sft/scripts/v11_eval/TWO_GPU_DEPLOYMENT_READY.json": "8692b220067f6e40870d5ed34e941677fc9240e8c5f779ea35dc1f3672faa722",
|
| 67 |
+
"training/minicpm5-sft/scripts/v11_eval/parallel_aggregate.py": "4c4273e536174b37d96102bc56091cf057d6fad2574883a1030693991d901813",
|
| 68 |
+
"training/minicpm5-sft/scripts/v11_eval/GPU_SCOPE_AUTHORIZATION.json": "dd7797a4b1fecc2e16c2efde5f013bea50e625a21b071173a89c36ae943437d2",
|
| 69 |
+
"training/minicpm5-sft/scripts/v11_eval/eval_base_two_gpu.py": "2ad494a2016f589e359faa71ba77f8880b114c71f6544fa27e6008856389207c",
|
| 70 |
+
"training/minicpm5-sft/scripts/v11_eval/cpu_convert_entry.py": "16f41183416d4b27d77c8241a8ec501152b1e345b50daf58378f9642d4dbfee0",
|
| 71 |
+
"training/minicpm5-sft/scripts/v11_eval/resume_prepared_eval.py": "03eea886c8bccaa8a047ec880c38fdf3d48307e1e49b181cc520bd9ebc76affc",
|
| 72 |
+
"training/minicpm5-sft/scripts/v11_eval/resume_two_gpu_prepared.py": "d6f65bde7a0d65047465938619ec4706ef56780085575bb98d5ab062c2683063",
|
| 73 |
+
"training/minicpm5-sft/scripts/v11_eval/compare_final.py": "35f36e095d1b9fe767a106372a2bdc4e218246f0083cfe331f2e963304f97b5e",
|
| 74 |
+
"training/minicpm5-sft/scripts/v11_eval/resume_two_gpu_eval.py": "c49461914eefd31558bb059c1a89d308b49bd2425e0c8dee65352f4832f45418",
|
| 75 |
+
"training/minicpm5-sft/scripts/v11_eval/parallel_handoff.py": "3aacb4016cf5b66a0f0c2390c2d691447c0b3c5b350fe0a2e0f568edc57cb628",
|
| 76 |
+
"training/minicpm5-sft/scripts/v11_eval/serve_replicas_two_gpu.py": "c4fa131e04fe53fe9f037e4773ad10526f71230769da381695d7cfccf9adf0f0",
|
| 77 |
+
"training/minicpm5-sft/scripts/v11_eval/live_probe_two_gpu.py": "67f820d6adb0b308aa32deeb63a38996a99f5e8693ab3fdc85546ceb89ac0887",
|
| 78 |
+
"training/minicpm5-sft/scripts/v11_eval/node0_checkpoint_ops.py": "f84c63402a487665c3b5a43e6b58f4fc64308fd1922c3add9b2edbde5ff0dc7b",
|
| 79 |
+
"training/minicpm5-sft/scripts/v11_eval/queue_eval.py": "f253eed52fe21313d1d5d10e7d23ebeb7581fb8cd1e499b2054a4e12ec07c32a",
|
| 80 |
+
"training/minicpm5-sft/scripts/v11_backup/preupload_later_weights.py": "30ec66b71ddef43b406e44f0384528d0c2aaa405d5018b4ec66a33f4ea68f9f7",
|
| 81 |
+
"training/minicpm5-sft/scripts/v11_backup/package_queue.py": "8f3ae6549c463caade5b7fd0a10a8563a18dad8747a588e3b88f0074e4f8bf81",
|
| 82 |
+
"training/minicpm5-sft/scripts/v11_backup/preupload_private_packages.py": "3672dc1d2351a77e238bee63d3c29b1d5fc891497ff77ee1324368ada670b40e",
|
| 83 |
+
"training/minicpm5-sft/scripts/v11_backup/pack_verified.py": "096603b71a18aaf613f3b053e911b778c6bf8b9131f07babecec2ad662aae7bd",
|
| 84 |
+
"training/minicpm5-sft/scripts/v11_backup/complete_backup.py": "53acd94ba98b55d8d827b81d5992f559b336535c8c72f0bdbb4598517c9b33b4",
|
| 85 |
+
"training/minicpm5-sft/scripts/v11_backup/verify_retired_archive.py": "4b83980f8744ec36754cbbff783dde1b02a1becc5027d86561f4dd017f725099",
|
| 86 |
+
"training/minicpm5-sft/scripts/v11_backup/publish_private_backup.py": "d5b59875b570eaeb6a596fbb9c33cc209ac95e283f414a32e62a9df4c4a393e2",
|
| 87 |
+
"training/minicpm5-sft/scripts/v11_backup/restore_backup.py": "c38e5fef14a15d7cd3ed612af5d93b371436c1fa5b93fc150007ca481b5ff566",
|
| 88 |
+
"training/minicpm5-sft/scripts/v11_backup/merge_checkpoint_archive.py": "c6d73d89e4eb29bff568942b91756d2827736a28418c6afbbc47dba8385d6bf7"
|
| 89 |
+
},
|
| 90 |
+
"archive_sha256": "809014fdf179129889a4d9f3ea46db7c9d1febce82b4b81d02e940a327d11a63",
|
| 91 |
+
"data_and_models_not_duplicated": true
|
| 92 |
+
}
|
runs/20261011/metadata/v11-reproduction-code.tar.gz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:809014fdf179129889a4d9f3ea46db7c9d1febce82b4b81d02e940a327d11a63
|
| 3 |
+
size 2884690
|