Inspiration
Secure data-center floors often ban phones, cameras and cloud services. Technicians still have to identify components they rarely touch, like a power shelf, a drive bay, a fan or a network port. They work from memory or a printed binder, with their hands busy in a rack. We wanted a single-purpose device that runs fully offline: point it at the hardware, and it names the part, walks you through checking it by voice, and pulls up its specs and troubleshooting. Our longer-term goal is to simplify servicing down to the parts on the board itself: which IC, capacitor or connector has failed.
What it does
DCSM-Simplified runs entirely on an Alif Ensemble E8 DevKit (Cortex-M55 + Ethos-U85 NPU).
- Point. A MobileNetV2 on the Ethos-U85 identifies the part in 7.9 ms. The LCD shows it with a confidence score and an info card. Labels are smoothed and gated, so an unsure model shows nothing instead of guessing.
- Say "yes" (or "go"). The part is held and an inspection checklist opens. "Yes" and "no" mark each item. A "no" on item 1 ("is this the right part?") rejects the identification, so the human corrects the model.
- Say "on" (or "go" or "right"). The device pages through specs, troubleshooting, LED codes and maintenance for that exact part. This is on-device retrieval keyed by what the camera saw, from a 15 KB knowledge base compiled into the firmware.
There's no network, no cloud and no stored images. Demo video and slides: https://abhijitbetigeri.github.io/executorch-alife8/#demo
How we built it
Two ExecuTorch models, 100% of their layers on the Ethos-U85, in one firmware image:
| Model | Job | Params | Size | Accuracy | Runs on |
|---|---|---|---|---|---|
| YOLOv8n-seg | Auto-labeller for the first training crops | 3.3 M | 6.8 MB fp16 | box mAP50 0.749 | GPU, offline |
| 2× ConvNeXt-Base | Teacher | 2 × 87.6 M | 701 MB | 97.2% val | GPU, training |
| MobileNetV2, 160 px | Vision: 16 parts + background | 2.25 M | 2.3 MB int8 | 84.8% on held-out board-camera frames (demo classes) | Ethos-U85 |
| DS-CNN | Voice: 10 keywords | 79 k | 93 KB int8 | 94.7% test | Ethos-U85 |
- Distillation. Two ConvNeXt-Base teachers were trained on 19,203 component crops from 2,056 labelled data-center photos. The MobileNetV2 student was distilled from them with simulated board-camera augmentation. It scores 91.3% on board-like images, against 80.4% without distillation and 75.8% without the augmentation.
- ExecuTorch export. Each model goes through
torch.export, then PT2E int8 withEthosUQuantizercalibrated on real board-camera frames, thenEthosUPartitioner, TOSA and Vela for the U85-256, producing one.pteper model. We pinned ExecuTorch 1.1.0 to match the firmware runtime. - Firmware. It's built on Arm's ML Embedded Evaluation Kit. We changed the runtime wrapper from one shared method to one per model, so vision and voice run side by side. The Cortex-M55 handles the image resize (1.75 ms), the MFCC audio features (3.3 ms), smoothing, retrieval and the UI.
- Retrieval instead of a generating LLM. About 195 KB of memory is left after the two models, a tiny language model needs about 15 MB, and the voice model knows 10 words, not sentences. So every answer comes from the knowledge base and is never invented.
NPU, measured on the E8:
| Vision | Voice | |
|---|---|---|
| Compute | 152.9 M MACs | 9.1 M MACs |
| NPU latency | 7.9 ms | 0.34 ms |
| Effective throughput | 19.4 GMAC/s | 26.8 GMAC/s |
| On-chip SRAM (Vela) | 755 KiB | 51 KiB |
Effective throughput is $\frac{152.9\,\text{M MACs}}{7.9\,\text{ms}} \approx 19.4\,\text{GMAC/s}$. A full frame takes 124 ms (8.0 FPS). The NPU is about 6% of it, and the camera and display take the rest.
Challenges we ran into
- The board camera sees a different world. The model scored 91% on photos but only about a third right through the E8's own 160-pixel camera, because of glare, colour shift and moiré. So we trained on what the board actually sees. A phone shows a slideshow timed to the clock, and the laptop reads each camera frame off the board and labels it from the clock. We recorded 1,330 board frames, split by slide so test slides are never trained on, and mixed in 1,503 replay photos. Held-out accuracy across all classes rose from 35.5% to 73.0%. A final pass trained over the classes the demo shows and reached 84.8%. The demo build labels 79% of frames correctly and 7% wrongly, leaves the rest blank, and gives no background frame a label.
- A Vela miscompile. ExecuTorch 1.1 turned a conv → permute → reshape tail into transposes that cancel out, and Vela miscompiled them, scrambling a detector's outputs on the board. We documented it and chose a classifier that runs fully on the NPU. The board's top-3 matches the PC's on the same frame.
- The boot table. An oversized image overwrote the boot table and bricked boot. We recovered through the low-power core, and our flash script now refuses any image that would reach the boot table.
- Voice in a noisy venue. "Go" was often misheard, so "yes" and "on" also work, and the confidence cutoff is tuned for the room.
- A bad capture. One capture was aimed at the ceiling and made the model worse. Now we check every capture visually before training.
Accomplishments that we're proud of
- Two custom, distilled and fine-tuned ExecuTorch models run entirely on the Ethos-U85, together, in one image.
- A board-camera fine-tuning loop of about 15 minutes, from capture to flash, that roughly doubled real-world accuracy.
- Camera, voice and retrieval working together, hands-free: vision decides what the part is, voice confirms it and drives the workflow, and the knowledge base answers.
- Everything is public: code, data, models, slides and the demo video.
What we learned
- Accuracy on photos says little about accuracy through a 160-pixel embedded camera. Measure on the device.
- A blank answer beats a wrong one: confidence gating and smoothing matter as much as the model.
- On the E8 the NPU is rarely the bottleneck. The camera, display and logging are. Removing per-frame logging alone took us from 3.6 to 8 FPS.
What's next for DCSM-Simplified: DataCenter Service Management, Simplified
- Board-level parts, the main goal. Today the device answers which unit to pull or check. Next it should answer which part on the board failed: IC, capacitor, electrolytic capacitor, resistor, resistor network, diode, inductor, transistor, clock crystal, connector, LED, switch, button, ferrite bead, pins, pads, test points and jumpers. Then it would show that part's specs and fix, offline. A public dataset already labels these parts across 672 board photos (CC BY 4.0). The hard part is size: a resistor is about 2 pixels at our 160-pixel input. So the plan is a small detector on high-resolution tiles, through the same ExecuTorch → Ethos-U85 flow.
- All 16 rack-level parts. The model already knows 11 more classes; we need more board-camera captures to enable them.
- Always-on voice. Move keyword spotting to the E8's low-power core and its Ethos-U55.
Built on: the component dataset (Roboflow Universe sources, CC BY 4.0) and the YOLOv8n-seg auto-labeller existed before the event. The E8 camera pipeline is by Nissan Pow (alif-mlek-yolo). Everything that runs on the E8 was built at the event.
Links: Landing page, demo and slides · Code · Submission PR · Models
Log in or sign up for Devpost to join the conversation.