Instructions to use dnagpt/laya-bio-models with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Laya
How to use dnagpt/laya-bio-models with Laya:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
File size: 4,789 Bytes
d35dd87 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | """Frozen sequential raw/full-BPE matched CE pair; stops on invariant failure."""
import hashlib
import json
from pathlib import Path
import subprocess
import sys
import time
ROOT=Path(__file__).resolve().parents[1]
RUNS=ROOT/'artifacts/laya_direct_legacy'
REP=ROOT/'artifacts/laya_direct_bpe_legacy_representation'
def sha(path):
return hashlib.sha256(path.read_bytes()).hexdigest()
def status(**value):
value.update(updated_utc=time.strftime('%Y-%m-%dT%H:%M:%SZ',time.gmtime()),test_access=False,no_cpt=True)
temp=RUNS/'pair_status.tmp'
temp.write_text(json.dumps(value,indent=2)+'\n')
temp.replace(RUNS/'pair_status.json')
print(json.dumps(value),flush=True)
def check_summary(path,smoke=False):
s=json.loads(path.read_text())
assert s['smoke_only']==smoke and s['formal']!=smoke
assert not s['test_access'] and s['no_cpt']
assert s['checkpoint_reload_logits_match'] and s['checkpoint_reload_input_ids_match']
assert s['training']['finite'] and s['embedding_trainable']
if not smoke:
assert s['training']['updates']==3005 and s['training']['examples_consumed']==96160
assert s['n_rows']=={'train':32050,'selection_dev':1978,'calibration':1986}
assert all(x['truncated_count']==0 for x in s['item_stats'].values())
if s['condition']=='full_bpe':
assert s['expansion']['new_vocab_size']==78367
assert s['expansion']['maximum_initialization_error']==0
assert len(s['new_embedding_gradient_probe'])==2
assert all(x['gradient_norm']>0 for x in s['new_embedding_gradient_probe'].values())
return s
def main():
for condition in ('raw','full_bpe'):
check_summary(RUNS/f'smoke_{condition}/summary.json',smoke=True)
audit=json.loads((RUNS/'audit/input_audit.json').read_text())
assert audit['same_samples_labels_candidate_markers'] and audit['full_sequence_reconstruction_checked']
gpu=subprocess.check_output(['nvidia-smi','--query-gpu=memory.used','--format=csv,noheader,nounits'],text=True)
if int(gpu.strip().splitlines()[0])>=500:raise RuntimeError('GPU is occupied')
paths=[ROOT/'scripts'/name for name in ('laya_direct_bpe.py','laya_direct_experiment.py',
'laya_formal_experiment.py','laya_metrics.py','run_laya_direct_pair.py')]
paths+=list(p for p in REP.rglob('*') if p.is_file())
paths+=[ROOT/'artifacts/laya_formal_data/eligible_ids.json',RUNS/'audit/input_audit.json']
paths+=sorted((ROOT/'vendor/laya/laya').glob('*.py'))
for task in ('promoter_detection','fold_class'):
paths += [ROOT/f'artifacts/laya_formal_data/{task}_{s}.jsonl' for s in ('train','selection_dev','calibration')]
snapshot=RUNS/'frozen_pair'
snapshot.mkdir(exist_ok=True)
manifest={'seed':20260922,'conditions':['raw','full_bpe'],'updates':3005,'examples_consumed':96160,
'hashes':{str(p.relative_to(ROOT)):sha(p) for p in paths},'no_cpt':True,'test_access':False}
manifest_path=snapshot/'run_manifest.json'
if manifest_path.exists():
if json.loads(manifest_path.read_text())!=manifest:raise RuntimeError('Frozen manifest changed')
else:manifest_path.write_text(json.dumps(manifest,indent=2)+'\n')
(RUNS/'logs').mkdir(exist_ok=True)
completed=[]
for condition in ('raw','full_bpe'):
for name,expected in manifest['hashes'].items():
if sha(ROOT/name)!=expected:raise RuntimeError(f'Frozen input changed: {name}')
output=RUNS/f'{condition}_seed20260922'
if (output/'summary.json').exists():
check_summary(output/'summary.json')
completed.append(condition)
continue
command=[sys.executable,'-u',str(ROOT/'scripts/laya_direct_experiment.py'),
'--condition',condition,'--output-dir',str(output)]
with (RUNS/'logs'/f'{condition}_seed20260922.log').open('w') as log:
process=subprocess.Popen(command,cwd=ROOT,stdout=log,stderr=subprocess.STDOUT)
while process.poll() is None:
status(state='running',condition=condition,pid=process.pid,completed=completed,command=command)
time.sleep(30)
if process.returncode!=0:raise RuntimeError(f'{condition} exited {process.returncode}; see log')
check_summary(output/'summary.json')
completed.append(condition)
left=check_summary(RUNS/'raw_seed20260922/summary.json')
right=check_summary(RUNS/'full_bpe_seed20260922/summary.json')
assert all(left['item_stats'][s]['membership_sha256']==right['item_stats'][s]['membership_sha256'] for s in left['item_stats'])
status(state='complete',completed=completed)
if __name__=='__main__':
try:main()
except Exception as exc:
status(state='failed',error=str(exc))
raise
|