unicorn who dev
Complete FireViewer Android learning SDK, source and verification records
dee7f43 verified Download conversion/check_fire_runtime216.py from fireviewer/litert-models: direct link, hf CLI and curl.
- Browser
- Download file 2.31 kB
-
https://huggingface.co/fireviewer/litert-models/resolve/main/conversion/check_fire_runtime216.py
- Command line
-
hf download hf://fireviewer/litert-models/conversion/check_fire_runtime216.py
-
curl -L -o check_fire_runtime216.py https://huggingface.co/fireviewer/litert-models/resolve/main/conversion/check_fire_runtime216.py
2.31 kB
| """Run each delivery with the same TensorFlow Lite release as Android (Linux ABI).""" | |
| import os | |
| os.environ.update(CUDA_VISIBLE_DEVICES='',TF_CPP_MIN_LOG_LEVEL='2',TF_NUM_INTRAOP_THREADS='4',TF_NUM_INTEROP_THREADS='2') | |
| import sys,json,hashlib,tempfile | |
| from pathlib import Path | |
| import tensorflow as tf,numpy as np | |
| root=Path('/workspace/vds-litert-batch2') | |
| for key in sys.argv[1:]: | |
| out=root/'learning'/key;artifact=out/'model.tflite' | |
| def load(): | |
| i=tf.lite.Interpreter(model_path=str(artifact),num_threads=4,experimental_op_resolver_type=tf.lite.experimental.OpResolverType.BUILTIN_WITHOUT_DEFAULT_DELEGATES) | |
| return i,{n:i.get_signature_runner(n) for n in ['infer','train','save','restore']} | |
| i,s=load();x=np.random.default_rng(420).uniform(0,1,(1,3,128,192)).astype(np.float32) | |
| if 'dinov3' in key: | |
| y=np.zeros((1,3,448,448),np.float32);y[:,2]=1;y[:,0,100:250,150:300]=1;y[:,1,160:170,200:210]=1 | |
| targets={'y':y,'presence':np.array([[1,0]],np.float32),'abstention':np.array([0],np.float32),'supervision':np.ones(4,np.float32)} | |
| else: | |
| y=np.zeros((1,100,6),np.float32);y[0,0]=[.2,.2,.4,.5,0,1];y[0,1]=[.6,.5,.8,.8,1,1];targets={'y':y} | |
| before=s['infer'](x=x);loss=float(s['train'](x=x,**targets,learning_rate=np.float32(.001))['loss']);assert np.isfinite(loss) | |
| after=s['infer'](x=x);assert any(not np.array_equal(before[n],after[n]) for n in before) | |
| with tempfile.TemporaryDirectory() as d: | |
| path=np.array(str(Path(d)/'weights'),dtype=np.bytes_);s['save'](checkpoint_path=path) | |
| j,t=load();t['restore'](checkpoint_path=path) | |
| for n,v in after.items():np.testing.assert_array_equal(v,t['infer'](x=x)[n]) | |
| for runner in [s,t]:runner['train'](x=x,**targets,learning_rate=np.float32(.001)) | |
| a=s['infer'](x=x);b=t['infer'](x=x) | |
| for n in a:np.testing.assert_array_equal(a[n],b[n]) | |
| report={'key':key,'runtime':tf.__version__,'platform':'Linux x86_64; same LiteRT release as Android, different ABI','sha256':hashlib.sha256(artifact.read_bytes()).hexdigest(),'train':True,'loss':loss,'restart_exact':True,'optimizer_resume_exact':True,'two_object_fixture':'dinov3' not in key} | |
| (out/'runtime216_validation.json').write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report),flush=True) | |
| del i,s,j,t | |