# AWS介绍以SageMaker SDK v3管理各摄像头视觉检测模型的参考架构

- Source: MechNext — https://mechnext.eu/zh/article/54-aws-outlines-per-camera-visual-inspection-lifecycle-with-sagemaker-sdk-v3
- Published: 2026-10-27
- Updated: 2026-10-27
- Category: Industry News
- Language: zh (Markdown in other languages: ?lang=en, ?lang=de, ?lang=sk, ?lang=pl, ?lang=ru)

> AWS参考架构将各摄像头的模型训练、ONNX质量评估与Neo编译串联起来，并通过队列和并发控制安排重新训练。文章同时说明示例的设备交付边界，以及运行时间和成本数据的适用范围。

AWS介绍了一套采用SageMaker Python SDK v3的视觉检测参考架构，对2023年的流水线模式进行更新。方案以SageMaker Neo取代已弃用的SageMaker Edge Manager，承担面向边缘设备的模型优化，并通过AWS CDK部署基础设施。文章展示的是示例架构及其运行结果，不能据此视为对生产设备群表现的独立验证。理解该方案时，需要同时关注模型如何形成、如何通过质量检查，以及哪些后续工作仍处于示例之外。

### 用同一条流水线维护各摄像头的模型

示例采用一条包含13个步骤的SageMaker Pipeline，通过摄像头参数区分处理对象。流水线首先预处理图像，再获取该摄像头最新获批的模型，随后训练两个分支：用于异常检测的卷积自编码器，以及用于缺陷分类的微调ResNet18。两个分支分别处理异常检测和缺陷分类任务，但都处于这条按摄像头参数运行的流水线中。

分类器使用在ImageNet上预训练的ResNet18权重，并配置二分类输出头。训练时，WeightedRandomSampler按照类别频率的倒数进行采样，使训练批次保持类别平衡；损失函数本身不加权。这里的平衡措施作用于训练样本的抽取方式，文章并未将其描述为加权损失。区分这两点，有助于准确理解示例的训练配置。

每个分支各自使用一个共享的模型包组，包内记录摄像头标识和评估指标。查找旧模型时，由于ListModelPackages不能在服务端依据客户元数据进行过滤，获取步骤会从最新的已批准模型包开始扫描，寻找属于请求摄像头的包。因此，模型包组虽然共享，恢复训练时选择的仍是对应摄像头的模型。

首次运行和后续运行有不同的起点。首次运行时，分类器从ImageNet权重开始，自编码器则随机初始化；后续运行从该摄像头此前的模型继续。这一安排把摄像头身份同时用于模型查找和训练衔接，而不是仅将它作为登记时的标签。

### 先检查ONNX质量，再执行Neo编译

质量评估针对导出的ONNX产物进行。异常检测分支要求AUROC至少达到0.8；分类器则必须同时满足两项要求：平衡准确率至少为0.6，缺陷召回率至少为0.5。这些阈值可以在每次执行时调整。它们是示例的质量门槛，不应被理解为所有应用都必须采用的固定指标设置。

两个分支的注册结果可以不同。如果某一分支未通过质量门槛，该分支不会注册新模型，但另一分支仍可能通过并完成注册。摄像头继续使用此前已批准的模型。由此，文章所描述的流程并不要求两个分支在同一次训练中必须共同成功，也没有将训练结束等同于新模型必然进入注册表。

每个分支都遵循质量检查、Neo编译、模型注册的顺序。编译步骤把导出内容重新打包为仅包含ONNX的tar归档，并将批次大小固定为1。编译任务名称依据流水线执行标识生成，因此重试时可以继续轮询已经存在的编译任务。这里描述的是重试与现有任务的衔接方式，而非重新训练模型。

Neo的目标平台由流水线参数指定，默认平台为LINUX/X86_64，也提供jetson_xavier和rasp4b等命名设备选项。编译后的包包含compiled.so和DLR运行时。仓库还提供一个脚本，可以把已经注册的模型编译到其他设备类型，无需为这一转换重新训练。模型的训练起点与编译目标因此是方案中分别处理的配置。

### 注册产物与向设备交付是不同环节

Model Registry保存可移植ONNX产物的目录信息，S3则存放由DLR加载的Neo编译版本。注册表条目引用训练镜像，其用途是支持后续向设备交付模型产物，而不是通过CreateEndpoint创建推理端点。这一用途说明界定了注册信息的角色，也解释了为何需要同时理解ONNX产物和编译版本的存放位置。

示例本身没有实现设备产物交付，也没有实现推理端点。因此，完成训练、质量检查、编译和注册，不能直接表述为模型已经被送到设备并开始推理。文章覆盖的是这些准备和编目环节；设备交付属于其指向的后续步骤。对参考架构范围的判断，应以这一边界为准。

### 通过队列和信号量安排重新训练

重新训练请求先进入SQS FIFO队列，Lambda再为每个请求启动一次Step Functions执行。DynamoDB中的信号量以原子方式限制并发流水线执行数量，默认上限为五个。当容量已满时，执行会等待并重试，而不是直接突破并发限制。这部分控制的是训练请求进入流水线执行的节奏。

无论正常完成还是进入失败路径，流程都会释放占用的名额。完成消息和运行故障通过SNS报告，故障还经由EventBridge转发。并发占用、名额释放和通知路径共同构成示例的编排部分，但这些机制本身不等同于设备端模型交付，也不提供对生产规模运行结果的独立证明。

### SDK v3迁移还涉及部署配置

SDK v3将功能拆分为模块化软件包，并把训练配置放入传给ModelTrainer的类型化对象。在这个CDK示例中，合成阶段会实时验证IAM角色，因此部署需要分成两个阶段，并提供具体的角色ARN。这是文章针对该示例指出的部署要求，不能只把迁移理解为替换训练代码中的接口名称。

AWS还报告，v3验证器进行ECR权限模拟时，需要比仅允许访问单个仓库的运行时策略更宽的ECR授权。文章分别讨论了验证器模拟所需权限与运行时策略的范围。该说明反映的是示例在验证和部署阶段遇到的配置要求，不应扩展为对其他环境权限配置的笼统结论。

### 运行数据只对应文章中的示例条件

示例默认生成合成的生产线图像。AWS报告，完整的13步运行，包括两次Neo编译，大约需要15分钟；按2026年7月US East（Ohio）区域的按需价格计算，计费的ml.m5.xlarge使用时间约花费0.07美元。这个金额对应文章给出的实例计费时间和价格条件，并不是对任何设备群总成本的通用报价。

文章还称，在示例规模下，编排成本每月远低于0.10美元。Neo编译本身不收费，但处理任务与S3存储会产生费用。因此，阅读成本数据时应保留其组成和条件，不能把编译免费解释为整个流程免费，也不能把示例的时间或费用推广到生产设备群、其他区域、其他硬件或不同价格日期。

除合成图像外，仓库还提供下载364张带标注BCCD血液涂片图像的工具。工具将血小板是否存在映射为缺陷类别，可以按摄像头划分图像，并上传训练用tar归档。配套笔记本负责运行流水线，对正常样本和异常样本进行ONNX推理比较，为示例提供另一种数据演示方式。

文章明确说明，血小板到缺陷类别的映射只是制造场景的示意，不构成临床主张。图像来自血液涂片，并不意味着这个训练流程已被证明具有医疗用途。对这部分演示的准确理解，应限于数据下载、类别映射、按摄像头组织训练材料，以及笔记本中的推理比较。
