Of course, we're attaching them below.
However, we note these measurements are only of the backbone and not the entire detector/segmentor end to end.
The reason for that is that the original paper used MMDet and MMSeg, which have since completely changed their API, and the version used in the original NAT/DiNAT papers was build with CUDA Toolkit 11.3, while our GEMM kernel and FNA kernel require 11.8 at a minimum.
We tried multiple newer MMDet/MMSeg versions (really MMCV, their co-dependency) and unfortunately the only ones compatible with our newer kernels still do not support the old NAT/DiNAT configurations, and break during inference.
Because of that, the only solution we could think of was benchmarking the backend models separately.
In addition, benchmarking the backend alone indicates our performance improvement better than the end to end measurement, because the detection/segmentation heads are usually highly unoptimized and use CPU operations somewhat frequently (i.e. when producing masks or RoI maps), and that will bias these measurements.
Overall, for FNA we observe up to 113% speedup over naive, 165% speedup over tiled naive, and 40% speedup over our own GEMM-based kernel.
## Detection
Backbone benchmarked on an A100-PCIe with 800x1216 resolution inputs (per detection resolution in the code from original NAT/DiNAT papers).
*Disclaimer: throughput measurements are from backbone only, and do not include detection head and post processing.*
| Backbone | mAP | Mask mAP | Naive Throughput | Tiled Naive Throughput | GEMM Throughput | FNA Throughput |
|---|---|---|---|---|---|---|
| NAT-Mini | 50.3 | 43.6 | 71.9 FPS | 82.0 FPS | 82.0 FPS | **98.1** FPS |
| NAT-Tiny | 51.4 | 44.5 | 49.8 FPS | 49.5 FPS | 50.2 FPS | **62.6** FPS |
| NAT-Small | 52.0 | 44.9 | 36.4 FPS | 46.5 FPS | 48.7 FPS | **61.1** FPS |
| NAT-Base | 52.3 | 45.1 | 28.4 FPS | 36.8 FPS | 44.7 FPS | **56.8** FPS |
| DiNAT_s-Tiny | 51.0 | 44.1 | 73.5 FPS | 92.9 FPS | 107.2 FPS | **138.8** FPS |
| DiNAT_s-Small | 52.3 | 45.2 | 45.5 FPS | 57.1 FPS | 61.2 FPS | **76.1** FPS |
| DiNAT_s-Base | 52.6 | 45.3 | 35.3 FPS | 44.5 FPS | 51.5 FPS | **70.9** FPS |
| DiNAT_s-Large | 54.8 | 47.2 | 23.6 FPS | 29.5 FPS | 33.7 FPS | **46.1** FPS |
| DiNAT-Mini | 51.2 | 44.4 | 71.0 FPS | 83.2 FPS | 82.7 FPS | **100.2** FPS |
| DiNAT-Tiny | 52.2 | 45.1 | 49.4 FPS | 51.2 FPS | 51.5 FPS | **61.6** FPS |
| DiNAT-Small | 52.9 | 45.8 | 36.9 FPS | 46.9 FPS | 51.2 FPS | **63.0** FPS |
| DiNAT-Base | 53.4 | 46.2 | 28.0 FPS | 35.9 FPS | 42.0 FPS | **57.5** FPS |
| DiNAT-Large | 55.3 | 47.8 | 19.5 FPS | 25.2 FPS | 29.7 FPS | **41.6** FPS |
## Segmentation
Backbone benchmarked on an A100-PCIe with 512x512 resolution inputs for Mini, Tiny, Small, and Base variants, and 640x640 for Large varient (per segmentation resolution in the code from original NAT/DiNAT papers).
*Disclaimer: throughput measurements are from backbone only, and do not include segmentation head and post processing.*
| Backbone | mIoU | mIoU (multiscale) | Naive Throughput | Tiled Naive Throughput | GEMM Throughput | FNA Throughput |
|---|---|---|---|---|---|---|
| NAT-Mini | 45.1 | 46.4 | 82.4 FPS | 84.2 FPS | 81.1 FPS | **102.7** FPS |
| NAT-Tiny | 47.1 | 48.4 | 50.3 FPS | 50.6 FPS | 48.9 FPS | **61.6** FPS |
| NAT-Small | 48.0 | 49.5 | 48.2 FPS | 47.5 FPS | 47.7 FPS | **57.6** FPS |
| NAT-Base | 48.5 | 49.7 | 47.4 FPS | 47.6 FPS | 46.8 FPS | **57.9** FPS |
| DiNAT_s-Tiny | 46.0 | 47.4 | 116.6 FPS | 114.8 FPS | 109.4 FPS | **139.7** FPS |
| DiNAT_s-Small | 48.6 | 49.9 | 63.4 FPS | 56.7 FPS | 60.0 FPS | **72.4** FPS |
| DiNAT_s-Base | 49.4 | 50.2 | 61.7 FPS | 59.7 FPS | 63.3 FPS | **73.0** FPS |
| DiNAT_s-Large | 53.4 | 54.6 | 49.4 FPS | 59.2 FPS | 59.8 FPS | **72.1** FPS |
| DiNAT-Mini | 45.8 | 47.2 | 80.1 FPS | 80.4 FPS | 81.5 FPS | **99.0** FPS |
| DiNAT-Tiny | 47.8 | 48.8 | 49.8 FPS | 51.1 FPS | 49.6 FPS | **62.2** FPS |
| DiNAT-Small | 48.9 | 49.9 | 48.6 FPS | 49.6 FPS | 49.2 FPS | **59.3** FPS |
| DiNAT-Base | 49.6 | 50.4 | 47.2 FPS | 48.6 FPS | 47.3 FPS | **60.9** FPS |
| DiNAT-Large | 54.0 | 54.9 | 41.1 FPS | 49.1 FPS | 49.1 FPS | **59.2** FPS |