共计 4294 个字符,预计需要花费 11 分钟才能阅读完成。
背景介绍
Amazon SageMaker 能够帮忙开发人员和数据科学家疾速筹备构建、训练和部署机器学习(Amazon ML)模型的齐全托管的云服务。特地 Amazon SageMaker 提供了一种可扩大且经济高效的办法来部署大量的事后训练好的机器学习模型,借助 Amazon SageMaker 多容器多模型的部署能够应用单个端点拜访的模式提供多种类型的推理服务。
而咱们都晓得在机器学习畛域,训练数据集的重要性显而易见,特地是目前利用最为宽泛的监督式计算机视觉畛域中的深度学习,往往一个这种我的项目最开始的工作就是标注各种媒资数据。而 CVAT 就是为用户提供一套残缺的工具平台,不便用户标注数字图像和视频。CVAT 反对与对象检测、图像分类、图像宰割和 3D 数据标注无关的监督机器学习工作,CVAT 自 2018 年在 GitHub 上开源以来曾经倒退成为业界中最为风行的视觉畛域标注工具, 特地是 AI 主动标注性能十分受用户欢送。
官网文档中 装置 CVAT的举荐形式为单机部署模式,无论应用层、数据库层还是缓存层以及 AI 推理层都是通过 Docker 的形式部署在一台物理机或者虚拟机中,这种形式无论从资源利用、安全性、部署架构的高可用性上都难以满足企业级利用部署的标准。本文作者领有屡次大型企业在亚马逊云科技上通过无服务器化(Serverless)部署 CVAT 的教训,特地是对最为受欢迎的 AI 主动标注性能应用 Amazon SageMaker 模型部署推理层革新的教训,通过 Amazon CloudFormation 一键部署模式,将整个 CVAT 平台零碎部署在亚马逊云的 Serverless 的架构之上。
- CVAT:
https://openvinotoolkit.githu… - 装置 CVAT:
https://openvinotoolkit.githu…
部署架构介绍
CVAT 主体开发应用了 Python Django Web 利用框架,并大量应用了缓存技术晋升零碎的稳定性和升高利用的提早,数据库应用了开源的 PostgreSQL,最为重要的 AI 推理引擎也应用了数据科学界开源的 nuclio 作为根底无服务器(Serverless)的架构层。因为上文提及 CVAT 官网提供的部署计划须要把所有的技术组建容器化后部署在一台物理机或者虚拟机中,通过 Docker Compose 的集群形式部署。官网的举荐架构显著较于目前云原生或 Serverless 的架构趋势有很大的区别,因而咱们在将 CVAT 部署到亚马逊云科技云上的时候将架构进行革新。
- Nuclio:
https://nuclio.io/
具体的架构图如下:
其中革新的点如下:
- 首先咱们能够将整套架构运行在平安的 Amazon VPC 中,通常状况下咱们把须要通过公网拜访的 CVAT 用户界面的 ALB 放在私有子网,同时咱们的Amazon Fargate(一种实用于容器的无服务器计算引擎)到公网拉取 Docker 镜像须要的 Amazon NAT Gateway 也放在私有子网,其余所有 Amazon Fargate 容器、Amazon RDS/ElastiCache、Amazon EFS 甚至 Amazon SageMaker 的 Endpoint 都通过公有网络进行拜访,如有必要甚至能够将整个 Amazon VPC 与互联网进行隔离,满足客户企业级平安的要求;
Amazon Fragate:
https://aws.amazon.com/cn/far…
- 将 CVAT 的 Server 和 UI 两个服务的容器运行到 Amazon ECS 的 Fargate Serverless 上,并通过 ALB 替换掉 traefik 容器将用户的流量别离发送到这两个 Amazon ECS 的服务上,实现 Amazon Fargate 容器多节点和冗余;
- 将 CVAT 的缓存层从原来的 Docker 容器中剥离进去运行在 ElastiCache 的 Redis 上,实现缓存层的全托管;
- 将 CVAT 的数据库层从原来的 Docker 容器中剥离进去运行在 Amazon RDS 的 PostgreSQL 上,实现数据库层的全托管;
- 将 CVAT 寄存媒资的本地 Docker 卷剥离进去寄存在 Amazon EFS 的共享存储上,不便 CVAT Server 的容器在 Amazon Fargate 上的漂移和多节点扩大;
- 最为重要的是对 AI 推理层的革新,新增 CVAT Serverless 服务替换原有 nuclio 无服务器服务,次要起因是 nuclio 对底层物理机或虚拟机的侵入性太强,须要凋谢大量的底层权限能力应用(比方运行 Docker 的 UNIX Socket 接口),无奈在亚马逊云科技上真正实现 Serverless,同时 Amazon SageMaker 为咱们提供了弱小的推理端点(Endpoint)部署的性能,因而咱们通过新增的 CVAT Serverless 服务与 Amazon SageMaker 进行对接,将推理服务运行在 Amazon SageMaker Host Endpoint 上,并将 CVAT Serverless 服务运行在 Amazon Fargate 上;
- 另外为了初始化 CVAT 数据库,及一些 Amazon S3 上的 Demo 媒资复制到创立好的 Amazon EFS 上,咱们应用了一个 Amazon Fargate ECS 的 Task 来实现一次性初始化的动作;
- 最初咱们还会应用一些其余亚马逊云科技的服务来帮忙咱们实现整个 CVAT 架构的无服务器化,包含应用 Amazon S3 存储 AI 推理模型、媒资,应用 Cloud Map 作为微服务的发现机制,应用 ECR 来托管所有 Docker 镜像(包含 Amazon ECS 和 Amazon SageMaker 都会应用)。
相比拟于 CVAT 社区官网版本的部署计划,运行在亚马逊云上 CVAT 具备非常明显的劣势:
- 所有技术模块实现了高可用;
- 真正全解偶并实现无服务器化,用户无需再关怀底层资源调度;
- 能够反对大量用户同时应用 CVAT 零碎进行合作标注,实现了 CVAT 外部合作性能架构根底;
- AI 推理模块可扩展性更强,更为灵便。
计划部署步骤
本计划所有的技术模块能够通过事后定义好的 Amazon CloudFormation 服务创立,点击上面的按键就能够跳转到 Amazon CloudFormation 控制台界面(宁夏区)进行整个计划架构的部署,对于部署的源代码大家能够参考这个 链接。
- 链接:
https://github.com/aws-sample…
疾速启动
计划架构疾速部署有很多配置选项能够批改,然而如果是基于测试或者全新疾速部署应用的目标能够全副应用默认的值,只有两个是必须输出的:一个是给整个架构堆栈起一个名称,另外一个就是对创立 IAM 资源影响的确认项。
额定灵便的配置
如果你想对整个 CVAT 有更为深刻灵便的配置,能够通过批改 Amazon CloudFormation 参数来实现,这些参数次要分为以下几种类型:
- CVAT 用户相干的参数
- 与数据库相干的参数
- Amazon VPC 网络相干的参数
模版的输入
通过 15 到 20 分钟的期待,咱们 CVAT 的模版将创立实现。
点击“输入”的页面,模版输入了在亚马逊云科技创立的各种资源的 ID,其中最为重要的 URL,这个输入是部署好的 CVAT 链接地址,能够间接点击这个链接登录新创建好的 CVAT 零碎。
应用 CVAT AI 图像主动标签零碎
登录 CVAT 的链接会须要应用 CVAT 的用户名明码登录,就是咱们在创立 Amazon CloudFormation 时应用到 CVATUser 和 CVATPassword 参数,默认为 admin/cvat123456。
登录后点击 Models 链接,能够查看咱们曾经在 Amazon SageMaker 五个模型推理的端点(Endpoint)。
点击 Tasks 链接,并点击 Create new task 按钮
在 Create a new task 页面须要填入如下信息:Name 能够填入 handball,减少一个标签 person,并点击 Connected file share 链接。
在 Connected file share 这个页面中所有的媒资文件都是寄存在咱们 Amazon CloudFormation 创立的 Amazon EFS 共享存储中,实现咱们通过 Amazon Fargate Task 曾经将 Amazon S3 上的 Demo 数据复制到共享存储上了,点击开展 root 节点,抉择 handball 文件夹,这里蕴含了 400 张图片,是一段视频通过抽帧的后果,点击 Submit 按钮。
很快页面就会反馈后盾曾经把 CVAT Task 曾经创立好,会有一个浮动窗口提醒咱们,这里能够点击 Open task 按钮或者点击页面上方的 Tasks 链接进入 Tasks 页面。
当初咱们曾经创立好了一个 CVAT Task,能够抉择用手工的形式给每一帧别离打标签,这里咱们应用 AI 标注的性能来晋升打标签的效率。在 Tasks 页面点击 Actions 链接中的菜单,并点击 Automatic annotation 链接。
这时会弹出一个浮动窗口让咱们抉择一个模型,这里咱们抉择应用 pth-faster-rcnn 模型。
这时 CVAT 会帮忙咱们主动将模型里可能辨认的标签与咱们在工作中定义个标签进行匹配,点击 Annotate,CVAT 就会通过 Amazon SageMaker 的 Endpoint 进行推理,对工作里所有的图片帧中的人物进行标注。
这个过程会继续一段时间,在 Task 页面咱们能够监控到后盾推理的进度。
通过 10 分钟左右咱们就能够用过 Amazon SageMaker 将 400 张图片全副标注实现,当初能够通过点击上面 Job 的链接查看后果。
关上 Job 页面当前咱们就能看到 AI 标注的后果,所有在每帧图片中的人物都用标注框标注进去了,咱们能够点击播放按钮看到以下成果。
如果大家感兴趣还能够持续尝试其余 AI 标注形式,比方 interactor 形式能够自动识别物体边界多边模式标注,tracker 形式能够通过主动语义宰割的形式在视频中追踪标记指标标注物,reid 形式能够应用业界风行的行人重辨认(reidentification)算法对所有标注的行人人物进行标签合并。
论断
应用将 CVAT 通过无服务器化革新的形式,特地是将 AI 标注推理性能运行在 Amazon SageMaker 上,能够大大晋升开源 CVAT 单机部署的性能以及稳定性,能够十分好的撑持企业外部图像 AI 我的项目的标注工作。
本篇作者
黄德滨
亚马逊云科技资深解决方案架构师
服务于寰球客户销售团队,负责技术架构设计和征询,致力于企业级利用在亚马逊云科技中的使用和部署,对于大型企业级利用开发和施行领有近二十年的丰盛教训,在云计算畛域工作多年,领有大量帮忙各种类型企业上云的教训,在退出亚马逊云科技之前先后服务于百度、甲骨文等国内外出名 IT 企业。