ONNX
onnxruntime
onnx-mlir
quantization
fp32
ONNX_Models / configs /pipelines /conversion /mixed_source /SP02_mixed_source.json
purejomo's picture
Finalize public ONNX/ONNX-MLIR validation release
ed3aeeb
Raw
History Blame Contribute Delete
18 kB
{
"schema_version": "1.0",
"model": {
"model_id": "SP02",
"model_name": "MLPerf Tiny streaming wakeword 1D DS-CNN",
"task": "keyword spotting",
"architecture_family": "temporal depthwise-separable CNN",
"source_framework": "TensorFlow/Keras H5 and TensorFlow Lite",
"source_repository": "https://github.com/mlcommons/tiny/tree/4addd0fa08d216e20637637874e084895f289da4/benchmark/training/streaming_wakeword",
"license": "Apache-2.0; MLCommons Tiny repository",
"public_quantized_available": true,
"paired_fp32_available": true,
"pair_compatibility": "VERIFIED",
"dataset": "Google Speech Commands v0.02 plus MUSAN for streaming/noise evaluation",
"metric": "task-specific quality metric",
"input_shape": [
1,
30,
1,
40
],
"output_shape": [
1,
3
],
"preprocessing": "16 kHz mono; 1 s; preemphasis 1-2^-5; 64 ms nonperiodic Hamming; 32 ms stride; power spectrum; 40-bin 0-8 kHz LFBE; log10 and clip/scale to [0,1]; 30 frames",
"label_space": "ordered 3 classes: Marvin; Silence; Unknown",
"eligibility": "ELIGIBLE",
"priority": "P0",
"random_seed": 20260806
},
"artifacts": {
"fp32": {
"artifact_id": "SP02-registered-fp32-keras",
"source_url": "https://raw.githubusercontent.com/mlcommons/tiny/4addd0fa08d216e20637637874e084895f289da4/benchmark/training/streaming_wakeword/trained_models/str_ww_ref_model.h5",
"local_path": "{model_dir}/source/fp32/source_fp32.h5",
"format": "Keras H5",
"version": "commit 4addd0fa08d216e20637637874e084895f289da4 (2026-07-06 commit date)",
"sha256": "b0f267a8ba0bcb911c1098229c32fac21996e4191c9c60d1fda80adaa70a8add",
"license": "Apache-2.0; MLCommons Tiny repository"
},
"public_quantized": {
"artifact_id": "SP02-public-quantized-01",
"source_url": "https://raw.githubusercontent.com/mlcommons/tiny/4addd0fa08d216e20637637874e084895f289da4/benchmark/training/streaming_wakeword/trained_models/str_ww_ref_model.tflite",
"local_path": "{model_dir}/source/quantized/source_public_quantized.tflite",
"format": "TFLite FlatBuffer",
"version": "commit 4addd0fa08d216e20637637874e084895f289da4 (2026-07-06 commit date)",
"sha256": "3af8550895ba7d5c584277102b5075c52dcfa63ba9d2b2240f37c4e6abd5dd2b",
"license": "Apache-2.0; MLCommons Tiny repository"
}
},
"stages": [
{
"id": "acquire_fp32",
"stage": "source_acquisition",
"variant": "fp32",
"command": [
"{python}",
"{repo_root}/scripts/stages/copy_artifact.py",
"--input",
"{repo_root}/research/downloads/speech_kws/mlperf_4addd0f_str_ww_ref_model_fp32.h5",
"--output",
"{model_dir}/source/fp32/source_fp32.h5",
"--sha256",
"b0f267a8ba0bcb911c1098229c32fac21996e4191c9c60d1fda80adaa70a8add",
"--report",
"{model_dir}/source/fp32/copy_metadata.json"
],
"inputs": [
"{repo_root}/research/downloads/speech_kws/mlperf_4addd0f_str_ww_ref_model_fp32.h5"
],
"outputs": [
"{model_dir}/source/fp32/source_fp32.h5",
"{model_dir}/source/fp32/copy_metadata.json"
],
"requires": [],
"timeout_sec": 180,
"failure_code_on_error": "FAIL_SOURCE",
"validation_report": "{model_dir}/source/fp32/copy_metadata.json",
"options": {
"route": "IMMUTABLE_LOCAL_COPY_FROM_REGISTRY",
"checksum_required": true,
"quantization_generated": false,
"weights_modified": false
},
"patch": null
},
{
"id": "validate_fp32",
"stage": "baseline_tensorflow_inference",
"variant": "fp32",
"command": [
"{repo_root}/environment/converters/tf2onnx/.venv/bin/python",
"{repo_root}/scripts/stages/inspect_tensorflow.py",
"--format",
"keras",
"--model",
"{model_dir}/source/fp32/source_fp32.h5",
"--report",
"{model_dir}/baseline/fp32_validation.json",
"--input-shape",
"1,30,1,40",
"--input-min",
"0.0",
"--input-max",
"1.0",
"--seed",
"20260806",
"--threads",
"1",
"--legacy-depthwise-groups-compat"
],
"inputs": [
"{model_dir}/source/fp32/source_fp32.h5"
],
"outputs": [
"{model_dir}/baseline/fp32_validation.json"
],
"requires": [
"acquire_fp32"
],
"timeout_sec": 600,
"failure_code_on_error": "FAIL_BASELINE",
"validation_report": "{model_dir}/baseline/fp32_validation.json",
"options": {
"runtime": "tensorflow-cpu 2.20.0",
"threads": 1,
"batch_size": 1
},
"patch": "DESERIALIZATION_ONLY: redundant legacy DepthwiseConv2D groups=1 ignored"
},
{
"id": "acquire_quantized",
"stage": "public_quantized_acquisition",
"variant": "public_quantized",
"command": [
"{python}",
"{repo_root}/scripts/stages/copy_artifact.py",
"--input",
"{repo_root}/research/downloads/speech_kws/mlperf_4addd0f_str_ww_ref_model_int8.tflite",
"--output",
"{model_dir}/source/quantized/source_public_quantized.tflite",
"--sha256",
"3af8550895ba7d5c584277102b5075c52dcfa63ba9d2b2240f37c4e6abd5dd2b",
"--report",
"{model_dir}/source/quantized/copy_metadata.json"
],
"inputs": [
"{repo_root}/research/downloads/speech_kws/mlperf_4addd0f_str_ww_ref_model_int8.tflite"
],
"outputs": [
"{model_dir}/source/quantized/source_public_quantized.tflite",
"{model_dir}/source/quantized/copy_metadata.json"
],
"requires": [],
"timeout_sec": 180,
"failure_code_on_error": "FAIL_PUBLIC_QUANTIZED_ARTIFACT",
"validation_report": "{model_dir}/source/quantized/copy_metadata.json",
"options": {
"route": "IMMUTABLE_LOCAL_COPY_FROM_REGISTRY",
"checksum_required": true,
"quantization_generated": false,
"weights_modified": false
},
"patch": null
},
{
"id": "validate_quantized",
"stage": "public_quantized_inference",
"variant": "public_quantized",
"command": [
"{python}",
"{repo_root}/scripts/stages/inspect_tflite.py",
"--model",
"{model_dir}/source/quantized/source_public_quantized.tflite",
"--report",
"{model_dir}/baseline/public_quantized_validation.json",
"--seed",
"20260806",
"--threads",
"1"
],
"inputs": [
"{model_dir}/source/quantized/source_public_quantized.tflite"
],
"outputs": [
"{model_dir}/baseline/public_quantized_validation.json"
],
"requires": [
"acquire_quantized"
],
"timeout_sec": 600,
"failure_code_on_error": "FAIL_PUBLIC_QUANTIZED_LOAD",
"validation_report": "{model_dir}/baseline/public_quantized_validation.json",
"options": {
"runtime": "ai-edge-litert 2.1.6",
"threads": 1,
"batch_size": 1
},
"patch": null
},
{
"id": "document_pair_boundary",
"stage": "mixed_format_pair_boundary_documentation",
"variant": "pair",
"artifact_id": "SP02-mixed-format-pair-boundary",
"command": [
"{python}",
"{repo_root}/scripts/stages/document_mixed_pair_boundary.py",
"--fp32-report",
"{model_dir}/baseline/fp32_validation.json",
"--quantized-report",
"{model_dir}/baseline/public_quantized_validation.json",
"--report",
"{model_dir}/baseline/mixed_pair_boundary.json",
"--boundary",
"direct",
"--preprocessing-evidence",
"16 kHz mono; 1 s; preemphasis 1-2^-5; 64 ms nonperiodic Hamming; 32 ms stride; power spectrum; 40-bin 0-8 kHz LFBE; log10 and clip/scale to [0,1]; 30 frames",
"--label-space-evidence",
"ordered 3 classes: Marvin; Silence; Unknown",
"--dataset-evidence",
"Google Speech Commands v0.02 plus MUSAN for streaming/noise evaluation"
],
"inputs": [
"{model_dir}/baseline/fp32_validation.json",
"{model_dir}/baseline/public_quantized_validation.json"
],
"outputs": [
"{model_dir}/baseline/mixed_pair_boundary.json"
],
"requires": [
"validate_fp32",
"validate_quantized"
],
"timeout_sec": 120,
"failure_code_on_error": "FAIL_BASELINE_PAIR_MISMATCH",
"validation_report": "{model_dir}/baseline/mixed_pair_boundary.json",
"options": {
"boundary": "direct",
"does_not_replace_registry_pair_evidence": true
},
"patch": null
},
{
"id": "convert_fp32_onnx",
"stage": "tensorflow_fp32_to_onnx_conversion",
"variant": "fp32",
"command": [
"{repo_root}/environment/converters/tf2onnx/.venv/bin/python",
"{repo_root}/scripts/stages/convert_tensorflow_to_onnx.py",
"--input",
"{model_dir}/source/fp32/source_fp32.h5",
"--output",
"{model_dir}/onnx/fp32/model_fp32.onnx",
"--report",
"{model_dir}/onnx/fp32/onnx_conversion.json",
"--opset",
"16",
"--threads",
"1",
"--format",
"keras",
"--input-shape",
"1,30,1,40",
"--legacy-depthwise-groups-compat"
],
"inputs": [
"{model_dir}/source/fp32/source_fp32.h5",
"{repo_root}/environment/converters/tf2onnx/tool_versions.json"
],
"outputs": [
"{model_dir}/onnx/fp32/model_fp32.onnx",
"{model_dir}/onnx/fp32/onnx_conversion.json"
],
"requires": [
"acquire_fp32"
],
"timeout_sec": 1200,
"failure_code_on_error": "FAIL_EXPORT",
"validation_report": "{model_dir}/onnx/fp32/onnx_conversion.json",
"options": {
"converter": "tf2onnx 1.17.0",
"tensorflow": "2.20.0",
"opset": 16,
"inference_only": true,
"fixed_shape": [
1,
30,
1,
40
],
"quantization_generated": false
},
"patch": "INFERENCE_WRAPPER_AND_DESERIALIZATION_ONLY: fixed batch=1; ignore redundant legacy DepthwiseConv2D groups=1; no layer, weight, or math change"
},
{
"id": "validate_fp32_onnx",
"stage": "onnx_checker_shape_inference_runtime",
"variant": "fp32",
"command": [
"{python}",
"{repo_root}/scripts/stages/inspect_onnx.py",
"--model",
"{model_dir}/onnx/fp32/model_fp32.onnx",
"--report",
"{model_dir}/onnx/fp32/onnx_check.json",
"--inferred-model",
"{model_dir}/onnx/fp32/model_fp32.inferred.onnx",
"--seed",
"20260806",
"--threads",
"1"
],
"inputs": [
"{model_dir}/onnx/fp32/model_fp32.onnx"
],
"outputs": [
"{model_dir}/onnx/fp32/onnx_check.json",
"{model_dir}/onnx/fp32/model_fp32.inferred.onnx"
],
"requires": [
"convert_fp32_onnx"
],
"timeout_sec": 900,
"failure_code_on_error": "FAIL_RUNTIME",
"validation_report": "{model_dir}/onnx/fp32/onnx_check.json",
"options": {
"checker": true,
"shape_inference": true,
"runtime": "onnxruntime 1.22.1"
},
"patch": null
},
{
"id": "compare_fp32_onnx",
"stage": "tensorflow_onnx_numerical_comparison",
"variant": "fp32",
"command": [
"{repo_root}/environment/converters/tf2onnx/.venv/bin/python",
"{repo_root}/scripts/stages/compare_tensorflow_target.py",
"--source-format",
"keras",
"--target-format",
"onnx",
"--source",
"{model_dir}/source/fp32/source_fp32.h5",
"--target",
"{model_dir}/onnx/fp32/model_fp32.onnx",
"--report",
"{model_dir}/onnx/fp32/onnx_output_compare.json",
"--input-shape",
"1,30,1,40",
"--input-min",
"0.0",
"--input-max",
"1.0",
"--seed",
"20260806",
"--threads",
"1",
"--atol",
"1e-05",
"--rtol",
"1e-05",
"--legacy-depthwise-groups-compat"
],
"inputs": [
"{model_dir}/source/fp32/source_fp32.h5",
"{model_dir}/onnx/fp32/model_fp32.onnx"
],
"outputs": [
"{model_dir}/onnx/fp32/onnx_output_compare.json"
],
"requires": [
"validate_fp32_onnx"
],
"timeout_sec": 900,
"failure_code_on_error": "FAIL_NUMERICAL_MISMATCH",
"validation_report": "{model_dir}/onnx/fp32/onnx_output_compare.json",
"options": {
"same_seed_source_vs_target": true,
"atol": 1e-05,
"rtol": 1e-05,
"official_quality_metric": "NOT_RUN"
},
"patch": "INFERENCE_WRAPPER_AND_DESERIALIZATION_ONLY: fixed batch=1; ignore redundant legacy DepthwiseConv2D groups=1; no layer, weight, or math change"
},
{
"id": "convert_quantized_onnx",
"stage": "public_quantized_tflite_to_onnx",
"variant": "public_quantized",
"command": [
"{python}",
"{repo_root}/scripts/stages/convert_tflite_to_onnx.py",
"--converter-python",
"{repo_root}/environment/converters/tf2onnx/.venv/bin/python",
"--input",
"{model_dir}/source/quantized/source_public_quantized.tflite",
"--output",
"{model_dir}/onnx/quantized/model_quantized.onnx",
"--report",
"{model_dir}/onnx/quantized/onnx_conversion.json",
"--tool-versions",
"{repo_root}/environment/converters/tf2onnx/tool_versions.json",
"--opset",
"16"
],
"inputs": [
"{model_dir}/source/quantized/source_public_quantized.tflite",
"{repo_root}/environment/converters/tf2onnx/tool_versions.json"
],
"outputs": [
"{model_dir}/onnx/quantized/model_quantized.onnx",
"{model_dir}/onnx/quantized/onnx_conversion.json"
],
"requires": [
"acquire_quantized"
],
"timeout_sec": 1200,
"failure_code_on_error": "FAIL_EXPORT",
"validation_report": "{model_dir}/onnx/quantized/onnx_conversion.json",
"options": {
"dequantize": false,
"quantization_generated": false,
"independent_variant_conversion": true
},
"patch": null
},
{
"id": "validate_quantized_onnx",
"stage": "onnx_checker_shape_inference_runtime",
"variant": "public_quantized",
"command": [
"{python}",
"{repo_root}/scripts/stages/inspect_onnx.py",
"--model",
"{model_dir}/onnx/quantized/model_quantized.onnx",
"--report",
"{model_dir}/onnx/quantized/onnx_check.json",
"--inferred-model",
"{model_dir}/onnx/quantized/model_quantized.inferred.onnx",
"--seed",
"20260806",
"--threads",
"1"
],
"inputs": [
"{model_dir}/onnx/quantized/model_quantized.onnx"
],
"outputs": [
"{model_dir}/onnx/quantized/onnx_check.json",
"{model_dir}/onnx/quantized/model_quantized.inferred.onnx"
],
"requires": [
"convert_quantized_onnx"
],
"timeout_sec": 900,
"failure_code_on_error": "FAIL_RUNTIME",
"validation_report": "{model_dir}/onnx/quantized/onnx_check.json",
"options": {
"checker": true,
"shape_inference": true,
"runtime": "onnxruntime 1.22.1"
},
"patch": null
},
{
"id": "inspect_quantized_onnx_preservation",
"stage": "onnx_quantization_preservation",
"variant": "public_quantized",
"command": [
"{python}",
"{repo_root}/scripts/stages/inspect_onnx_quantization.py",
"--onnx-check",
"{model_dir}/onnx/quantized/onnx_check.json",
"--report",
"{model_dir}/onnx/quantized/onnx_quantization_inspection.json"
],
"inputs": [
"{model_dir}/onnx/quantized/onnx_check.json"
],
"outputs": [
"{model_dir}/onnx/quantized/onnx_quantization_inspection.json"
],
"requires": [
"validate_quantized_onnx"
],
"timeout_sec": 120,
"failure_code_on_error": "FAIL_QUANTIZATION_PRESERVATION",
"validation_report": "{model_dir}/onnx/quantized/onnx_quantization_inspection.json",
"options": {
"float_fallback_is_failure": true,
"accepted": [
"QDQ",
"QOPERATOR",
"MIXED_QOPERATOR_QDQ"
]
},
"patch": null
},
{
"id": "compare_quantized_onnx",
"stage": "tflite_onnx_numerical_comparison",
"variant": "public_quantized",
"command": [
"{python}",
"{repo_root}/scripts/stages/compare_tflite_onnx.py",
"--tflite",
"{model_dir}/source/quantized/source_public_quantized.tflite",
"--onnx",
"{model_dir}/onnx/quantized/model_quantized.onnx",
"--report",
"{model_dir}/onnx/quantized/onnx_output_compare.json",
"--seed",
"20260806",
"--threads",
"1",
"--atol",
"0",
"--rtol",
"0"
],
"inputs": [
"{model_dir}/source/quantized/source_public_quantized.tflite",
"{model_dir}/onnx/quantized/model_quantized.onnx"
],
"outputs": [
"{model_dir}/onnx/quantized/onnx_output_compare.json"
],
"requires": [
"validate_quantized_onnx"
],
"timeout_sec": 900,
"failure_code_on_error": "FAIL_NUMERICAL_MISMATCH",
"validation_report": "{model_dir}/onnx/quantized/onnx_output_compare.json",
"options": {
"strict_integer_or_float_output_match": true,
"atol": 0.0,
"rtol": 0.0
},
"patch": null
}
]
}