| { |
| "onnx_artifact": { |
| "format": "tiny_receipt_vqa_split_onnx_v1", |
| "opset": 18, |
| "validation": { |
| "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 |
| } |
| }, |
| "variants": { |
| "fp32": { |
| "encoder": "encoder_model.onnx", |
| "decoder": "decoder_model.onnx", |
| "weight_dtype": "float32", |
| "activation_dtype": "float32", |
| "compute_dtype": "float32", |
| "encoder_sha256": "0c6469ef75eeb266c3dbc77c414d658f98f704264b72bdc7dfeed9cf37217db7", |
| "encoder_bytes": 58500824, |
| "decoder_sha256": "3fff897777fa5e9805c01a6779812f4adf33e1294f4e2003dd823c04a3300b05", |
| "decoder_bytes": 29924405 |
| }, |
| "int8_w8a8": { |
| "format": "tiny_receipt_vqa_onnx_w8a8_u8s8_qdq_v1", |
| "encoder": "encoder_model_int8.onnx", |
| "decoder": "decoder_model_int8.onnx", |
| "mode": "static_w8a8_qdq", |
| "quant_format": "QDQ", |
| "scheme": "U8S8", |
| "weight_dtype": "int8", |
| "weight_granularity": "per_output_channel", |
| "activation_dtype": "uint8", |
| "activation_granularity": "per_tensor", |
| "accumulation_dtype": "int32", |
| "operators": [ |
| "Conv", |
| "MatMul", |
| "Gemm" |
| ], |
| "encoder_sha256": "924a60cfa8172456131aedb2e672af2ad1de7e4fa975bf14f4837a49e09cec94", |
| "encoder_bytes": 17808595, |
| "decoder_sha256": "24dbf7411719fea928f1f249db9b981eedf4b3af6751bec0970f242ca3f99d0a", |
| "decoder_bytes": 10917677, |
| "calibration": { |
| "source": "synthetic_training_split", |
| "heldout_used": false, |
| "records": 256, |
| "decoder_feeds": 768, |
| "receipt_limit": 1024, |
| "prefixes_per_record": 3, |
| "family_counts": { |
| "address": 43, |
| "item_lookup": 42, |
| "item_math": 42, |
| "item_row": 43, |
| "phone": 43, |
| "store": 43 |
| }, |
| "seed": 71 |
| }, |
| "validation": { |
| "onnx_checker": "passed", |
| "runtime": { |
| "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" |
| }, |
| "optimized_graph": { |
| "encoder": { |
| "nodes": { |
| "Add": 69, |
| "ArgMax": 1, |
| "Cast": 1, |
| "Clip": 2, |
| "Concat": 24, |
| "DequantizeLinear": 67, |
| "Div": 9, |
| "Equal": 1, |
| "Erf": 8, |
| "Expand": 3, |
| "Gather": 5, |
| "GreaterOrEqual": 1, |
| "InstanceNormalization": 13, |
| "LayerNormalization": 12, |
| "Mul": 44, |
| "Not": 1, |
| "QGemm": 8, |
| "QLinearConv": 13, |
| "QLinearMatMul": 32, |
| "QuantizeLinear": 61, |
| "QuickGelu": 13, |
| "ReduceSum": 2, |
| "Reshape": 100, |
| "Shape": 22, |
| "Slice": 19, |
| "Softmax": 6, |
| "Split": 6, |
| "Squeeze": 26, |
| "Transpose": 77, |
| "Unsqueeze": 9, |
| "Where": 2 |
| }, |
| "initializers": { |
| "BOOL": 1, |
| "FLOAT": 240, |
| "INT32": 8, |
| "INT64": 42, |
| "INT8": 78, |
| "UINT8": 120 |
| } |
| }, |
| "decoder": { |
| "nodes": { |
| "Add": 51, |
| "Clip": 1, |
| "Concat": 31, |
| "DequantizeLinear": 40, |
| "Div": 5, |
| "Equal": 1, |
| "Erf": 5, |
| "Expand": 6, |
| "Gather": 5, |
| "LayerNormalization": 13, |
| "Mul": 28, |
| "QGemm": 8, |
| "QLinearMatMul": 39, |
| "QuantizeLinear": 54, |
| "Reshape": 97, |
| "Shape": 14, |
| "Slice": 25, |
| "Softmax": 8, |
| "Split": 8, |
| "Squeeze": 30, |
| "Transpose": 67, |
| "Trilu": 1, |
| "Unsqueeze": 11, |
| "Where": 3 |
| }, |
| "initializers": { |
| "BOOL": 1, |
| "FLOAT": 186, |
| "INT32": 8, |
| "INT64": 44, |
| "INT8": 58, |
| "UINT8": 109 |
| } |
| } |
| }, |
| "heldout": { |
| "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." |
| } |
| } |
| } |
| } |
| }, |
| "heldout_metrics": { |
| "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 |
| } |
| } |
| }, |
| "int8_w8a8_heldout": { |
| "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." |
| }, |
| "metric_note": "heldout_metrics is the selected source-model reference; int8_w8a8_heldout, when present, is a direct run of the final split FP32 and INT8 ONNX files." |
| } |
|
|