这篇博文由英特尔的 Jonathan Lee、Nelson Leung、Paul Min 和 Troy Squillaci 共同撰写。
In 部分1 在这篇博文中,我们讨论了英特尔® 3DAT 如何与 AWS 机器学习专业服务 (MLPS) 构建可扩展的 AI SaaS 应用程序。 3DAT 使用计算机视觉和人工智能来识别、跟踪和分析来自标准视频的 1,000 多个生物力学数据点。 它允许客户创建丰富而强大的生物力学驱动产品,例如具有详细性能数据和 XNUMXD 可视化的 Web 和移动应用程序。
在本文的第 2 部分中,我们将深入探讨架构的每个阶段。 我们探索用于满足 3DAT 设计要求的 AWS 服务,包括 Amazon Kinesis数据流 和 Amazon Elastic Kubernetes服务 (Amazon EKS),以便为此软件即服务 (SaaS) 应用程序可扩展地部署必要的姿势估计模型。
架构概述
MLPS 团队的主要目标是将 2D 和 3D 姿势估计模型管道生产化,并创建功能性和可扩展的应用程序。 下图说明了解决方案架构。
完整的架构分为五个主要组件:
- 用户应用程序接口层
- 数据库
- 工作流程编排
- 可扩展的姿态估计推理生成
- 运行监控
让我们详细介绍每个组件、它们的交互以及设计选择背后的基本原理。
用户应用程序接口层
下图显示了提供用户访问和控制应用程序及其资源的应用程序接口层。
这些接入点支持基于不同客户角色的不同用例。 例如,应用程序用户可以通过 CLI 提交作业,而开发人员可以使用 Python SDK 构建应用程序并将姿势估计智能嵌入到他们的应用程序中。 CLI 和 SDK 是作为模块化组件构建的——这两层都是 API 层的包装器,API 层是使用构建的 Amazon API网关 解决 API 调用和 关联的 AWS Lambda 函数,负责处理与每个 API 调用关联的后端逻辑。 这些层是英特尔 OTG 团队的重要组成部分,因为它开辟了可以有效使用此 SaaS 应用程序的广泛客户群。
API层
该解决方案具有一组核心的九个 API,它们对应于在该平台上运行的对象类型。 每个 API 都有一个 Python 文件,用于定义可以运行的 API 操作。 新对象的创建会自动按顺序分配对象 ID。 这些对象的属性在 Amazon Aurora 无服务器 使用此 ID 的数据库。 因此,API 操作与在包含用于查询 Aurora 数据库的后端逻辑的中央文件中定义的函数相关联。 此后端逻辑使用 Boto3 Amazon RDS 数据服务客户端 访问数据库集群。
一个例外是 /job
API,它有一个 create_job
处理视频提交以创建新处理作业的方法。 该方法启动 AWS步骤功能 运行作业的工作流逻辑。 通过传入一个 job_id
,此方法使用 Boto3 Step Functions 客户端 打电话给 start_execution
指定的方法 stateMachineARN
(亚马逊资源名称)。
八个对象 API 具有下表中总结的方法和类似的访问模式。
方法类型 | 功能名称 | 课程描述 |
的GET | list_[object_name]s |
从数据库中选择此类型的所有对象并显示。 |
解决方案&帖子 | create_[object] |
将具有所需输入的新对象记录插入到数据库中。 |
的GET | get_[object] |
根据数据库中的对象 ID 选择对象属性并显示。 |
PUT | update_[object] |
使用所需输入更新现有对象记录。 |
删除 | delete_[object] |
根据对象 ID 从数据库中删除现有对象记录。 |
九个API的详细信息如下:
- /用户 – 用户是被授权向该应用程序提交作业的人的身份。 创建用户需要用户名、用户电子邮件和用户所属的组 ID。
- /用户组 – 用户组是用户的集合。 每个用户组都映射到一个项目和一个管道参数集。 为了拥有不同的层次(在基础设施资源和管道参数方面),用户被划分为用户组。 每个用户只能属于一个用户组。 创建用户组需要项目ID、管道参数集ID、用户组名称和用户组描述。 请注意,用户组不同于 AWS 账户中定义的用户角色。 后者用于根据其访问角色(例如管理员)提供不同级别的访问。
- /项目 – 一个项目用于将不同的基础设施资源组合在一起。 一个项目与一个单一的
project_cluster_url
(Aurora 集群)用于记录用户、作业和其他元数据,project_queue_arn
(Kinesis Data Streams ARN)和一个计算运行时环境(目前通过 Cortex 控制),用于对帧批次运行推理或对视频进行后处理。 每个用户组都与一个项目相关联,这种机制就是为不同的用户组在延迟和计算能力方面启用不同层的方式。 创建项目需要项目名称、项目集群 URL 和项目队列 ARN。 - /管道 – 管道与一系列处理容器的单一配置相关联,这些容器在由 Cortex 协调的 Amazon EKS 推理生成集群中执行视频处理(有关更多详细信息,请参阅视频处理推理生成部分)。 通常,这由三个容器组成:预处理和解码、对象检测和姿势估计。 例如,2D 和 3D 管道的解码和对象检测步骤相同,但使用 HRNet 或 3DMPPE 交换最后一个容器会导致 2D 与 3D 处理管道的参数集。 您可以创建新配置来定义可用于处理的可能管道,并且它需要 Cortex 存储库中的新 Python 文件作为输入,该文件详细说明定义该管道的模型端点调用序列(请参阅视频处理推理生成部分)。 管道端点是调用以处理单个帧的 Cortex 端点。 创建管道需要管道名称、管道描述和管道端点。
- /管道参数集 – 流水线参数集是特定流水线的多个参数(流水线配置运行时)的灵活 JSON 集合,添加它是为了在需要多个流水线配置运行时时为未来的定制提供灵活性。 用户组可以与特定的管道参数集相关联,其目的是为每个用户组和每个管道提供不同的参数组。 对于英特尔 OTG 而言,这是一项重要的前瞻性补充,可在不同客户(尤其是独立软件开发商)开始使用该应用程序时构建支持可移植性的定制功能。
- /管道参数 – 管道参数的单个集合是管道参数集的实例化。 这使其成为管道参数集到管道参数的 1:many 映射。 此 API 需要管道 ID 与管道参数集相关联,以便创建管道以将管道参数 1:1 映射到管道。 此 API 所需的其他输入是管道参数集 ID、管道参数值和管道参数名称。
- /视频 – 视频对象用于定义构成作业期间提交的 .zip 包的各个视频。 该文件在提交后被分成多个视频。 一个视频与
job_id
对于提交 .zip 包的作业,以及 亚马逊简单存储服务 (Amazon S3) 原始分离视频的位置和每个视频的后处理结果的路径。 视频对象还包含一个视频进度百分比,该百分比在处理该视频的单个帧批次期间不断更新,以及一个视频状态标志,用于指示完成或未完成。 创建视频需要作业 ID、视频路径、视频结果路径、视频进度百分比和视频状态。 - /frame_batch - A
frame_batch
对象是通过对单个视频进行采样而创建的小批量帧。 将视频分成常规大小的帧批次提供了调整延迟并提高并行化和吞吐量的杠杆。 这是通过 Kinesis Data Streams 运行以进行推理的粒度单元。 创建帧批次需要视频 ID、帧批次开始编号、帧批次结束编号、帧批次输入路径、帧批次结果路径和帧批次状态。 - /工作 – 此交互 API 用于文件提交以启动处理作业。 此 API 具有与其他对象 API 不同的功能,因为它是与视频处理后端 Step Functions 工作流协调和 Amazon EKS 集群交互的直接路径。 此 API 需要用户 ID、项目 ID、管道 ID、管道参数集 ID、作业参数和作业状态。 在作业参数中,指定了输入文件路径,即 Amazon S3 中要处理的 .zip 视频包所在的位置。 文件上传由
upload_handler
方法,它为用户生成一个预签名的 S3 URL 以放置文件。 WORKFLOW_STATEMACHINE_ARN 是传递给create_job
用于指定将带有输入文件路径的视频 .zip 包提交到何处以启动作业的 API。
下表总结了 API 的功能。
方法类型 | 功能 | 课程描述 |
的GET | list_jobs |
从数据库中选择所有作业并显示。 |
解决方案&帖子 | create_ job |
插入包含用户 ID、项目 ID、管道 ID、管道参数集 ID、作业结果路径、作业参数和作业状态的新作业记录。 |
的GET | get_ job |
根据数据库中的作业 ID 选择作业属性并显示。 |
的GET | upload_handler |
生成一个预签名的 S3 URL 作为 .zip 文件上传的位置。 需要 S3 存储桶名称并需要应用程序/zip 文件类型。 |
Python SDK 层
在 API 的基础上,该团队创建了一个 Python SDK 客户端库作为包装器,以使开发人员更容易访问 API 方法。 他们使用开源 诗,它处理 Python 打包和依赖管理。 他们创建了一个 client.py
包含使用 Python 包装每个 API 的函数的文件 requests
处理 API 请求和异常的库。
开发人员要启动英特尔 3DAT SDK,需要安装和构建 Poetry 包。 然后,他们可以添加一个简单的 Python 导入 intel_3dat_sdk
到任何 Python 代码。
要使用客户端,您可以创建客户端实例,指定 API 端点:
然后,您可以使用客户端调用各个方法,例如 create_pipeline
方法(参见下面的代码),接受正确的参数,例如管道名称和管道描述。
CLI 层
同样,该团队在 API 的基础上为希望通过简单的界面访问 API 方法而无需编写 Python 代码的用户创建了一个命令行界面。 他们使用了开源 Python 包 点击 (命令行界面创建工具包)。 这个框架的好处是命令的任意嵌套、自动帮助页面生成以及在运行时支持延迟加载子命令。 在相同的 client.py
在 SDK 文件中,每个 SDK 客户端方法都使用 Click 包装,并且所需的方法参数被转换为命令行标志。 然后在调用 SDK 命令时使用标志输入。
要启动 CLI,您可以使用 CLI configure
命令。 系统会提示您输入端点 URL:
现在您可以使用 CLI 调用与 API 方法相关的不同命令,例如:
数据库
作为数据库,此应用程序使用 Aurora Serverless 来存储与每个 API 关联的元数据,并以 MYSQL 作为数据库引擎。 选择 Aurora Serverless 数据库服务遵循设计原则,尽可能利用无服务器 AWS 服务来最小化基础设施开销。 下图说明了这种架构。
无服务器引擎模式 满足间歇性使用模式,因为此应用程序可扩展到新客户且工作负载仍不确定。 启动数据库终端节点时,不需要特定的数据库实例大小,只需要集群容量的最小和最大范围。 Aurora Serverless 处理路由器队列的适当配置,并在资源之间分配工作负载。 Aurora Serverless 自动执行最少 1 天到最多 35 天的备份保留。 该团队通过将默认值设置为最大值 35 来优化安全性。
此外,该团队还使用了 数据API 处理对 Aurora Serverless 集群的访问,这不需要持久连接,而是提供安全的 HTTP 端点并与 AWS 开发工具包集成。 此功能使用 AWS机密管理器 存储数据库凭据,因此无需显式传递凭据。 CREATE TABLE 脚本以 .sql 文件编写,用于对应于九个 API 的九个表中的每一个。 由于该数据库包含系统中对象的所有元数据和状态,API 方法使用适当的 SQL 命令运行(例如 select * from Job
等加工。为 list_jobs
API)并传递给 execute_statement
数据 API 中来自 Amazon RDS 客户端的方法。
工作流程编排
应用程序的功能主干使用 Step Functions 处理以协调工作流,如下图所示。
状态机由一系列四个 Lambda 函数组成,当使用 create_job
的方法 job
API。 创建作业需要用户 ID、项目 ID、管道 ID、管道参数集 ID、作业结果路径、作业参数和作业状态。 您可以先使用 .zip 视频文件包上传 upload_handler
来自作业 API 的方法来生成预签名的 S3 URL。 在作业提交期间,输入文件路径通过作业参数传递,以指定文件的位置。 这将启动工作流状态机的运行,触发四个主要步骤:
- 初始化 Lambda 函数
- 提交者 Lambda 函数
- 完成检查 Lambda 函数
- 收集器 Lambda 函数
初始化 Lambda 函数
Initializer 的主要功能是将 .zip 包分离成单独的视频文件,并为提交者准备它们。 首先,下载 .zip 文件,然后解压缩和提取每个单独的文件,包括视频文件。 视频(最好是 .mp4 格式)被上传回 S3 存储桶。 使用 create_video
中的方法 video
API,使用视频路径作为输入创建视频对象。 这会将每个视频的数据插入 Aurora 数据库。 任何其他文件类型,例如 JSON 文件,都被视为元数据并类似地上传,但不会创建视频对象。 提取的文件和视频文件的名称列表传递到下一步。
提交者 Lambda 函数
Submitter 函数获取由 Initializer 提取的视频文件,并将视频帧的小批量创建为图像。 当前生产中的大多数计算机视觉模型都经过了图像训练,因此即使在处理视频时,它们也会在模型推断之前首先被分成图像帧。 当前使用最先进的姿态估计模型的解决方案没有什么不同——来自提交者的帧批次被传递到 Kinesis Data Streams 以启动推理生成步骤。
首先,视频文件由 Lambda 函数下载。 帧速率和帧数使用以下公式计算 FileVideoStream
来自的模块 imutils.video
处理库。 根据指定的小批量大小提取和分组帧,这是该管道的关键可调参数之一。 使用 Python pickle 库,数据被序列化并上传到 Amazon S3。 随后,将创建一个帧批处理对象,并在 Aurora 数据库中创建元数据条目。 这个 Lambda 函数是使用 Dockerfile 构建的,依赖于 opencv-python
, numpy
及 imutils
库。
完成检查 Lambda 函数
Completion Check 功能继续查询 Aurora 数据库,以查看对于当前作业的 .zip 包中的每个视频,有多少帧批次处于 COMPLETED 状态。 当所有视频的所有帧批次都完成时,则此检查过程完成。
收集器 Lambda 函数
Collector 函数获取在 Consumer 阶段对每个帧执行的推理的输出,并将它们组合到一个帧批次和一个视频中。 然后将合并的合并数据上传到 S3 存储桶。 然后,该函数为特定的 ML 管道调用 Cortex 后处理 API 以执行任何后处理计算,并通过视频将聚合结果添加到输出存储桶。 其中许多指标是跨帧计算的,例如速度、加速度和关节角度,因此需要对聚合数据执行此计算。 主要输出包括身体关键点数据(聚合为 CSV 格式)、BMA 计算(如加速度)以及添加到图像文件中每一帧的关键点的视觉叠加。
可扩展的姿态估计推理生成
支持 ML 推理扩展的处理引擎发生在此阶段。 它涉及三个主要部分,每个部分都有自己的并发杠杆,可以针对延迟权衡进行调整(参见下图)。
这种架构允许在测试延迟增益方面进行实验,以及在未来工作负载可能随着访问应用程序的最终用户段的不同组合而变化时的灵活性。
Kinesis 数据流
该团队之所以选择 Kinesis Data Streams,是因为它通常用于处理流数据,并且在这种情况下非常合适,因为它可以以类似的方式处理帧批处理以提供可扩展性和并行化。 在 Submitter Lambda 函数中,使用了 Kinesis Boto3 客户端,其中 put_record
方法传入与单个帧批关联的元数据,例如帧批 ID、帧批起始帧、帧批结束帧、图像形状、帧速率和视频 ID。
我们定义了各种作业队列和 Kinesis 数据流配置,以设置与不同用户组的优先级相关的吞吐量级别。 在使用 project
API。 然后,在用户组创建期间,每个用户组都链接到特定项目。 三个默认流配置定义在 AWS无服务器应用程序模型 (AWS SAM) 基础设施模板:
- 普通 –
JobStreamShardCount
- 优先 –
PriorityJobStreamShardCount
- 高优先级 –
HighPriorityJobStreamShardCount
该团队使用了一些不同的杠杆来区分每个流的处理能力或调整系统的延迟,如下表所示。
杠杆 | 课程描述 | 默认值 |
碎片 | 分片是 Kinesis Data Streams 的原生分片; 它是摄取吞吐量的基本单位。 默认值为 1MB/秒,相当于每秒 1,000 条数据记录。 | 2 |
KinesisBatchSize |
Kinesis Data Streams 在调用使用者 Lambda 函数之前在单个批次中检索的最大记录数。 | 1 |
KinesisParallelizationFactor |
从每个分片同时处理的批次数。 | 1 |
增强型扇出 | 已激活增强型扇出的数据消费者拥有每个消费者专用的摄取吞吐量(例如默认的 1MB/秒),而不是在消费者之间共享吞吐量。 | 关闭 |
消费者 Lambda 函数
从 Kinesis Data Streams 的角度来看,数据使用者是一种 AWS 服务,当数据在流中生成时,它会从数据流分片中检索数据。 此应用程序使用消费者 Lambda 函数,该函数在从数据流队列传递消息时调用。 每个消费者函数通过执行以下步骤来处理一个帧批次。 首先,对 Cortex 处理器 API 进行同步调用,这是托管模型推理管道的终端节点(有关更多详细信息,请参阅下一节有关带有 Cortex 的 Amazon EKS)。 结果存储在 Amazon S3 中,并通过将已处理帧批次的状态更改为 Complete
. 内置错误处理以管理带有重试循环的 Cortex API 调用,以处理来自 Cortex 集群的任何 504 错误,重试次数设置为 5。
使用 Cortex 进行 ML 推理的 Amazon EKS
该团队使用 AWS 中的托管 Kubernetes 服务 Amazon EKS 作为 ML 推理的计算引擎。 一个设计选择是使用 Amazon EKS 来托管 ML 终端节点,从而提供运行上游 Kubernetes 的灵活性,并可以选择在 AWS 中通过以下方式完全管理的集群 AWS 法门,或通过本地硬件 Amazon EKS 无处不在. 这是英特尔 OTG 所需的一项关键功能,例如,它提供了将此应用程序连接到专用本地硬件的选项。
作为构建推理管道的构建块的三个 ML 模型是自定义 Yolo 模型(用于对象检测)、自定义 HRNet 模型(用于 2D 姿势估计)和 3DMPPE 模型(用于 3D 姿势估计)(参见前面的ML 部分了解更多详细信息)。 他们使用开源 Cortex 库来处理 ML 推理管道端点的部署和管理,以及 Amazon EKS 集群的启动和部署。 这些模型中的每一个都被打包到 Docker 容器中——模型文件存储在 Amazon S3 中,模型图像存储在 Amazon Elastic Container注册 (Amazon ECR) — 并部署为 Cortex 实时 API。 创建在 CPU 和 GPU 上运行的模型容器版本是为了为计算硬件类型提供灵活性。 将来,如果需要添加额外的模型或模型管道,他们可以简单地创建额外的 Cortex Realtime API。
然后,他们通过将 Cortex 实时模型 API 组合到 Cortex 实时管道 API 中来构建推理管道。 单个实时管道 API 由调用一系列实时模型 API 组成。 Consumer Lambda 函数处理了一个 pipeline
API 作为黑盒,使用单个 API 调用来检索图像的最终推理输出。 创建了两个管道:一个 2D 管道和一个 3D 管道。
2D 管道结合了解码预处理步骤、使用自定义 Yolo 模型进行对象检测以定位运动员并生成边界框,最后使用自定义 HRNet 模型创建用于姿势估计的 2D 关键点。
3D 管道结合了解码预处理步骤、使用自定义 Yolo 模型进行对象检测以定位运动员并生成边界框,最后是用于创建 3D 关键点以进行姿势估计的 3DMPPE 模型。
在对一批帧生成推理之后,每个管道还包括一个单独的后处理实时 Cortex 端点,该端点生成三个主要输出:
- 将身体关键点数据聚合到单个 CSV 文件中
- BMA 计算(如加速度)
- 添加到图像文件中每一帧的关键点的视觉叠加
Collector Lambda 函数将与特定视频关联的适当元数据(例如姿势估计推理输出的帧 ID 和 S3 位置)提交到端点以生成这些后处理输出。
Cortex 旨在与 Amazon EKS 集成,只需要一个集群配置文件和一个简单的命令即可启动 Kubernetes 集群:
性能调整的另一个手段是计算集群的实例配置。 使用不同的 M5 和 G4dn 实例混合创建了三层,编码为 .yaml 文件,其中包含集群名称、区域以及实例配置和混合等规范。 M5 实例基于成本较低的 CPU,而 G4dn 则基于成本较高的 GPU,以提供一些成本/性能权衡。
运行监控
为了维护操作日志标准,所有 Lambda 函数都包含用于记录和摄取日志的代码 亚马逊 Kinesis 数据流水线. 例如,从提交者 Lambda 函数处理的每个帧批次都会使用时间戳、操作名称和 Lambda 函数响应 JSON 进行记录,并保存到 Amazon S3。 下图说明了架构中的这一步骤。
部署
使用 AWS SAM 处理部署,这是一个用于在 AWS 中构建无服务器应用程序的开源框架。 AWS SAM 使基础设施设计(包括函数、API、数据库和事件源映射)能够在新的 AWS 环境中进行编码和轻松部署。 在部署期间,AWS SAM 语法被翻译成 AWS CloudFormation 处理基础设施配置。
A template.yaml
文件包含基础设施规范以及可调参数,例如前面部分中详述的 Kinesis Data Streams 延迟杠杆。 一个 samconfig.toml
文件包含部署参数,例如堆栈名称、存储 Lambda 函数代码等应用程序文件的 S3 存储桶名称以及用于跟踪成本的资源标签。 构建和部署整个模板只需要一个带有简单命令的 deploy.sh shell 脚本:
用户工作流程
综上所述,在基础设施部署完成后,您可以按照以下工作流程开始:
- 使用客户端库创建英特尔 3DAT 客户端。
- 使用 API 创建与所需处理类型相对应的管道的新实例,例如用于 3D 姿态估计的流水线实例。
- 创建项目的新实例,传入集群 ARN 和 Kinesis 队列 ARN。
- 创建管道参数集的新实例。
- 创建映射到管道参数集的管道参数的新实例。
- 创建与项目 ID 和管道参数集 ID 关联的新用户组。
- 创建与用户组关联的新用户。
- 使用作业 API 中的上传功能生成的预签名 S3 URL 将 .zip 视频文件上传到 Amazon S3。
- 提交一个
create_job
API 调用,带有指定视频文件位置的作业参数。 这将启动处理作业。
结论
该应用程序现已上线并准备好接受运动员和教练的测试。 英特尔 OTG 很高兴能够使用计算机视觉为各种用户(从开发人员到运动员再到软件供应商合作伙伴)提供创新的姿势估计技术。
AWS 团队热衷于帮助英特尔 OTG 等客户加速他们的 ML 之旅,从 ML Solutions Lab 的构思和发现阶段到 AWS ML ProServe 的强化和部署阶段。 我们都将密切关注今年夏天的 2021 年东京奥运会,以设想 ML 可以在体育运动中取得的所有进展。
立即开始! 通过本文中提到的服务和其他许多参考资料探索您的用例。 AWS管理控制台.
作者简介
韩满 是位于加利福尼亚州圣地亚哥的 AWS 的机器学习和人工智能高级经理。 他拥有西北大学工程学博士学位,并拥有数年的管理顾问经验,为制造、金融服务和能源领域的客户提供咨询服务。 如今,他正热情地与来自各行各业的客户合作,在 AWS 上开发和实施机器学习和人工智能解决方案。 他喜欢在业余时间关注NBA和打篮球。
伊曼·卡米亚比 是 AWS 专业服务的 ML 工程师。 他与众多 AWS 客户合作,倡导建立可重复且可靠的 ML 管道的最佳实践。
乔纳森李 是英特尔奥林匹克技术集团运动表现技术总监。 他在加州大学洛杉矶分校(UCLA)和牛津大学(University of Oxford)研究生期间研究了机器学习在健康中的应用。 他的职业生涯主要集中在算法和传感器开发方面,以促进健康和人类表现。 他现在领导英特尔的3D运动员追踪项目。
梁家Nelson 是英特尔运动表现中心的平台架构师,他在其中定义了可增强运动员表现的尖端产品的端到端架构。 他还领导了这些机器学习解决方案的实施,部署和产品化,扩展到了不同的英特尔合作伙伴。
特洛伊斯奎拉奇 是英特尔的 DecSecOps 工程师,他通过 DevOps 最佳实践为客户提供专业的软件解决方案。 他喜欢将 AI 解决方案集成到各个领域的可扩展平台中。
保罗敏 是 Amazon Web Services (AWS) 的一名助理解决方案架构师实习生,他帮助不同行业垂直领域的客户推进他们的使命并加速他们的云采用。 此前,他曾在英特尔担任软件工程实习生,帮助开发 3D 运动员跟踪云 SDK。 工作之余,Paul 喜欢打高尔夫球,可以听到他唱歌。
- "
- &
- 000
- 100
- 2021
- 3d
- 关于
- 加快
- ACCESS
- 无障碍
- 根据
- 账号管理
- 横过
- 操作
- 行动
- 增加
- 额外
- 管理员
- 采用
- AI
- 算法
- 所有类型
- Amazon
- 亚马逊网络服务
- 其中包括
- API
- APIs
- 应用领域
- 应用领域
- 适当
- 架构
- 参数
- 分配
- 律师
- 运动员
- 属性
- 自动表
- AWS
- 备份工具
- 篮球
- before
- 好处
- 最佳
- 最佳实践
- 黑色
- 博客
- 身体
- 盒子
- 建立
- 建筑物
- 呼叫
- 容量
- 关心
- 寻找工作
- 例
- 中央
- 冠军
- 更改
- 选择
- 客户
- 云端技术
- 码
- 采集
- 集电极
- 结合
- 元件
- 计算
- 一台
- 配置
- 地都
- 顾问
- 消费者
- 消费者
- 容器
- 集装箱
- 包含
- 继续
- 控制
- 协调
- 核心
- 相应
- 创建信息图
- 创建
- 创建
- 创造
- 创建
- 资历
- 危急
- 关键
- 电流
- 目前
- 习俗
- 顾客
- 合作伙伴
- 前沿
- data
- 数据库
- 数据库
- 天
- 专用
- 更深
- 提供
- 部署
- 部署
- 部署
- 部署
- 设计
- 设计
- 细节
- 详细
- 详情
- 检测
- 开发
- 开发商
- 开发
- 研发支持
- 不同
- 区分
- 直接
- 副总经理
- 发现
- 显示器
- 码头工人
- 不会
- 域名
- 向下
- ,我们将参加
- 容易
- 邮箱地址
- 端点
- 能源
- 发动机
- 工程师
- 工程师
- 环境
- 活动
- 例子
- 兴奋
- 现有
- 预计
- 体验
- 探索
- 专栏
- 终于
- 金融
- 金融服务
- 姓氏:
- 适合
- 舰队
- 高度灵活
- 柔软
- 重点
- 遵循
- 以下
- 如下
- 格式
- 前瞻性的
- FRAME
- 骨架
- 功能
- 实用
- 功能
- 功能
- 未来
- 生成
- 发电
- 代
- 给予
- 目标
- 非常好
- GPU
- 毕业
- 团队
- 组的
- 处理
- 处理
- 硬件
- 健康管理
- 听说
- 帮助
- 帮助
- 帮助
- 此处
- 更高
- 创新中心
- HTTPS
- 人
- 身分
- 图片
- 实施
- 履行
- 重要
- 包括
- 包括
- 包含
- 个人
- 行业
- 行业中的应用:
- 基础设施
- 创新
- 输入
- 刀片
- 安装
- 集成
- 积分
- 英特尔
- 房源搜索
- 相互作用
- 接口
- IT
- 工作
- 工作机会
- 旅程
- 键
- 实验室
- 发射
- 发射
- 信息
- 学习
- Level
- 自学资料库
- Line
- 清单
- 装载
- 圖書分館的位置
- 地点
- 机
- 机器学习
- 制成
- 保持
- 主要
- 制作
- 男子
- 管理
- 管理
- 颠覆性技术
- 制造业
- 地图
- 制图
- 提到
- 方法
- 指标
- 最低限度
- 使命
- ML
- 联络号码
- 移动应用程序
- 模型
- 模型
- 模块化
- 更多
- 最先进的
- 多
- 名称
- NBA
- 必要
- 需要
- 数
- 奥运会
- 打开
- 操作
- 优化
- 附加选项
- 秩序
- 其他名称
- 己
- 牛津
- 包
- 部分
- 特别
- 尤其
- 伙伴
- 通过
- 多情
- 模式
- 百分比
- 性能
- 执行
- 透视
- 片
- 平台
- 平台
- 播放
- 诗
- 点
- 可能
- 功率
- 强大
- Prepare
- 以前
- 小学
- 原理
- 优先
- 过程
- 过程
- 处理
- 处理器
- 生产
- 生产
- 热销产品
- 所以专业
- 项目
- 提供
- 提供
- 目的
- 范围
- 原
- 即时的
- 承认
- 记录
- 记录
- 关于
- 可靠
- 要求
- 要求
- 必须
- 岗位要求
- 需要
- 资源
- 资源
- 响应
- 成果
- 运行
- 运行
- 实现安全
- 圣
- 可扩展性
- 可扩展性
- 鳞片
- 缩放
- SDK
- 安全
- 中模板
- 无服务器
- 服务
- 特色服务
- 集
- 设置
- 形状
- 共享
- 壳
- 如图
- 类似
- 同样
- 简易
- 尺寸
- So
- 软件
- 软件作为一种服务
- 软件工程
- 方案,
- 解决方案
- 一些
- 有人
- 专门
- 规格
- 速度
- 运动
- 堆
- 阶段
- 标准
- 标准
- 开始
- 开始
- 启动
- 州/领地
- 国家的最先进的
- Status
- 存储
- 商店
- 流
- 流
- 提交
- 后来
- 夏季
- SUPPORT
- 支持
- 系统
- 服用
- 团队
- 专业技术
- 测试
- 因此
- 通过
- 领带
- 次
- 今晚
- 一起
- 东京
- 跟踪时
- 跟踪
- 类型
- 一般
- 加州大学洛杉矶分校
- 大学
- 牛津大学
- 开锁
- 更新
- 使用
- 用户
- 利用
- 折扣值
- 各种
- 各个
- 垂直
- 视频
- 视频
- 愿景
- 卷筒纸
- Web服务
- WHO
- 也完全不需要
- 工作
- 工作
- 加工
- 年