Audio8-ASR-Infinite-Compressed / sources /scripts /verify_published_q3_linux_consumers_v2.py
Reza2kn's picture
Verify fresh public CPU, MLX, CUDA and Vulkan consumers
8bdbdfc verified
Raw History Blame Contribute Delete
5.92 kB
"""Fresh public HTTP bytes and actual shipped CPU/CUDA/Vulkan shell launchers."""
from pathlib import Path,PurePosixPath
from concurrent.futures import ThreadPoolExecutor
import argparse,hashlib,json,os,subprocess,sys,time,urllib.request
B=Path('/home/rezo/audio8-q4-recovery-20260924');HELP=B/'gguf-stream-observer-v2'
sys.path[:0]=[str(HELP/'scripts'),str(HELP)]
import probe_native_candidate_linux as observer
sys.path.insert(0,'/dev/shm/audio8-q3-exact-gpu-v1')
from validate_caption_run_v2 import validate as validate_native
sys.path.insert(0,'/dev/shm/audio8-q3-exact-gpu-v1')
import probe_q3_exact_gguf_smoke_v1 as gpu
REPO='Reza2kn/Audio8-ASR-Infinite-Compressed'
def sha(p):
with Path(p).open('rb') as f:return hashlib.file_digest(f,'sha256').hexdigest()
def main():
p=argparse.ArgumentParser();p.add_argument('--commit',required=True);p.add_argument('--manifest-sha256',required=True);p.add_argument('--output',type=Path,required=True);a=p.parse_args()
assert len(a.commit)==40 and set(a.commit)<=set('0123456789abcdef');root=a.output;root.mkdir();reports=root/'verification';reports.mkdir()
state=dict(status='downloading',repo=REPO,commit=a.commit,downloaded_files=[],weights_fresh_downloaded=True,cases=[],production_ready=False,script_sha256=sha(__file__))
def save():(reports/'verification.json').write_text(json.dumps(state,indent=2)+'\n')
def download(n,h,size=None):
assert not PurePosixPath(n).is_absolute() and '..' not in PurePosixPath(n).parts
dest=root/n;dest.parent.mkdir(parents=True,exist_ok=True);digest=hashlib.sha256();count=0
with urllib.request.urlopen(f'https://huggingface.co/{REPO}/resolve/{a.commit}/{n}',timeout=90) as inp,dest.open('xb') as out:
while chunk:=inp.read(1<<20):
count+=len(chunk);assert count<3*1024**3;out.write(chunk);digest.update(chunk)
assert digest.hexdigest()==h and (size is None or count==size),n
return dict(path=n,sha256=h,bytes=count,fresh_http_download=True)
try:
save();state['downloaded_files'].append(download('release_manifest.json',a.manifest_sha256));m=json.loads((root/'release_manifest.json').read_text());records={r['path']:r for r in m['files']}
wanted=[n for n in records if n.startswith(('assets/','bin/','runtime/','gguf/bin/')) or n in ['run-cpu-linux-x86_64.sh','run-cuda.sh','run-vulkan.sh','execution_profile.json','README.md','model/model.a8m','model/manifest.json','gguf/audio8-q3-exact-q4_0.gguf']]
with ThreadPoolExecutor(max_workers=4) as pool:
for x in pool.map(lambda n:download(n,records[n]['sha256'],records[n]['bytes']),wanted):state['downloaded_files'].append(x);save()
for n in ['bin/linux-x86_64/audio8-stream','gguf/bin/linux-x86_64-cuda/audio8-gguf','gguf/bin/linux-x86_64-vulkan/audio8-gguf']:(root/n).chmod(0o755)
assert 'LD_LIBRARY_PATH' not in os.environ
state['status']='running_downloaded_launchers';save();table=gpu.token_table(root/'assets/tokenizer.a8tok')
inputroot=B/'q3-public-consumer-inputs-v1';cases=json.loads((inputroot/'manifest.json').read_text())['cases']
for case in cases:
case=dict(case,path=str(inputroot/(case['id']+'.f32le')));assert sha(case['path'])==case['sha256']
lang=case['language'];prefix=reports/(lang+'.a8pfx');command=['/bin/sh',str(root/'run-cpu-linux-x86_64.sh'),'--prepare-prefix',lang,str(prefix)]
with (reports/f'cpu-{lang}-prepare.stdout').open('x') as out,(reports/f'cpu-{lang}-prepare.stderr').open('x') as err:subprocess.run(command,stdout=out,stderr=err,check=True,timeout=90)
paths=observer.output_paths(reports/f'cpu-{lang}.json');command=['/bin/sh',str(root/'run-cpu-linux-x86_64.sh'),'-',lang,str(prefix)]
rows,receipts,feeder=observer.capture_process(command,Path(case['path']),case['samples'],paths,timeout_seconds=120,max_events=3000,ready_timeout=90,ready_kind='caption_stream_ready')
ready=rows[0];assert ready['model_body_sha256']=='1048b0c5faca3dfd681564fcdcef5babcd01e7a8be85d477f79d7b05ad961a8a' and ready['activation_backend']=='avx512_bf16_q4_q3full' and ready['constant_prefix_used'] and ready['batch']==1 and ready['workers']==8
result=validate_native(rows,receipts,case,root/'assets/tokenizer.a8tok');assert result['score']['raw_hypothesis'].strip()
result.update(feeder=feeder,command=command,invoked_shipped_launcher=True,memory=observer.parse_time(paths['timing'].read_text(),'Linux'))
paths['report'].write_text(json.dumps(result,indent=2)+'\n');state['cases'].append(dict(backend='native_cpu',language=lang,status='passed',text=result['score']['raw_hypothesis'],report=str(paths['report']),report_sha256=sha(paths['report'])));save();print(json.dumps(state['cases'][-1]),flush=True)
case=observer.load_input_case(B/'gguf-vulkan-en0-v5/input-manifest.json','en0-short')
for backend,device in [('cuda',0),('vulkan',0),('vulkan',1)]:
paths=observer.output_paths(reports/f'{backend}-{device}.json');command=['/bin/sh',str(root/f'run-{backend}.sh'),'-','en',str(device)]
rows,receipts,feeder=observer.capture_process(command,case['path'],case['samples'],paths,timeout_seconds=180,max_events=1000,ready_timeout=90,ready_kind='caption_stream_ready')
result=gpu.validate(rows,case,table,backend,device,1);result.update(feeder=feeder,command=command,invoked_shipped_launcher=True,memory=observer.parse_time(paths['timing'].read_text(),'Linux'))
paths['report'].write_text(json.dumps(result,indent=2)+'\n');state['cases'].append(dict(backend=backend,device=device,language='en',status='passed',text=result['text'],report=str(paths['report']),report_sha256=sha(paths['report'])));save();print(json.dumps(state['cases'][-1]),flush=True)
assert all(sha(root/x['path'])==x['sha256'] for x in state['downloaded_files'])
state.update(status='verified_published_consumers',all_downloaded_assets_unchanged=True,finished_unix=time.time());save()
except BaseException as e:state.update(status='failed',error=repr(e),finished_unix=time.time());save();raise
if __name__=='__main__':main()