You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
4.**Non-real-time, COCO** — Pick model family by task, default Medium size (Small for constrained HW, XL for accuracy-first): OD → RF-DETR, Inst Seg → RF-DETR Seg, Keypoint → YOLO26 pose. **Done.**
88
-
5.**Real-time, COCO** — Same families, pick Nano–Small, prioritize latency. **Done.**
87
+
4.**Non-real-time, COCO** — OD / Inst Seg → prefer **RF-DETR NAS**; if unavailable, RF-DETR (detection) or RF-DETR Seg (instance segmentation) at Medium, Small for constrained HW, XL for accuracy-first. Keypoint → YOLO26 pose. **Done.**
88
+
5.**Real-time, COCO** — Same, and NAS is the strongest option here because it reports measured latency per target hardware. Without it, same families at Nano–Small. **Done.**
89
89
6.**Non-COCO, which sub-task?** OD → Step 7. Inst Seg → Step 8. Keypoint → Step 9.
90
90
7.**OD, non-COCO** — Check Rapid exclusions (see below). If excluded → Step 13. Otherwise → recommend **Roboflow Rapid** (default) or SAM3 zero-shot as secondary option → Step 10.
91
91
8.**Inst Seg, non-COCO** — SAM3 zero-shot (`sam3/sam3_final`, set `class_names`). Rapid does not support segmentation → Step 10.
@@ -94,7 +94,7 @@ Follow this flowchart to pick the right model. Start at Step 1.
94
94
11.**Non-real-time trial** — User confirms works → **Done.** Poor results → Step 13.
95
95
12.**Real-time trial** — User confirms works → **Done.** Poor results → Step 13.
96
96
13.**Universe Model Search** — search community models on Roboflow Universe. Good match → **Done.** No match → Step 14.
97
-
14.**Custom Training** — Fine-tune RF-DETR on user data. Size by HW constraints. **Done.**
97
+
14.**Custom Training** — OD / Inst Seg → prefer **RF-DETR NAS**. If NAS is unavailable, fine-tune RF-DETR (detection) or RF-DETR Seg (instance segmentation), sized by HW constraints. **Done.**
98
98
99
99
## Model ID Reference
100
100
@@ -104,7 +104,7 @@ Use these exact `model_id` values. Do not guess — wrong IDs cause training fai
| Multimodal / text prompts | Qwen3.5 or SmolVLM |
181
192
193
+
NAS parents exist only for object detection and instance segmentation. Keypoint,
194
+
classification, semantic segmentation, and VLM tasks have no NAS option — use the named
195
+
models above.
196
+
197
+
### Comparing architectures (sweeps)
198
+
199
+
If you are comparing architectures rather than picking one, **include a NAS parent as one of the
200
+
candidates** whenever the prerequisites are met — e.g. `rfdetr-medium` vs `yolo26m` vs
201
+
`rfdetr-nas-parent`. Launch one `trainings_create` per candidate and keep each `trainingId`.
202
+
203
+
Read the NAS arm's output as described under **Reading a run** in the RF-DETR NAS section below. One trap is specific
204
+
to comparison: **pick the representative to match the question, or you will understate NAS.** The platform picks a
205
+
winner per (metric, hardware) bucket by balancing accuracy against measured latency, and
206
+
`models_list` exposes only the flattened union of those winners as a `recommended` boolean. So a
207
+
flagged child won *some* bucket, which is not the same as being the most accurate: in one
208
+
76-model run the two flagged children scored **72.86** and **71.91** mAP50-95 while the best child
209
+
scored **78.00**, a 5–6 point gap.
210
+
For a pure-accuracy comparison take the highest `metrics.map5095` child. For a deployment
211
+
decision, use the authoritative `recommendedByHardware` entry if the run exposes one; otherwise
212
+
report the candidates' accuracy and latency for the target (reading latency per the shapes under **Reading a run** below),
213
+
say that no per-hardware recommendation is exposed, and let the user pick the tradeoff. The run's own `nasFamily: "baseline"` children are a useful
214
+
check on whether the search actually beat stock RF-DETR.
215
+
216
+
The NAS arm also takes longer than a single fine-tune, so report the named-model arms as they
217
+
finish rather than blocking on NAS.
218
+
182
219
## RF-DETR NAS (Neural Architecture Search)
183
220
184
-
Instead of picking a single RF-DETR size manually, NAS trains many variants and reports the speed/accuracy frontier so you can pick the one that fits your hardware budget.
221
+
Instead of picking a single RF-DETR size manually, NAS trains one parent model and mines many architectures out of it, reporting the speed/accuracy frontier so you can pick the one that fits your hardware budget.
185
222
186
-
-**What:** A NAS run explores the RF-DETR architecture search space, then trains the surviving candidates and reports each one's mAP and measured latency on a target hardware (e.g., Jetson, T4 GPU). The output is a set of models on a Pareto frontier, plus an auto-selected "recommended" model chosen using Roboflow's current ranking heuristic to balance validation accuracy and measured latency on the target hardware.
223
+
-**What:** A NAS run trains a single parent model, then searches the RF-DETR architecture space*within* that trained parent to identify frontier candidates, reporting each one's mAP and measured latency on target hardware (e.g., Jetson, T4 GPU). The output is a set of models on a Pareto frontier, plus a winner auto-selected per (metric, hardware) bucket using Roboflow's current ranking heuristic to balance validation accuracy against measured latency. Those per-bucket winners are not exposed individually: `models_list` flattens them into one `recommended` boolean per child (see **Picking for a specific hardware target**).
187
224
-**Tasks:** Object Detection (`rfdetr-nas`) and Instance Segmentation (`rfdetr-nas-seg`).
188
225
-**When to use:** When you want the best speed/accuracy tradeoff for a specific deployment target and don't want to A/B-test sizes manually. Especially valuable for edge hardware where latency budgets are tight.
189
226
-**Phases:**
190
-
1.**Mining** — explores architectures and builds a Pareto frontier (latency vs mAP). Live updates while running.
191
-
2.**Training** — trains each frontier candidate end-to-end. Each becomes a regular model you can deploy.
192
-
-**Plan gating:** Requires the `canTrainNas` workspace feature flag. Self-serve plans (basic/starter/sandbox/research/trial) need to upgrade; enterprise/legacy plans need to contact sales.
193
-
-**Start a run:** Train page with `?engine=nas` (UI: pick **Neural Architecture Search** as the training engine). Results land at `/{workspace}/{project}/nas-runs/{versionId}`.
194
-
-**Deploy:** Each NAS-produced model deploys like any other — pick one (typically the recommended) and use it as a normal Roboflow model. Inference type is `rfdetr-nas` / `rfdetr-nas-seg`, but it's served through the standard inference paths.
227
+
1.**Parent training** — trains the one parent model the search draws from. This is the bulk of the wall-clock.
228
+
2.**Mining** — searches architectures inside the trained parent and evaluates candidates to build the Pareto frontier (latency vs mAP). Candidates are derived from the parent rather than each being trained from scratch, so they appear in a burst near the end of the run. Each becomes a regular model you can deploy.
229
+
-**Model IDs:**`rfdetr-nas-parent` (Standard — use this by default), `rfdetr-nas-pecoret-parent` (Fast), `rfdetr-nas-base-parent` (Plus) for object detection; `rfdetr-nas-seg-parent` for instance segmentation.
230
+
-**Prerequisites — check both before offering NAS:**
231
+
1.**≥15 validation images.**`versions_get` returns `splits.valid`; below 15 the train call fails with `insufficient_validation_images_for_nas`, and waiting will not help — the user must generate a version with a larger validation split.
232
+
2.**Plan entitlement.** NAS is included on Core and Growth plans; any other plan needs it granted on the workspace. Basic/starter/sandbox/research/trial need to upgrade; enterprise/legacy need to contact sales. Entitlement is not readable from the MCP, so this cannot be checked up front — a non-entitled workspace finds out when `trainings_create` rejects the run with code `nas_not_available_for_plan`. Treat that as a plan limit, not a transient error: do not retry it. Fall back to the named model for the task — `rfdetr-medium` (detection) or `rfdetr-seg-medium` (segmentation) — and say NAS is unavailable on the current plan and may need an upgrade or workspace enablement, using the `plan` on the error to tell which. Do **not** fall back to a hyperparameter sweep.
233
+
-**Start a run:**`trainings_create(project_id, version_number, model_type="rfdetr-nas-parent")`. NAS launches through the normal training tool; there is no separate engine parameter. (The UI equivalent is the Train page with `?engine=nas`.) Results land at `/{workspace}/{project}/nas-runs/{versionId}`.
234
+
-**Nothing to hand-tune:** a NAS parent's whole hyperparameter surface is `epochs` (default 200, range 100–300). There are no learning-rate or loss-weight knobs, because the architecture search *is* the sweep.
235
+
- **Reading a run:** a run returns a frontier of models, not one — a 289-image dataset produced **76**. Get `modelGroup` from `trainings_list`, which returns it without child metrics, then page the children with `models_list(group=<modelGroup>, version_number=…, limit=…, offset=…)`. Don't use `trainings_get` for this: it inlines every child, which is the payload the paging exists to avoid. Each child carries a sparse `metrics` object. `latency` and `paretoOptimalFor` come from NAS mining, so they are on NAS children only - an ordinary training carries accuracy alone (e.g. `map50`, `precision`, `recall`, `f1`), and `metrics` can be null. Two shapes are in the data: newer runs report `latency` as a map keyed by hardware (e.g. `{"AI1": 6.69, "T4": 1.98}`) with `paretoOptimalFor` entries like `"T4:map_50_95"`, older ones a scalar `latency` with a sibling `metrics.hardware` (e.g. `"gpu"`) and bare entries like `"map_50"`. Branch on the type rather than indexing. Children with `nasFamily: "baseline"` are stock RF-DETR models trained on the same data; they are never `recommended` and are a free within-run reference.
236
+
-**Picking for a specific hardware target needs the authoritative map.** The platform scores a separate winner per hardware, but `models_list` flattens that into one `recommended` boolean, true if the child won *any* bucket — so it cannot tell you which hardware, and `paretoOptimalFor` is unrelated frontier metadata, not the recommendation. The exact mapping is `recommendedByHardware` from `trainings_get`, but it is only built on the legacy version-based summary — a modern MMPV training returns no such field, which is the common case. So for most runs there is no exact per-hardware lookup at all. Do not infer one: report the candidates and ask which accuracy/latency tradeoff, or which latency budget, matters.
237
+
-**Deploy:** Each NAS-produced model deploys like any other — pick one and use it as a normal Roboflow model. Call it the hardware-recommended child only when an authoritative `recommendedByHardware` entry actually says so; otherwise it is the child the user chose from the frontier. Inference type is `rfdetr-nas` / `rfdetr-nas-seg`, but it's served through the standard inference paths.
195
238
-**References:**[RF-DETR paper (arxiv)](https://arxiv.org/html/2511.09554v2), [ICLR 2026](https://openreview.net/forum?id=qHm5GePxTh), [What is NAS? (blog)](https://blog.roboflow.com/neural-architecture-search/).
196
239
197
240
## Roboflow Instant / Rapid
@@ -220,7 +263,7 @@ Instead of picking a single RF-DETR size manually, NAS trains many variants and
When Rapid is excluded → recommend custom trainingwith RF-DETR fine-tuning.
266
+
When Rapid is excluded → resume the decision tree at Step 13: Universe model search first, then custom training, which starts with **RF-DETR NAS** and falls back to named RF-DETR when its prerequisites are not met.
0 commit comments