Model & Task Distribution¶
Full task catalog, model sourcing, and dataset planning Revised after verification (Context7 + Firecrawl + benchy validation gate): runtime-support claims corrected, core benchmark restructured, settings aligned with the frozen benchy suite
Overview¶
The platform provides a comprehensive ML test suite spanning computer vision, audio, and NLP. Each task includes standard benchmark datasets, multiple model options in web-friendly formats, and a runtime/framework compatibility matrix.
The core benchmark automates fair comparisons across runtimes using matched models. Users can also run any task manually with custom configurations and run counts (1, 10, 25, 50, or more; below 30 measured runs benchy draws a statistical warning — automated sweeps clamp to the 30-run minimum, A8).
Verified feasibility
The runtime-support claims in earlier drafts of this page were optimistic. After verifying model availability against official docs and the benchy validation gate, only image classification has an identical model architecture across all six engines. The other tasks are benchmarked as task-pipeline comparisons (each engine's canonical task model, with input resolution documented per run) — not as model-for-model comparisons. See the corrected matrix in Core Benchmark and the Cross-Reference table.
Task Categories¶
| Category | Tasks | Count |
|---|---|---|
| Computer Vision | Image Classification, Object Detection, Semantic Segmentation, Pose Estimation, Facial Landmark Detection, Face Recognition, Body Segmentation, Depth Estimation, Style Transfer | 9 |
| Audio | Noise Suppression, Speech Recognition, Audio Classification | 3 |
| NLP | Text Classification, Text Embeddings, Question Answering, Text Generation | 4 |
| Total | 16 |
Auto-bench inclusion rule
A task enters the automated benchmark only if it satisfies all of:
- ≥ 3 runtime paths — at least three of onnx (direct), litert.js, transformers.js, tfjs, mediapipe can execute it; strict same-model artifacts (identical weights converted per format) are strongly preferred over task-pipeline comparisons.
- Testable ground truth — a small curated fixture set whose correct output is known independently of any runtime (image → ImageNet label, sentence → sentiment label, clip → AudioSet label), so every measured run is graded automatically.
- Comparable outputs — the engines' outputs must live in the same label space, otherwise cross-engine numbers are meaningless.
Tasks failing the rule may still exist as playground-only demos (manual exploration, no suite numbers).
Catalog vs. core benchmark
The 16 tasks below are an ecosystem catalog — they document what exists and what could be added. Only the tasks marked ★ CORE are part of the automated benchmark, and only image classification is a strict same-model comparison. The remaining core tasks compare each engine's canonical model for the task (task-pipeline comparison).
Core Benchmark¶
The core benchmark is an automated "autoplay" comparison that runs matched models across all compatible runtimes with standardized settings.
Inclusion criteria:
- Same model architecture available in ≥3 formats (ONNX, TFLite, TF.js) — only image classification meets this today
- Standard benchmark dataset with published metrics
- Automatable evaluation (no subjective judgment)
- Supported by ≥3 runtimes/frameworks
Core benchmark tasks:
| Task | Comparison type | Models per engine | Dataset context | Engines |
|---|---|---|---|---|
| Image Classification | Strict same-model (MobileNetV2 in all formats) | mobilenet-v2: TF.js graph, ONNX, TFLite, HF ONNX (q8), ml5 | ImageNet-1K labels | All 6 |
| Object Detection | Task-pipeline | TF.js coco-ssd (SSD-MobileNetV2 base) · ONNX zoo ssd_mobilenet_v1_12 (V1!) · MediaPipe EfficientDet-Lite0 (320²) |
COCO (80 classes) | TF.js, ORT, MediaPipe (LiteRT only float32 EfficientDet — untested; Transformers.js = RT-DETR/YOLOS only) |
Removed from auto-bench — fails the inclusion rule: single MediaPipe path (transformers.js image-segmentation exists but uses different label spaces; selfie tflite is f32 so LiteRT.js could run it raw, yet no ground-truth masks exist and outputs are not comparable across engines). Playground-only demo with mask rendering. |
— | — | — | |
| Pose Estimation | Task-pipeline | TF.js MoveNet Lightning (192²) / Thunder (256²) · MediaPipe PoseLandmarker (BlazePose) | COCO Keypoints (17 pts) | TF.js, MediaPipe — LiteRT impossible (MoveNet tflite = uint8 I/O; LiteRT.js requires int32/f32) |
| Facial Landmarks | Task-pipeline | MediaPipe FaceLandmarker (478 pts) · TF.js face-landmarks-detection (wrapper) | 300W / WFLW | MediaPipe ✅, TF.js (wrapper) |
Qualifying candidates for future auto-bench tasks (omni-task roadmap):
| Task | Paths (same weights where noted) | Ground truth | Status |
|---|---|---|---|
| Audio classification (YAMNet) | onnx direct (tf2onnx conversion) · litert.js (Google f32 tflite, 3.7 MB) · mediapipe AudioClassifier — identical weights |
Curated clips → AudioSet label (dog bark, speech, music) | Planned (task #2, needs audio input pipeline) |
| Text classification (sentiment, SST-2) | transformers.js (DistilBERT q8 onnx) · litert.js (f32/int32 tflite via onnx2tf) · onnx direct | Labeled sentences (trivial) | Planned (task #3, needs text input pipeline + JS tokenizer) |
| Object detection | tfjs coco-ssd · mediapipe EfficientDet-Lite0 · onnx zoo SSD (task-pipeline, different models) | Curated images → class presence | Candidate (GT is class-presence only; conversion route litert-torch/onnx2tf identified) |
Key verified facts:
- No identical detection model exists across runtimes. ONNX zoo ships SSD-MobileNetV1 (not V2); TF.js coco-ssd bases are lite_mobilenet_v2/v1/v2; MediaPipe uses EfficientDet-Lite0; Transformers.js only supports RT-DETR/YOLOS/DETR for detection.
- Input resolution is a model property, not a runtime property (coco-ssd ~300², EfficientDet-Lite0 320², MoveNet 192²/256², selfie-multiclass 256²). It must be recorded per run and treated as a documented model attribute.
- LiteRT.js I/O constraint: int32/float32 tensors only — this rules out uint8-quantized pose models and int8 detection models for LiteRT.
- Post-processing location differs per engine: TF.js coco-ssd and MediaPipe ship post-processed outputs; ONNX zoo SSD ships raw boxes/scores (JS decode + NMS needed). This is a documented validity factor.
- Future extension — converted same-model pairs: converting one model (e.g., RTMDet-n, RTMPose-t) to both ONNX and TFLite via
litert-torch/onnx2tfenables a strict ORT↔LiteRT comparison for detection/pose. Requires one-time conversion + vendoring effort. See Model Sources & Conversion.
Core benchmark settings (aligned with the frozen benchy suite):
- Warmup: 5 iterations
- Measurement runs: 30 (frozen in
suiteConfig.ts; A8 minimum clamp applies) - Statistical analysis (e.g., Mann-Whitney U): computed offline from the raw-sample exports, not in-app
- Network: uncached (models vendored same-origin; cold-start = first load, reported separately via
firstInferenceMs)
Computer Vision Tasks¶
1. Image Classification ★ CORE BENCHMARK¶
Classify the major object in an image into a set of pre-defined classes.
Dataset: ImageNet-1K (ILSVRC 2012) — 50K validation images, 1000 classes
Metric: Top-1 Accuracy, Top-5 Accuracy, Inference Latency (ms)
Models:
| # | Model | Paper / Year | Top-1 Acc | Size | ONNX | TFLite | TF.js | Core |
|---|---|---|---|---|---|---|---|---|
| 1 | MobileNetV2 | Sandler et al., 2018 | 71.8% | ~14 MB | ✓ | ✓ | ✓ | ✓ |
| 2 | MobileNetV3-Large | Howard et al., 2019 | 75.2% | ~22 MB | ✓ | ✓ | ✓ | ✓ |
| 3 | EfficientNet-B0 | Tan & Le, 2019 | 77.1% | ~23 MB | ✓ | ✓ | ✓ | ✓ |
| 4 | ConvNeXt-Tiny | Liu et al., 2022 | 82.1% | ~115 MB | ✓ | ✓ | Community | — |
| 5 | ViT-B/16 | Dosovitskiy et al., 2020 | 84.0% | ~344 MB | ✓ | ✓ | Community | — |
Runtime Support:
| TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
2. Object Detection ★ CORE BENCHMARK¶
Detecting instances of semantic objects of a certain class in digital images and videos, outputting bounding boxes and labels.
Dataset: COCO val2017 — 5K images, 80 classes
Metric: [email protected], [email protected]:0.95, Inference Latency (ms)
Models:
| # | Model | Paper / Year | mAP | Size | ONNX | TFLite | TF.js | Core |
|---|---|---|---|---|---|---|---|---|
| 1 | SSD MobileNetV2 | Google, 2018 | 22.0% | ~14 MB | ✓ | ✓ | ✓ | ✓ |
| 2 | YOLOv8n | Ultralytics, 2023 | 37.3% | ~6 MB | ✓ | ✓ | ✓ | ✓ |
| 3 | EfficientDet-D0 | Tan et al., 2020 | 33.8% | ~16 MB | ✓ | ✓ | ✓ | — |
| 4 | YOLOv8s | Ultralytics, 2023 | 44.9% | ~22 MB | ✓ | ✓ | ✓ | — |
| 5 | DETR-R50 | Carion et al., 2020 | 42.0% | ~164 MB | ✓ | ✓ | Community | — |
Runtime Support:
| TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|
| ✓ (coco-ssd) | ✓ (zoo SSD-MobileNetV1, raw outputs → JS NMS) | ⚠️ float32 EfficientDet only (int8 fails I/O rule; untested) | ⚠️ RT-DETR/YOLOS only — not SSD | ✓ (EfficientDet-Lite0) | ⚠️ objectDetector (coco-ssd wrapper; verify 1.4.0) |
No identical detection model exists across runtimes
The ONNX Model Zoo ships SSD-MobileNetV1 (onnxmodelzoo/ssd_mobilenet_v1_12, 28 MB, opset 12, mAP 23.0%) — not V2. TF.js coco-ssd bases are lite_mobilenet_v2 (default), mobilenet_v1, mobilenet_v2. MediaPipe uses EfficientDet-Lite0 (320×320). Transformers.js supports only RT-DETR/YOLOS/DETR for object detection. Detection is therefore a task-pipeline comparison, not a model-for-model comparison.
3. Semantic Segmentation ★ CORE BENCHMARK¶
Partitioning an image into semantically meaningful parts, classifying each pixel into a pre-determined class.
Dataset: PASCAL VOC 2012 — 1.4K validation images, 20 classes + background
Metric: mIoU (mean Intersection over Union), Inference Latency (ms)
Models:
| # | Model | Paper / Year | mIoU (VOC) | Size | ONNX | TFLite | TF.js | Core |
|---|---|---|---|---|---|---|---|---|
| 1 | DeepLabV3+ (MobileNetV2) | Chen et al., 2018 | 75.2% | ~84 MB | ✓ | ✓ | ✓ | ✓ |
| 2 | SegFormer-B0 | Xie et al., 2021 | 34.0% (ADE20K) | ~15 MB | ✓ | ✓ | Community | ✓ |
| 3 | FCN-ResNet50 | Long et al., 2015 | 76.5% | ~132 MB | ✓ | ✓ | ✓ | — |
| 4 | BiSeNetV2 | Yu et al., 2020 | 73.1% (Cityscapes) | ~20 MB | ✓ | ✓ | Community | — |
| 5 | Mobile-SAM | Zheng et al., 2023 | 77.2% (SA-1B) | ~37 MB | ✓ | ✓ | Community | — |
Runtime Support:
| TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|
✓ (body-segmentation: SelfieSegmentation/BodyPix; @tensorflow-models/deeplab is 3 years stale) |
⚠️ zoo deeplab/fcn ResNet50 (heavy, untested on wasm) | ✗ (no official DeepLab tflite in litert-community) | ⚠️ HF segmentation models only (heavy) | ✓ (ImageSegmenter — implemented in benchy) | ✗ |
DeepLabV3+ claim corrected
The earlier draft claimed DeepLabV3+ on TF.js/ORT/LiteRT/Transformers. Verified reality: TF.js's maintained segmentation package is body-segmentation (MediaPipe SelfieSegmentation + BodyPix); the standalone @tensorflow-models/deeplab package is v2.2.3, ~3 years unmaintained. The one true cross-engine same-model pair is MediaPipe's SelfieSegmentation consumed via the MediaPipe runtime vs. the TF.js runtime of body-segmentation. The implemented core is MediaPipe ImageSegmenter (selfie-multiclass, 256×256).
4. Pose Estimation ★ CORE BENCHMARK¶
Detect human body keypoints (skeleton) — joints like shoulders, elbows, knees, and ankles.
Dataset: COCO Keypoints val2017 — 5K images, 17 keypoints
Metric: AP (Average Precision), Inference Latency (ms)
Models:
| # | Model | Paper / Year | AP | Size | ONNX | TFLite | TF.js | Core |
|---|---|---|---|---|---|---|---|---|
| 1 | MoveNet Thunder | Google, 2021 | 61.2% | ~18 MB | ✓ | ✓ | ✓ | ✓ |
| 2 | MoveNet Lightning | Google, 2021 | 52.9% | ~12 MB | ✓ | ✓ | ✓ | ✓ |
| 3 | BlazePose (GPU) | Bazarevsky et al., 2020 | 33 landmarks | ~4 MB | ✓ | ✓ | ✓ | — |
| 4 | HRNet-W32 | Sun et al., 2019 | 74.4% | ~114 MB | ✓ | ✓ | Community | — |
| 5 | ViTPose-Small | Xu et al., 2022 | 74.1% | ~88 MB | ✓ | ✓ | Community | — |
Runtime Support:
| TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|
| ✓ (MoveNet Lightning 192² / Thunder 256²) | ✗ (no zoo MoveNet) | ✗ architecturally impossible | ✗ | ✓ (PoseLandmarker / BlazePose) | ✗ (no pose API) |
Pose claim corrected
The earlier draft claimed TF.js, LiteRT, MediaPipe, ML5. Verified reality: MoveNet TFLite variants use uint8 input/output tensors, which LiteRT.js cannot feed (int32/float32 I/O only). ML5 has no pose API. The realistic cross-engine pair is TF.js MoveNet ↔ MediaPipe BlazePose — different model families, so pose is a task-pipeline comparison only.
5. Facial Landmark Detection ★ CORE BENCHMARK¶
Detecting facial landmarks like eyes, nose, mouth, and jawline — used for face alignment, tracking, and try-on applications.
Dataset: 300W — 68 landmarks; WFLW — 98 landmarks
Metric: NME (Normalized Mean Error), Inference Latency (ms)
Models:
| # | Model | Paper / Year | NME (300W) | Size | ONNX | TFLite | TF.js | Core |
|---|---|---|---|---|---|---|---|---|
| 1 | MediaPipe Face Mesh | Google, 2019 | 2.21% | ~4 MB | ✓ | ✓ | ✓ | ✓ |
| 2 | Dlib 68-Point | Kazemi & Sullivan, 2014 | 4.18% | ~2 MB | ✓ | Community | Community | — |
| 3 | 3DDFA_V2 | Guo et al., 2020 | 1.69% | ~32 MB | ✓ | ✓ | Community | — |
| 4 | FAN (Face Alignment Net) | Bulat & Tzimiropoulos, 2017 | 3.78% | ~76 MB | ✓ | Community | Community | — |
| 5 | Dlib 5-Point | Kazemi & Sullivan, 2014 | ~5% | <1 MB | ✓ | Community | Community | — |
Runtime Support:
| TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|
✓ (face-landmarks-detection — wrapper over MediaPipe FaceMesh) |
✗ (community conversions only) | ✗ | ✗ | ✓ (FaceLandmarker, 478 landmarks incl. iris) | ✗ |
Facial-landmark claim corrected
The earlier draft claimed TF.js, ORT, LiteRT, MediaPipe, ML5. Verified reality: MediaPipe FaceLandmarker is the only strong native implementation; the TF.js package is a thin wrapper around the same MediaPipe models; ORT/LiteRT/ML5 have no official path.
6. Face Recognition¶
Detecting faces and verifying whether a face matches a known identity.
Dataset: LFW (Labeled Faces in the Wild) — 13K images, 5.7K identities
Metric: Verification Accuracy, TAR @ FAR=0.001, Inference Latency (ms)
Models:
| # | Model | Paper / Year | Acc (LFW) | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|---|
| 1 | ArcFace-R100 | Deng et al., 2019 | 99.83% | ~60 MB | ✓ | ✓ | Community |
| 2 | MobileFaceNet | Chen et al., 2018 | 99.55% | ~5 MB | ✓ | ✓ | Community |
| 3 | FaceNet (InceptionResNet) | Schroff et al., 2015 | 99.63% | ~100 MB | ✓ | ✓ | ✓ |
| 4 | AdaFace | Kim et al., 2022 | 99.82% | ~72 MB | ✓ | Community | Community |
| 5 | InsightFace-MobileNet | Deng et al., 2020 | 99.77% | ~6 MB | ✓ | ✓ | Community |
7. Body Segmentation¶
Segmenting human body regions from the background — used for background blur, virtual backgrounds, and AR effects.
Dataset: COCO-Stuff / ADE20K
Metric: mIoU, Inference Latency (ms)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | MediaPipe Selfie Segmentation | Google, 2020 | ~3 MB | ✓ | ✓ | ✓ |
| 2 | BodyPix | Google, 2020 | ~25 MB | — | — | ✓ |
| 3 | U-Net (MobileNet backbone) | Ronneberger et al., 2015 | ~20 MB | ✓ | ✓ | Community |
8. Depth Estimation¶
Predicting depth from a single image — used for 3D reconstruction, AR placement, and scene understanding.
Dataset: DIODE / NYU Depth V2
Metric: Abs Rel, RMSE, δ < 1.25, Inference Latency (ms)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | MiDaS v2.1 | Ranftl et al., 2020 | ~40 MB | ✓ | ✓ | Community |
| 2 | DPT-Large | Ranftl et al., 2021 | ~344 MB | ✓ | ✓ | Community |
| 3 | MiDaS v3.1 Small | Ranftl et al., 2022 | ~25 MB | ✓ | ✓ | Community |
9. Image Style Transfer¶
Applying artistic styles (e.g., Van Gogh, Monet) to photographs in real time.
Dataset: WikiArt (perceptual quality — no standard accuracy metric)
Metric: Inference Latency (ms), FID (optional)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | FastStyleTransfer | Johnson et al., 2016 | ~28 MB | ✓ | ✓ | ✓ |
| 2 | AdaIN (Arbitrary) | Huang & Belongie, 2017 | ~28 MB | ✓ | Community | Community |
| 3 | STROTSS | Kolkin et al., 2019 | ~80 MB | ✓ | Community | Community |
Audio Tasks¶
10. Noise Suppression¶
Removing background noise from audio in real time — used for video calls, podcasts, and voice assistants.
Dataset: DNS Challenge (Microsoft Deep Noise Suppression Challenge)
Metric: PESQ (Perceptual Evaluation of Speech Quality), STOI, Inference Latency (ms)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | RNNoise | Valin, 2018 | <1 MB | ✓ | Community | Community |
| 2 | NSNet2 | Microsoft, 2021 | ~3 MB | ✓ | ✓ | Community |
| 3 | CMGAN | Zhang et al., 2022 | ~10 MB | ✓ | Community | Community |
11. Speech Recognition (ASR)¶
Converting spoken language into text — used for transcription, voice commands, and accessibility.
Dataset: LibriSpeech / CommonVoice
Metric: WER (Word Error Rate), Inference Latency (ms)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | Whisper-Tiny | OpenAI, 2022 | ~75 MB | ✓ | — | Community |
| 2 | Whisper-Base | OpenAI, 2022 | ~140 MB | ✓ | — | Community |
| 3 | Whisper-Small | OpenAI, 2022 | ~460 MB | ✓ | — | Community |
12. Audio Classification¶
Classifying audio clips into categories — used for sound event detection, environmental monitoring, and music genre classification.
Dataset: ESC-50 / AudioSet
Metric: Accuracy, Inference Latency (ms)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | YAMNet | Google, 2020 | ~3 MB | ✓ | ✓ | ✓ |
| 2 | AST (Audio Spectrogram Transformer) | Gong et al., 2021 | ~90 MB | ✓ | Community | Community |
NLP Tasks¶
13. Text Classification¶
Assigning a label or class to text — used for sentiment analysis, spam detection, topic categorization, and toxicity detection.
Dataset: GLUE Benchmark / SST-2 (Stanford Sentiment Treebank)
Metric: Accuracy, GLUE Score, Inference Latency (ms)
Models:
| # | Model | Paper / Year | SST-2 Acc | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|---|
| 1 | DistilBERT | Sanh et al., 2019 | 92.8% | ~264 MB | ✓ | ✓ | ✓ |
| 2 | MobileBERT | Sun et al., 2020 | 90.6% | ~100 MB | ✓ | ✓ | ✓ |
| 3 | TinyBERT | Jiao et al., 2020 | 91.3% | ~56 MB | ✓ | ✓ | Community |
| 4 | BERT-Base | Devlin et al., 2019 | 93.5% | ~440 MB | ✓ | ✓ | ✓ |
| 5 | ALBERT-Base | Lan et al., 2020 | 93.2% | ~48 MB | ✓ | ✓ | Community |
14. Text Embeddings¶
Generating dense vector representations of text — used for semantic search, clustering, and retrieval-augmented generation (RAG).
Dataset: MTEB (Massive Text Embedding Benchmark)
Metric: MTEB Average Score, Inference Latency (ms)
Models:
| # | Model | Paper / Year | MTEB Score | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|---|
| 1 | all-MiniLM-L6-v2 | Reimers & Gurevych, 2019 | 56.3 | ~90 MB | ✓ | ✓ | ✓ |
| 2 | all-mpnet-base-v2 | Reimers & Gurevych, 2019 | 57.8 | ~440 MB | ✓ | ✓ | Community |
| 3 | BGE-small-en-v1.5 | Xiao et al., 2023 | 62.2 | ~132 MB | ✓ | ✓ | Community |
| 4 | E5-small-v2 | Wang et al., 2022 | 58.8 | ~132 MB | ✓ | Community | Community |
| 5 | nomic-embed-text-v1.5 | Nomic AI, 2024 | 62.4 | ~550 MB | ✓ | Community | Community |
15. Question Answering¶
Extracting answers from a context paragraph — used for document search, chatbots, and knowledge bases.
Dataset: SQuAD v2.0 (Stanford Question Answering Dataset)
Metric: F1 Score, Exact Match, Inference Latency (ms)
Models:
| # | Model | Paper / Year | F1 | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|---|
| 1 | DistilBERT-SQuAD | Sanh et al., 2019 | 80.1 | ~264 MB | ✓ | ✓ | ✓ |
| 2 | BERT-Base-SQuAD | Devlin et al., 2019 | 84.3 | ~440 MB | ✓ | ✓ | ✓ |
| 3 | MobileBERT-SQuAD | Sun et al., 2020 | 79.2 | ~100 MB | ✓ | ✓ | ✓ |
16. Text Generation¶
Generating text autoregressively given a prompt — used for content creation, code generation, and conversational AI.
Dataset: WikiText-2 (perplexity)
Metric: Perplexity, Inference Latency (tokens/sec)
Models:
| # | Model | Paper / Year | Size | ONNX | TFLite | TF.js |
|---|---|---|---|---|---|---|
| 1 | GPT-2 | Radford et al., 2019 | ~500 MB | ✓ | ✓ | ✓ |
| 2 | GPT-2 Small | Radford et al., 2019 | ~250 MB | ✓ | ✓ | ✓ |
| 3 | TinyStories (custom) | Eldan & Li, 2023 | ~50 MB | ✓ | Community | Community |
Cross-Reference: Runtime × Task Availability¶
Verified rows — checked against official docs, model hubs, and the benchy validation gate:
| Task | TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|---|
| Image Classification ★ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (remote) |
| Object Detection ★ | ✓ | ⚠️ V1, raw outputs | ⚠️ f32 only, untested | ⚠️ RT-DETR/YOLOS only | ✓ | ⚠️ verify 1.4.0 |
| Semantic Segmentation ★ | ⚠️ body-segmentation | ⚠️ heavy zoo models | ✗ | ⚠️ heavy HF models | ✓ done | ✗ |
| Pose Estimation ★ | ✓ MoveNet | ✗ | ✗ uint8 I/O | ✗ | ✓ BlazePose | ✗ |
| Facial Landmarks ★ | ⚠️ wrapper | ✗ | ✗ | ✗ | ✓ | ✗ |
Legend
- ✓ = verified available with official or well-maintained model
- ⚠️ = available with caveats (see task section / warning boxes above)
- ✗ = verified unavailable or no web-compatible path
Remaining catalog rows (unverified estimates) — the audio and NLP rows below were drafted optimistically and have not been verified the way the rows above were. Treat them as leads, not facts:
| Task | TF.js | ORT Web | LiteRT.js | Transformers.js | MediaPipe | ML5.js |
|---|---|---|---|---|---|---|
| Face Recognition | ? | ? | ? | ? | ? | ? |
| Body Segmentation | ? | ? | ? | ? | ? | ? |
| Depth Estimation | ? | ? | ? | ? | ? | ? |
| Style Transfer | ? | ? | ? | ? | ? | ? |
| Noise Suppression | ? | ? | ? | ? | ? | ? |
| Speech Recognition | ? | ? | ? | ? | ? | ? |
| Audio Classification | ? | ? | ? | ? | ? | ? |
| Text Classification | ? | ? | ? | ? | ? | ? |
| Text Embeddings | ? | ? | ? | ? | ? | ? |
| Question Answering | ? | ? | ? | ? | ? | ? |
| Text Generation | ? | ? | ? | ? | ? | ? |
Legend
- ? = unverified estimate from the original draft; verify before relying on it
Model Sources¶
| Source | URL | Used For |
|---|---|---|
| ONNX Model Zoo (HuggingFace) | https://huggingface.co/onnxmodelzoo | ORT Web, Transformers.js models |
| TensorFlow Hub | https://tfhub.dev/ | TF.js, ML5.js models |
| HuggingFace Hub | https://huggingface.co/models | Transformers.js, ONNX models |
| Kaggle Models | https://www.kaggle.com/models | LiteRT.js / TFLite models (alternative source) |
| Google Storage | https://storage.googleapis.com | MediaPipe pre-optimized models |
| Ultralytics | https://github.com/ultralytics/ultralytics | YOLOv8 ONNX/TFLite exports |
Model Sources & Conversion¶
Model availability in a browser-executable format is itself a compatibility property. The conversion toolchain from creation frameworks to browser formats:
| Path | Tool | Status |
|---|---|---|
| PyTorch → ONNX | torch.onnx.export / ONNX exporter |
official, mature |
| PyTorch → TFLite/LiteRT | litert-torch (renamed from ai-edge-torch; built on torch.export()) |
official Google, Beta |
| TF/Keras → TF.js | tensorflowjs_converter |
official |
| TF/Keras → TFLite | LiteRT converter (ai-edge-litert) |
official |
| ONNX → TFLite | onnx2tf (PINTO0309) |
third-party, battle-tested |
| Cross-format proof | PINTO Model Zoo — 100+ models inter-converted across TF, PyTorch, ONNX, OpenVINO, TFJS, TFLite (f32/f16/int8), EdgeTPU, CoreML | community, 4.6k ⭐ |
Taxonomy (mirrors thesis Background §Conversion Paths):
- Creation/training frameworks: PyTorch, TensorFlow/Keras, JAX
- Interchange format: ONNX
- Edge optimization/deployment runtimes (not creation frameworks): OpenVINO, TensorRT, LiteRT
- Legacy: Caffe (historical training framework)
Implications for the benchmark:
- Format choice gates runtime choice — a model only exists for the runtimes whose format it was converted to
- Conversion settings (opset, quantization, NCHW/NHWC) are part of the experimental setup and must be documented per artifact
- Conversion is the precondition for strict same-model cross-runtime comparison — the MobileNetV2 artifacts in
public/models/exist in three formats precisely because of this toolchain - Future extension: converting one detection/pose model (e.g., RTMDet-n, RTMPose-t) to both ONNX and TFLite would enable a strict ORT↔LiteRT pair beyond classification (one-time conversion + vendoring effort; fp16 TFLite keeps float32 I/O and satisfies the LiteRT.js constraint)
User Workflows¶
The platform supports two usage modes:
Automated Core Benchmark¶
Click "Start Benchmark" on the /bench page to automatically (frozen protocol, A8/A19):
- Prepare matched models across all compatible runtimes (artifacts warmed into the Cache API so load times are cache-warm)
- Per combo: one model load, then 5 warmup inferences pinned to the first image slot
- Execute 30 measured inferences rotating over the 3 bench images (10 per slot; warmups never advance the rotation)
- Per-slot majority top-1 against registered ground truths → accuracyAt1 (fraction correct)
- Median (p50) and p95 latency stats; composite score = latency score × accuracyAt1
- Display per-run results with verdict badges and per-run detail (ⓘ)
- Export CSV/JSON download for plotting
Manual Task Exploration¶
Users can also:
- Browse the full task library (16 tasks, 50+ models)
- Select a specific task and model
- Choose which runtime(s) to benchmark against
- Configure run count (1, 10, 25, 50, or custom — below 30 measured runs a statistical warning is shown)
- Run benchmarks and view detailed results
- Upload custom models for comparison