import json,hashlib from pathlib import Path import onnxruntime as ort,numpy as np from ai_edge_litert.interpreter import Interpreter,OpResolverType r=Path('/workspace/vds-litert-batch2');d=r/'learning-backbones/fireviewer_dfine_m_strict_v1';p=d/'model-protected.tflite' options=ort.SessionOptions();options.intra_op_num_threads=6 ref=ort.InferenceSession(str(d/'raw-onnx/raw-original.onnx'),sess_options=options,providers=['CPUExecutionProvider']) i=Interpreter(model_path=str(p),num_threads=6,experimental_op_resolver_type=OpResolverType.BUILTIN_WITHOUT_DEFAULT_DELEGATES);i.allocate_tensors();errors=[] for seed in (842,843,844): x=np.random.default_rng(seed).uniform(0,1,(1,3,704,704)).astype(np.float32) reference=ref.run(None,{'images':x});i.set_tensor(i.get_input_details()[0]['index'],x);i.invoke() for expected,detail in zip(reference,i.get_output_details()): actual=i.get_tensor(detail['index']);np.testing.assert_allclose(actual,expected,atol=2e-3,rtol=2e-3);errors.append(float(np.max(np.abs(actual-expected)))) report={'key':'fireviewer_dfine_m_strict_v1','phase':'validated_frozen_component','upstream_onnx_parity_passed':True,'backbone':str(p),'source_sha256':hashlib.sha256((r/'models/upstream/fireviewer_dfine_m_strict_v1/model.onnx').read_bytes()).hexdigest(),'sha256':hashlib.sha256(p.read_bytes()).hexdigest(),'input_shape':[1,3,704,704],'outputs':[{'index':n,'shape':list(map(int,o['shape']))} for n,o in enumerate(i.get_output_details())],'max_abs_errors':errors,'seeds':[842,843,844],'atol':2e-3,'rtol':2e-3,'preserve_all_tensors':False,'arena_protection':json.loads((d/'arena-protection.json').read_text())} (d/'parity.json').write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report),flush=True)