{ "format": "tiny_receipt_vqa_split_onnx_v1", "source_format": "safetensors", "tokenizer": { "type": "byte_fallback_bpe", "version": 1, "vocab_size": 1536, "normalization": "NFC", "tokenizer_hash": "5801826ac9092bdc984210af805d2ff20f0398b80adaf5963ef13b04771a8584" }, "target_schema": "direct_answer_no_value_v1", "opset": 18, "exporter": { "torch": "2.12.0+cu130", "dynamo": true, "external_data": false, "max_batch_size": 8, "onnx_debug_metadata_entries_removed": { "encoder": 687, "decoder": 585 }, "lora": { "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 } }, "files": { "encoder": "encoder_model.onnx", "decoder": "decoder_model.onnx", "config": "config.json", "vocab": "vocab.json", "encoder_sha256": "0c6469ef75eeb266c3dbc77c414d658f98f704264b72bdc7dfeed9cf37217db7", "encoder_bytes": 58500824, "decoder_sha256": "3fff897777fa5e9805c01a6779812f4adf33e1294f4e2003dd823c04a3300b05", "decoder_bytes": 29924405, "encoder_int8_w8a8": "encoder_model_int8.onnx", "encoder_int8_w8a8_sha256": "924a60cfa8172456131aedb2e672af2ad1de7e4fa975bf14f4837a49e09cec94", "encoder_int8_w8a8_bytes": 17808595, "decoder_int8_w8a8": "decoder_model_int8.onnx", "decoder_int8_w8a8_sha256": "24dbf7411719fea928f1f249db9b981eedf4b3af6751bec0970f242ca3f99d0a", "decoder_int8_w8a8_bytes": 10917677 }, "input_contract": { "image": { "dtype": "float32", "shape": [ "batch", 1, 320, 672 ], "range": "[-1, 1]", "preprocessing": "grayscale, resize to 672x320 (width x height), divide by 255, then (x - 0.5) / 0.5" }, "question_ids": { "dtype": "int64", "shape": [ "batch", "question_length" ], "maximum_length": 192 }, "family_ids": { "dtype": "int64", "shape": [ "batch" ], "values": "-1 selects the learned router; 0..7 explicitly selects an adapter" }, "decoder_input_ids": { "dtype": "int64", "shape": [ "batch", "target_length" ], "maximum_length": 192 } }, "outputs": { "encoder": [ "memory", "memory_padding_mask", "router_logits", "selected_family_ids" ], "decoder": [ "logits" ] }, "adapter_families": { "ordered_names": [ "phone", "address", "store", "item_row", "item_math", "item_lookup", "math", "other" ], "name_to_id": { "phone": 0, "address": 1, "store": 2, "item_row": 3, "item_math": 4, "item_lookup": 5, "math": 6, "other": 7 } }, "generation": { "strategy": "greedy autoregressive", "bos_token_id": 1, "eos_token_id": 2, "pad_token_id": 0, "max_length": 192 }, "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 }, "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." } } } } }