ivere27's picture
Initial release
ac68cef
Raw
History Blame Contribute Delete
10.8 kB
{
"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"
}