
AWS介绍以SageMaker SDK v3管理各摄像头视觉检测模型的参考架构
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推理比较,为示例提供另一种数据演示方式。
文章明确说明,血小板到缺陷类别的映射只是制造场景的示意,不构成临床主张。图像来自血液涂片,并不意味着这个训练流程已被证明具有医疗用途。对这部分演示的准确理解,应限于数据下载、类别映射、按摄像头组织训练材料,以及笔记本中的推理比较。