本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例:使用以下方法识别视频流中的对象SageMaker
此示例演示如何创建一个使用以下内容的解决方案SageMaker
该示例包含一个 Docker
Amazon CloudFormation 模板创建以下资源:
-
一个亚马逊弹性容器服务 (亚马逊 ECS)
使用AmazonFargate 运行库软件的计算引擎。 -
一个亚马逊 DynamoDB
该表用于维护执行 Fargate 任务的工作人员的检查点和相关状态。 -
一个Kinesis 数据流
它捕获了由生成的推理输出SageMaker。 -
一个 Amazon Lambda 函数
,可用于解析 SageMaker 的输出。 -
Amazon Identity and Access Management (IAM)
资源,可用于跨服务提供访问。 -
亚马逊CloudWatch
用于监视应用程序的资源。
该应用程序与处理数据的任何 SageMaker 终端节点兼容。此示例包含有关创建的说明SageMaker使用示例对象识别算法模板的端点。您可以根据应用程序的使用案例和要求修改或替换算法。
先决条件
示例应用程序具有以下先决条件:
SageMaker
这个例子需要SageMaker笔记本。有关创建笔记本的信息,请参见创建笔记本实例在里面亚马逊SageMaker开发者指南。在创建笔记本时,请注意以下内容:
-
添加
Amazon_JumpStart_Object_Detection.ipynb
示例(来自亚马逊算法简介中的章节SageMaker例子的选项卡木星控制台)到笔记本电脑。 -
创建亚马逊简单存储服务 (Amazon S3) 存储桶,并在中提供其名称先决条件添加示例时步骤。
-
创建笔记本后,选择端点配置在SageMaker控制台,然后记下端点名称。
Kinesis 视频直播
此示例需要一个或多个 Kinesis 视频流包含实时视频数据。有关创建 Kinesis 视频流以及从摄像机向其发送数据的信息,请参见GStreamer。记下你的 Kinesis 视频直播名称。
服务相关角色
此示例要求您的账户具有用于 Fargate 操作的服务相关角色。全新Amazon Web Services 账户默认情况下启用此角色。如果您在创建应用程序时看到以下错误,则必须启用服务相关角色:
Unable to assume the service linked role. Please verify that the ECS service linked role exists
要启用服务相关角色,请运行以下命令:
aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com
创建应用程序
要创建示例应用程序,您可以使用 Amazon CloudFormation 和提供的模板。
使用 Amazon CloudFormation 创建应用程序
-
登录到Amazon Web Services Management Console然后打开Amazon CloudFormation控制台使用以下链接之一供您使用Amazon Web Services 区域。该链接将为您的区域启动正确的堆栈:
-
在创建堆栈页面上,提供以下值:
-
为堆栈指定一个唯一的名称(例如,
用户名
-KVS-SageMaker)。 -
提供您在之前部分中创建的 SageMaker 终端节点名称(并非终端节点 ARN)。
-
提供您的 Kinesis 视频直播的名称。如果您有多个 Kinesis 视频流,请使用引号提供直播名称,并用逗号分隔。
-
其余设置保持原样。
选择下一步。
-
-
在选项页面上,保留原来的设置。
-
选择我承认Amazon CloudFormation可能会创建 IAM 资源复选框。选择下一步。
Amazon CloudFormation 将创建应用程序。
下表列出了在您使用此 Amazon CloudFormation 模板创建堆栈时 Docker 容器使用的几个参数。它们的值是在模板的 SSM
资源中预定义的,但您可以按需对其进行自定义。
资源名称 | 默认值 | 描述 |
inferenceInterval | 6 | The sampling ratio for video frames that are sent to the SageMaker endpoint. Currently, we only support inferencing on I-Frames. The default value of 6 means that 1 out of every 6 I-Frames is sent to the SageMaker endpoint. |
sageMakerTaskQueueSize | 5000 | The size of the queue that maintains the pending requests to the SageMaker endpoint. The size of the queue is affected by ‘inferenceInternval’ and ‘sageMakerTaskTimeoutInMilli’. If SageMaker inference takes longer, requests are buffered in this queue. |
sageMakerTaskThreadPoolSize | 20 | Number of threads that's used to concurrently carry out SageMaker requests. |
sageMakerTaskTimeoutInMilli | 20000 | The maximum duration accepted for a single request (or a retry request) that's sent to the SageMaker endpoint. |
sageMakerTaskThreadPoolName | SageMakerThreadPool-%d | The name of the threadpool that's sending requests to the SageMaker endpoint. |
要自定义这些参数的值,请按照以下方法下载 Amazon CloudFormation 模板:在Create stack (创建堆栈) 页面上选择模板 URL,然后在类似于以下内容的模板的 Params
部分中找到这些参数:
Params: Type: AWS::SSM::Parameter Properties: Name: Ref: AppName Description: "Configuration for SageMaker app" Type: String Value: Fn::Sub: | {"streamNames":[${StreamNames}], "tagFilters":[${TagFilters}],"sageMakerEndpoint":"${SageMakerEndpoint}", "endPointAcceptContentType": "${EndPointAcceptContentType}", "kdsStreamName":"${Kds}","inferenceInterval":6,"sageMakerTaskQueueSize":5000, "sageMakerTaskThreadPoolSize":20,"sageMakerTaskTimeoutInMilli":20000, "sageMakerTaskThreadPoolName":"SageMakerThreadPool-%d"}
监视应用程序
由... 创建的应用程序Amazon CloudFormation模板包含亚马逊CloudWatch仪表板和CloudWatch用于监视应用程序指标和事件的日志流。
应用程序控制面板
应用程序包含用于监控应用程序指标的 CloudWatch 控制面板。要查看应用程序控制面板,请打开CloudWatch控制台在https://console.aws.amazon.com/cloudwatch/
选择KVS-SageMaker-司机-KvsSageMakerIntegration-aws 区域
仪表板。该控制面板显示以下信息:
-
帧指标:处理视频流、向帧发送帧的指标SageMaker端点,并写入连接的 Kinesis 数据流SageMaker带有Amazon Lambda处理的函数SageMaker推理输出结果。
-
IngestToProcessLatency:将视频帧采集到 Kinesis Video Streams 服务时与应用程序接收该帧之间的时间差。
-
当前租约总额:该应用程序被授予使用租约从 Kinesis 视频流中读取内容的权限。此指标显示活动租赁数。该应用程序对每个 Kinesis 视频流使用一个租约,在流之间使用一个租约进行同步。
-
租赁同步指标:权限租赁同步的频率和持续时间。
-
LeaseCount每位员工:租赁在各地区之间的分布SageMaker工作人员话题。
-
工作线程数:处理流的 SageMaker 工作线程的数量。Amazon ECS 集群中的每项任务都有一个正在运行的工作程序。一个工作线程可以处理多个流。
-
ECS 服务利用率:亚马逊 ECS 集群的使用指标。
-
KinesisDataStream:Kinesis 数据流的使用指标。
-
SageMaker:执行的操作SageMaker笔记本。
-
Lambda:处理输出的 Lambda 函数的数量和持续时间SageMaker笔记本。
如果这些图表中的任何信息指示有操作问题(例如值持续增长而不是保持稳定),请参阅以下部分,了解如何查看应用程序日志来确定问题。
CloudWatch 日志
该应用程序包括两个CloudWatch日志:
应用程序日志
您可以使用应用程序日志监控应用程序事件和出错情况。如果您有问题需要联系产品支持人员,也可以使用此日志。
查看应用程序日志
-
在以下位置打开亚马逊 ECS 控制台https://console.aws.amazon.com/ecs
。 -
选择 KVS-Sagemaker-Driver 集群。
-
选择
堆栈名称
-SageMakerDriverService中的服务服务选项卡。 -
选择日志选项卡。
应用程序日志显示初始化、配置和租赁活动等事件。
Lambda 函数日志
您可以使用 Lambda 函数日志来跟踪成功的对象识别。
阅读 Lambda 日志
-
打开Amazon Lambda控制台在https://console.aws.amazon.com/lambda
。 -
为您的应用程序选择 Lambda 函数。Lambda 函数名称采用以下格式:
stack-name
-LambdaFunction-A1B2C3D4E5F6G -
选择监控面板。
-
选择在 CloudWatch 中查看日志。
这个CloudWatch应用程序日志显示成功识别 Kinesis 视频流中的对象和其他应用程序事件。
扩展应用程序
您可以通过修改在 Amazon CloudFormation 模板窗口中提供的值,将自定义功能添加到应用程序中,如下所示:
-
EndPointAcceptContentType:如果你,你可以改变这个值SageMaker端点不接受 JPG 格式的框架。支持以下格式:
-
image/jpeg
-
image/png
-
image/bmp
-
image/gif
-
application/x-image
-
-
LambdaFunctionBucket,LambdaFunctionKey:提供的设置使用Amazon Lambda处理的函数SageMaker输出并将其写入CloudWatch日志。如果你想发送SageMaker在其他地方输出,你可以提供自己的 Lambda 函数。
-
标签筛选条件:如果您有使用 TagStream 操作标记的流,则可以指定要处理的流的标签。例如,如果您有两个流具有
Location
键,其值分别为Front
和Parking
,您应使用以下条目,筛选为仅使用这些流:{"key":"Location","values":["Front","Parking"]}
清理应用程序
在您完成了为本教程创建的应用程序之后,建议您删除不希望保留的任何资源,以免持续产生费用。
-
SageMaker 终端节点:如果您为本教程创建了 SageMaker 终端节点而不是使用现有的终端节点,请删除创建的终端节点。在 SageMaker 控制面板中,选择终端节点配置。选择您创建的终端节点,然后选择行动,删除。确认删除操作。
-
SageMaker 笔记本:在 SageMaker 控制台上,选择笔记本实例。选择您创建的笔记本,然后选择操作、停止。当笔记本的状态显示为已停止时,选择操作、删除。确认删除操作。
注意
有关清理的更多信息SageMaker资源,请参见清理在里面SageMaker开发者指南。
-
SageMaker执行政策:在 IAM 控制台的导航窗格中,选择政策。选择您为本教程创建的策略。该策略的名称类似于以下内容:
AmazonSageMaker-ExecutionPolicy-
。timestamp
选择 Policy actions(策略操作)、Delete(删除)。确认删除操作。
-
SageMaker执行角色:在 IAM 控制台的导航窗格中,选择角色。选择您为本教程创建的角色。角色的名称类似于以下内容:
AmazonSageMaker-ExecutionRole-
。timestamp
选择 Delete role(删除角色)。确认删除操作。
-
Amazon CloudFormation 堆栈:在 Amazon CloudFormation 控制台中,选择您为本教程创建的堆栈。依次选择操作和删除堆栈。确认删除操作。
-
亚马逊 S3 存储桶:在 Amazon S3 控制台上,选择您创建的存储桶来存储SageMaker资产。选择删除。输入存储桶名称,然后选择确认以确认删除。
-
Kinesis 视频直播:在 Kinesis Video Streams 控制台上,选择您为应用程序创建的视频流。选择 Delete。确认删除操作。