| { |
| "name": "TinyReceiptVQA-StructuredQA-22M-BPE1536-DirectNoValue-LoRA-Router-e100", |
| "format": "tiny_receipt_vqa_split_onnx_v1", |
| "library": "onnxruntime", |
| "opset": 18, |
| "architecture": { |
| "vocab_size": 1536, |
| "d_model": 320, |
| "heads": 8, |
| "enc_layers": 6, |
| "dec_layers": 4, |
| "ff_mult": 4, |
| "dropout": 0.1, |
| "max_q_len": 192, |
| "max_out_len": 192, |
| "img_tokens": 210, |
| "vision_stride": 32, |
| "use_adapters": true, |
| "use_router": true, |
| "adapter_bottleneck": 64, |
| "adapter_families": 8, |
| "lora_r": 8, |
| "lora_alpha": 16.0, |
| "lora_dropout": 0.05, |
| "lora_targets": "transformer" |
| }, |
| "source": { |
| "selection": "epoch-100 last.pt; heldout was excluded from training and intermediate checkpointing, then used post hoc to compare e79 best.pt with e100 last.pt; e100 last.pt was selected for higher heldout answer exact", |
| "target_schema": "direct_answer_no_value_v1", |
| "training_precision": "BF16 autocast; saved source tensors are FP32", |
| "tokenizer": { |
| "type": "byte_fallback_bpe", |
| "version": 1, |
| "vocab_size": 1536, |
| "normalization": "NFC", |
| "tokenizer_hash": "5801826ac9092bdc984210af805d2ff20f0398b80adaf5963ef13b04771a8584" |
| }, |
| "heldout_usage_note": "Heldout was excluded from training and intermediate checkpointing. After training it was used to compare e79 best.pt and e100 last.pt and to select e100 last.pt, so it is a development test rather than a final blind benchmark.", |
| "pytorch_or_safetensors_checkpoint_distributed": false |
| }, |
| "artifacts": { |
| "encoder": { |
| "path": "encoder_model.onnx", |
| "bytes": 58500824, |
| "sha256": "0c6469ef75eeb266c3dbc77c414d658f98f704264b72bdc7dfeed9cf37217db7" |
| }, |
| "decoder": { |
| "path": "decoder_model.onnx", |
| "bytes": 29924405, |
| "sha256": "3fff897777fa5e9805c01a6779812f4adf33e1294f4e2003dd823c04a3300b05" |
| }, |
| "encoder_int8_w8a8": { |
| "path": "encoder_model_int8.onnx", |
| "bytes": 17808595, |
| "sha256": "924a60cfa8172456131aedb2e672af2ad1de7e4fa975bf14f4837a49e09cec94", |
| "quantize_linear_nodes": 120, |
| "dequantize_linear_nodes": 167 |
| }, |
| "decoder_int8_w8a8": { |
| "path": "decoder_model_int8.onnx", |
| "bytes": 10917677, |
| "sha256": "24dbf7411719fea928f1f249db9b981eedf4b3af6751bec0970f242ca3f99d0a", |
| "quantize_linear_nodes": 109, |
| "dequantize_linear_nodes": 146 |
| } |
| }, |
| "evaluation": { |
| "onnx_parity": { |
| "status": "passed", |
| "scope": "graph-level numerical parity on dynamic shapes", |
| "exporter_validation": { |
| "split_vs_model_max_abs_difference": 4.0531158447265625e-06, |
| "onnx_checker": "passed", |
| "onnxruntime": "1.23.2", |
| "provider": "CPUExecutionProvider", |
| "validation_shapes": { |
| "image": [ |
| 1, |
| 1, |
| 320, |
| 672 |
| ], |
| "question_ids": [ |
| 1, |
| 11 |
| ], |
| "decoder_input_ids": [ |
| 1, |
| 3 |
| ] |
| }, |
| "explicit_family_ids_validated": [ |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5, |
| 6, |
| 7 |
| ], |
| "explicit_family_encoder_memory_max_abs_difference": 1.996755599975586e-05, |
| "explicit_family_decoder_logits_max_abs_difference": 1.049041748046875e-05, |
| "encoder_memory_max_abs_difference": 1.9311904907226562e-05, |
| "encoder_mask_max_abs_difference": 0.0, |
| "router_logits_max_abs_difference": 1.1444091796875e-05, |
| "selected_family_ids_max_abs_difference": 0.0, |
| "decoder_logits_max_abs_difference": 6.198883056640625e-06 |
| }, |
| "lora_merge": { |
| "enabled": true, |
| "layers_merged": 20, |
| "module_names": [ |
| "encoder.layers.0.linear1", |
| "encoder.layers.0.linear2", |
| "encoder.layers.1.linear1", |
| "encoder.layers.1.linear2", |
| "encoder.layers.2.linear1", |
| "encoder.layers.2.linear2", |
| "encoder.layers.3.linear1", |
| "encoder.layers.3.linear2", |
| "encoder.layers.4.linear1", |
| "encoder.layers.4.linear2", |
| "encoder.layers.5.linear1", |
| "encoder.layers.5.linear2", |
| "decoder.layers.0.linear1", |
| "decoder.layers.0.linear2", |
| "decoder.layers.1.linear1", |
| "decoder.layers.1.linear2", |
| "decoder.layers.2.linear1", |
| "decoder.layers.2.linear2", |
| "decoder.layers.3.linear1", |
| "decoder.layers.3.linear2" |
| ], |
| "max_abs_difference": 5.245208740234375e-06 |
| } |
| }, |
| "int8_w8a8": { |
| "format": "tiny_receipt_vqa_onnx_w8a8_u8s8_qdq_v1", |
| "onnx_checker": "passed", |
| "runtime_validation": { |
| "onnxruntime": "passed", |
| "provider": "CPUExecutionProvider", |
| "family_ids": [ |
| -1, |
| 0, |
| 1, |
| 2, |
| 3, |
| 4, |
| 5, |
| 6, |
| 7 |
| ], |
| "dynamic_prefix_lengths": [ |
| 1, |
| 10, |
| 20 |
| ], |
| "onnxruntime_version": "1.23.2" |
| }, |
| "heldout_evaluation": { |
| "status": "passed", |
| "dataset": "eval/heldout supported phone/address records", |
| "records_total": 2000, |
| "routing": "learned_router", |
| "evaluation_mode": "final_split_onnx_files", |
| "runtime": { |
| "library": "onnxruntime", |
| "version": "1.23.2", |
| "provider": "CUDAExecutionProvider" |
| }, |
| "batch_size": 24, |
| "artifacts": { |
| "fp32": { |
| "encoder": { |
| "filename": "encoder_model.onnx", |
| "bytes": 58500824, |
| "sha256": "0c6469ef75eeb266c3dbc77c414d658f98f704264b72bdc7dfeed9cf37217db7" |
| }, |
| "decoder": { |
| "filename": "decoder_model.onnx", |
| "bytes": 29924405, |
| "sha256": "3fff897777fa5e9805c01a6779812f4adf33e1294f4e2003dd823c04a3300b05" |
| } |
| }, |
| "int8": { |
| "encoder": { |
| "filename": "encoder_model_int8.onnx", |
| "bytes": 17808595, |
| "sha256": "924a60cfa8172456131aedb2e672af2ad1de7e4fa975bf14f4837a49e09cec94" |
| }, |
| "decoder": { |
| "filename": "decoder_model_int8.onnx", |
| "bytes": 10917677, |
| "sha256": "24dbf7411719fea928f1f249db9b981eedf4b3af6751bec0970f242ca3f99d0a" |
| } |
| } |
| }, |
| "summary": { |
| "fp32": { |
| "address": { |
| "n": 1032, |
| "answer_exact": 0.9496124031007752, |
| "recomputed_n": 1032, |
| "recomputed_answer_exact": 0.9486434108527132, |
| "target_exact": 0.015503875968992248 |
| }, |
| "overall": { |
| "n": 2000, |
| "answer_exact": 0.9705, |
| "recomputed_n": 2000, |
| "recomputed_answer_exact": 0.97, |
| "target_exact": 0.453 |
| }, |
| "phone_number": { |
| "n": 968, |
| "answer_exact": 0.9927685950413223, |
| "recomputed_n": 968, |
| "recomputed_answer_exact": 0.9927685950413223, |
| "target_exact": 0.9194214876033058 |
| } |
| }, |
| "int8": { |
| "address": { |
| "n": 1032, |
| "answer_exact": 0.9437984496124031, |
| "recomputed_n": 1032, |
| "recomputed_answer_exact": 0.9457364341085271, |
| "target_exact": 0.01065891472868217 |
| }, |
| "overall": { |
| "n": 2000, |
| "answer_exact": 0.968, |
| "recomputed_n": 2000, |
| "recomputed_answer_exact": 0.969, |
| "target_exact": 0.4505 |
| }, |
| "phone_number": { |
| "n": 968, |
| "answer_exact": 0.993801652892562, |
| "recomputed_n": 968, |
| "recomputed_answer_exact": 0.993801652892562, |
| "target_exact": 0.9194214876033058 |
| } |
| } |
| }, |
| "comparison": { |
| "answer_agreement": 0.9925, |
| "changed_predictions": 388, |
| "n": 2000, |
| "prediction_exact_agreement": 0.806, |
| "selected_family_agreement": 1.0 |
| }, |
| "timing": { |
| "fp32": { |
| "encoder_seconds": 4.9500676593743265, |
| "decoder_seconds": 20.797384655103087, |
| "total_seconds": 25.747452314477414, |
| "decoder_calls": 2953, |
| "providers": [ |
| "CUDAExecutionProvider", |
| "CPUExecutionProvider" |
| ], |
| "encoder": "encoder_model.onnx", |
| "decoder": "decoder_model.onnx" |
| }, |
| "int8": { |
| "encoder_seconds": 5.913507376797497, |
| "decoder_seconds": 26.702236368786544, |
| "total_seconds": 32.61574374558404, |
| "decoder_calls": 2944, |
| "providers": [ |
| "CUDAExecutionProvider", |
| "CPUExecutionProvider" |
| ], |
| "encoder": "encoder_model_int8.onnx", |
| "decoder": "decoder_model_int8.onnx" |
| } |
| }, |
| "timing_note": "Static W8A8 speed depends on QDQ fusion and the selected execution provider." |
| } |
| }, |
| "source_heldout_reference": { |
| "status": "source_pytorch_reference_not_full_onnx_rerun", |
| "dataset": "eval/heldout supported phone/address records", |
| "records_total": 2000, |
| "routing": "learned_router", |
| "source_model": "epoch-100 last.pt; heldout was excluded from training and intermediate checkpointing, then used post hoc to compare e79 best.pt with e100 last.pt; e100 last.pt was selected for higher heldout answer exact; the source checkpoint container is not distributed in this package", |
| "onnx_fp32_agreement_note": "The source PyTorch reference and the final ONNX FP32 rerun agree exactly on all nine reported accuracy metrics across the overall, address, and phone subsets.", |
| "summary": { |
| "address": { |
| "n": 1032, |
| "answer_exact": 0.9496124031007752, |
| "recomputed_n": 1032, |
| "recomputed_answer_exact": 0.9486434108527132, |
| "target_exact": 0.015503875968992248 |
| }, |
| "overall": { |
| "n": 2000, |
| "answer_exact": 0.9705, |
| "recomputed_n": 2000, |
| "recomputed_answer_exact": 0.97, |
| "target_exact": 0.453 |
| }, |
| "phone_number": { |
| "n": 968, |
| "answer_exact": 0.9927685950413223, |
| "recomputed_n": 968, |
| "recomputed_answer_exact": 0.9927685950413223, |
| "target_exact": 0.9194214876033058 |
| } |
| } |
| } |
| }, |
| "license": "Apache-2.0" |
| } |
|
|