DCSM-Simplified: models

DataCenter Service Management, Simplified.

These are the models behind DCSM-Simplified, an offline data-center component identifier for the Alif Ensemble E8 DevKit (Cortex-M55 + Ethos-U85-256). The board camera identifies the component and shows an info card on the LCD. A keyword spotter on the same NPU drives an inspection checklist by voice. It was built for the Arm + ExecuTorch Edge AI Challenge, SFSU, October 2026.

Deployed models

Current demo firmware: deployed/vision_v4_demo_ft/: the same MobileNetV2, fine-tuned on board-camera frames with loss and scoring over the 6 classes the demo shows. On held-out demo-class board frames it reaches 84.8% top-1; at the demo's 0.6 cutoff, 79% correct, 7% wrong and 0% of background labelled. The vision_v3_board_ft row below is its predecessor, trained over all classes.

Folder Model Task Accuracy Size On the E8
deployed/vision_v3_board_ft/ MobileNetV2, 160x160 NHWC input, 16 classes + background component classification 73.0% on held-out board-camera frames, up from 35.5% before the board fine-tune 2,301 KB .pte 7.9 ms on the Ethos-U85, 100% of ops on the NPU
deployed/kws_dscnn_m_agc/ DS-CNN, 128 channels, 4 blocks, 79,116 params keyword spotting, 10 words + silence + unknown 94.7% test 93 KB .pte 0.3 ms on the NPU, plus 3.3 ms MFCC on the M55

Each folder holds:

  • student.pt, the PyTorch state dict
  • *_ethos-u85-256.pte, the ExecuTorch 1.1.0 program for Ethos-U85-256
  • labels.txt, metrics.json, export.json
  • calib.npz, the int8 calibration inputs

The int8 and float vision models agree on 98.4% of calibration frames.

Input. The vision model takes NHWC float32 in [0, 1], shape 1x160x160x3, with ImageNet normalisation folded into the model. The keyword model takes MLEK MFCC features, 49 frames x 10 coefficients.

Classes. Server rack, compute tray, NVLink switch tray, network switch, power shelf, cable, network port, LED indicator, label, fan, cooling manifold, cable cartridge, power connector, drive bay, management port, DPU, and background.

The demo firmware shows only 5 of these, the ones the board camera separates reliably: power shelf, network port, fan, power connector and drive bay. On held-out board frames at a 0.5 confidence cutoff, 73% of component frames are labelled correctly, 6% wrongly, and the rest are left blank. No background frame got a label.

How they were made

  1. Teachers (teachers/):
    • Wave 1. A ConvNeXt-Small trained on pseudo-labelled crops scores 69.4% against auto labels.
    • Wave 2. Two ConvNeXt-Base models, trained out-of-fold on 19,203 crops from 2,056 human-labelled photos, score 97.2% on human-labelled validation.
  2. Students (students/vision/). The students are MobileNetV2 models distilled from the wave-2 teachers (KD alpha 0.7, T 4), with simulated board-camera augmentation and EMA weights. The base model, v2_r160_kd, scores 91.2% on human-labelled validation. The ablations below were scored on simulated board-camera images:
Run What changes Accuracy
v2_r160_kd (base) nothing removed 0.913
v2_r160_nokd no distillation 0.804
v2_r160_noaug no board-camera augmentation 0.758
v2_r160_kd_mix, v2_r160_kd_mix_e80 mixup 0.814, 0.839
r128_kd, r160_kd, r192_kd resolution sweep (wave 1, auto labels) 0.581, 0.653, 0.632
  1. Board-camera fine-tune (deployed/vision_v3_board_ft/, data in data/board_ft.npz). We recorded 1,330 frames from the E8's own camera while a phone showed a clock-synced slideshow. The split is by slide: 1,119 frames for training, 211 for testing. Training mixed in 1,503 replay crops of the original photos, ran 25 epochs at lr 3e-4, and drew 60% of each batch from board frames.
  2. Keyword spotters (students/kws/). These are DS-CNNs, distilled and trained with the board's automatic gain emulated. The deployed dscnn_m_agc scores 94.7%. The smaller dscnn_s_agc, with 23,180 parameters, scores 93.9%.
  3. Export. Each model goes through torch.export, then PT2E int8 quantization with EthosUQuantizer (symmetric, per channel), then EthosUPartitioner, then TOSA and Vela 4.5.0 (ethos-u85-256, Shared_Sram), and finally Cortex-M passes produce the .pte. The ExecuTorch version is pinned to 1.1.0 to match the MLEK runtime in the firmware.

Use

import torch
from student_model import StudentNHWC   # dcops/student_model.py in the GitHub repo
m = StudentNHWC(17, 160, pretrained=False)
m.load_state_dict(torch.load("deployed/vision_v3_board_ft/student.pt", map_location="cpu"))
probs = torch.softmax(m(x_nhwc_0_1), 1)  # x: 1x160x160x3 float in [0, 1]

Data and license

The component photos come from Roboflow Universe datasets under CC BY 4.0: Server Vision, Server Rack, PC Ports, Ports and Server Detection. Links are in dcops/data/README.md in the GitHub repo. These weights are released under CC BY 4.0. The data/board_ft.npz file holds the E8 camera frames and the replay crops used for the fine-tune.

Downloads last month
130
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support