An AWS machine learning post describes rebuilding a visual quality-inspection lifecycle for fleets of cameras. Its starting observation is that one camera and one model work fine, but once a plant wants the same result on 40 lines with several cameras each, a single model trained on pooled footage underperforms enough individual cameras that each camera ends up with its own fine-tuned model.
The updated sample, which migrates from the deprecated SageMaker Edge Manager to SageMaker Neo, runs a 13-step SageMaker Pipeline with two training branches: a small convolutional autoencoder that learns normal product appearance and flags anomalies by reconstruction error, and a ResNet18 classifier fine-tuned to confirm defects. Each branch exports to ONNX, evaluates the exported artifact against held-out data and passes a quality gate before the model is compiled with Neo and registered, so every approved package ships with a device-ready artifact. Model packages carry the camera ID as metadata so retraining resumes from that camera's own history.
Orchestration is handled by an SQS FIFO queue feeding Lambda and a Step Functions state machine, with a DynamoDB semaphore admitting at most five pipeline executions at a time by default. Everything deploys through the AWS CDK, and the post states a full pipeline run on synthetic data costs about $0.07 in compute.
Our takeThe honest detail is that pooled models fail hard enough that the fleet ends up with thousands of fine-tunes, which moves the bottleneck from training to evaluation. ONNX-scored gates plus a compiled artifact per model are the right shape, but the gate thresholds decide what ships, so they deserve the same versioning discipline as the weights. Note too that the quoted $0.07 is synthetic-data compute; labelling effort and false-reject cost on a real line are the numbers that decide whether per-camera models pay off.