snnn001 commited on
Commit
a72a166
·
verified ·
1 Parent(s): 8b120d5

Refresh TorchVision FP32 and channelwise INT8 exports

Browse files

Apply validated graph cleanup, replay the established quantization recipe, and document CPU/GPU/NPU checks. Preserve the existing dynamic and Google Tensor G5 variants.

README.md CHANGED
@@ -44,12 +44,77 @@ num_params: 28589128
44
 
45
  `convnext_tiny_int8_channelwise.tflite`: Mixed INT8/FP32 with channelwise INT8 weights. LayerNorm remains FP32.
46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  ## Compatibility
48
 
49
  | File | CPU | GPU | NPU |
50
  |---|---|---|---|
51
- | `convnext_tiny.tflite` | Supported | Supported | N/A |
52
- | `convnext_tiny_int8_channelwise.tflite` | Supported | Not supported | Qualcomm / MediaTek |
 
 
53
 
54
  ## Intended uses & limitations
55
 
 
44
 
45
  `convnext_tiny_int8_channelwise.tflite`: Mixed INT8/FP32 with channelwise INT8 weights. LayerNorm remains FP32.
46
 
47
+ ## 2026-09-22 maintenance update
48
+
49
+ This maintenance update removes ten redundant reshapes from the LayerNorm fallback bodies in the published FP32 graph. The source checkpoint and public FP32 input/output interface are unchanged. The channelwise INT8 file is regenerated from the refreshed FP32 export.
50
+
51
+ | File | Size (bytes) | SHA-256 |
52
+ |---|---:|---|
53
+ | `convnext_tiny.tflite` | 114422656 | `17d67ff1731ea2a2f9726fc8a8170cd3168c7be2ce1bf36258db3add06316f18` |
54
+ | `convnext_tiny_int8_channelwise.tflite` | 29859024 | `d22d0fd223a678d8af582cf54ae28377d08807922b548e65068e8d35eddffc53` |
55
+
56
+ ### Source and preprocessing
57
+
58
+ TorchVision `ConvNeXt_Tiny_Weights.IMAGENET1K_V1` ([checkpoint](https://download.pytorch.org/models/convnext_tiny-983f1562.pth)).
59
+ Convert to RGB, resize the short side to 236 with bilinear interpolation and antialiasing,
60
+ then center crop to 224 × 224. Divide pixels by 255, subtract `[0.485, 0.456, 0.406]`,
61
+ and divide by `[0.229, 0.224, 0.225]`. The input layout is NCHW, shape `[1, 3, 224, 224]`;
62
+ output is ImageNet class scores with shape `[1, 1000]`.
63
+
64
+ ### Quantization
65
+
66
+ `convnext_tiny_int8_channelwise.tflite`: Mixed INT8/FP32 with channelwise INT8 weights and INT8 input/output. LayerNorm remains FP32; this is not a fully integer model.
67
+ The base recipe is `ai_edge_quantizer.recipe.static_wi8_ai8()`, with local scale/bias
68
+ safeguards to avoid overflowing INT32 biases. Intermediate calibration ranges use an
69
+ exponential moving average; the output logits use the global observed range.
70
+
71
+ - Calibration images: 500 (manifest image IDs: 0–499).
72
+ - Calibration manifest SHA-256: `6a8d04c842352ef41d7795e3ec6acd30a4cbad520466d69b8b0503a521d5d1e5`.
73
+ - Base quantization recipe SHA-256: `3db5fac189c1707c9a0c3a18fecaa8fabd8c9ef3681af553d9e0c86fc18ec0fb`.
74
+
75
+ For INT8 input, apply the preprocessing above, then compute
76
+ `clip(round(x / input_scale) + input_zero_point, -128, 127)` and cast to INT8,
77
+ using nearest rounding with ties away from zero, as in this validation.
78
+ Dequantize output scores with `(q - output_zero_point) * output_scale`.
79
+ Read scales and zero points from the selected model file; do not assume that they
80
+ match an earlier revision. The existing FP32 usage example, where present, requires
81
+ this additional I/O handling before it can be used with the INT8 variant.
82
+
83
+ ### Validation of the refreshed artifacts
84
+
85
+ CPU evaluation used 1000 images from ImageNet-1k validation (manifest image IDs: 1000–1999). These are subset measurements, not a new full-validation accuracy result.
86
+
87
+ | Variant | CPU backend | Top-1 correct | Top-5 correct |
88
+ |---|---|---:|---:|
89
+ | FP32 | xnnpack | 847 | 958 |
90
+ | FP32 | builtin | 847 | 958 |
91
+ | Mixed INT8/FP32 | xnnpack | 837 | 958 |
92
+ | Mixed INT8/FP32 | builtin | 833 | 956 |
93
+
94
+ For both variants on both CPU backends, all 1,000 output vectors are bit-identical to the preceding published revision. Public input/output metadata, quantization parameters and signatures are unchanged.
95
+
96
+ The model-index values of 82.46% top-1 and 96.13% top-5 in this card's metadata are historical results retained from the earlier publication. They were not remeasured over the full validation set for this maintenance release.
97
+
98
+ Validation used LiteRT 2.3.0 on host CPU. The 1,000-image subset is disjoint from the 500 calibration images, but was used during earlier recipe development; it is a regression set, not an untouched test set.
99
+
100
+ Saved calibration arrays were restored as float32. Replaying the same recipe and INT32-bias safeguards on the previous source exports reproduced both previous quantized files byte for byte.
101
+
102
+ FP32 GPU validation used 10 images on TECNO LJ9 / MT6897 with both default and explicit FP32 precision. Explicit FP32 relative L2 error versus host CPU was 1.77091e-06, with no top-1 changes. This release makes no new latency claim.
103
+
104
+ Quantized MT6897 NPU execution used 10 images: 0 top-1 changes versus the quantized host CPU reference, relative L2 error 0.188453. The NPU output scores are bit-identical to the retained checks of the preceding published quantized file; the CPU/NPU numerical difference is unchanged. SM8750 and MT6993 coverage is host AOT compilation only; corresponding devices were unavailable.
105
+
106
+ The existing `convnext_tiny_dynamic_wi8_afp32.tflite` and
107
+ `convnext_tiny_Google_Tensor_G5_apply_plugin.tflite` files are retained unchanged.
108
+ The validation results in this update apply only to the two files listed in the artifact table.
109
+
110
  ## Compatibility
111
 
112
  | File | CPU | GPU | NPU |
113
  |---|---|---|---|
114
+ | `convnext_tiny.tflite` | Validated: builtin and XNNPACK, 1,000 images | Validated on TECNO LJ9 / MT6897: full delegation, 10 images | Not evaluated for this FP32 artifact |
115
+ | `convnext_tiny_int8_channelwise.tflite` | Validated: builtin and XNNPACK, 1,000 images | Not supported on the tested MLDrift stack; use FP32 | Full AOT: MT6897, MT6993, SM8750; MT6897 device smoke passed |
116
+
117
+ Compatibility entries above describe the 2026-09-22 artifacts. Earlier releases had FP32 GPU smoke checks and channelwise INT8 Qualcomm/MediaTek AOT compilation checks; those historical checks do not certify changed files. AOT compilation coverage alone does not establish on-device numerical accuracy. Earlier INT8 runs on the tested LiteRT MLDrift GPU stack produced large numerical errors; use the FP32 variant for GPU when its current validation supports that backend.
118
 
119
  ## Intended uses & limitations
120
 
convnext_tiny.tflite CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:42f4181cae412cd35fc769d4baa25d13d5e38a399fe37b0f8872b5b849571188
3
- size 114425184
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:17d67ff1731ea2a2f9726fc8a8170cd3168c7be2ce1bf36258db3add06316f18
3
+ size 114422656
convnext_tiny_int8_channelwise.tflite CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:95e9aac495675b7e73cc91a7dfcb3b8474b8c06ae53e0815ee290c6cad9a25c7
3
- size 29861536
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d22d0fd223a678d8af582cf54ae28377d08807922b548e65068e8d35eddffc53
3
+ size 29859024