

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 执行机器学习推理
<a name="perform-machine-learning-inference"></a>

借 AWS IoT Greengrass助，您可以使用经过云训练的模型在边缘设备上对本地生成的数据执行机器学习 (ML) 推理。您可以从运行本地推理的低延迟和成本节省中受益，且仍然可以利用云计算在训练模型和复杂处理方面的强大功能。

AWS IoT Greengrass 使执行推理所需的步骤更加高效。您可以在任何地方训练推理模型，并将推理模型作为*机器学习组件*部署到本地。例如，您可以在 [Amazon A SageMaker I](https://console.aws.amazon.com/sagemaker) 中构建和训练深度学习模型。然后，您可以将这些模型存储在 [Amazon S3](https://console.aws.amazon.com/s3) 存储桶中，这样您就可以将这些模型用作组件中的构件，以便在核心设备上执行推理。

**Topics**
+ [AWS IoT Greengrass 机器学习推理的工作原理](#how-ml-inference-works)
+ [AWS IoT Greengrass 版本 2 有什么不同？](#ml-differences)
+ [要求](#ml-requirements)
+ [支持的模型源](#ml-model-sources)
+ [支持的机器学习运行时](#ml-runtime-libraries)
+ [AWS提供的机器学习组件](#ml-components)
+ [在 Greengrass 核心设备上使用亚马逊 SageMaker AI 边缘管理器](use-sagemaker-edge-manager.md)
+ [自定义您的机器学习组件](ml-customization.md)
+ [机器学习推理故障排除](ml-troubleshooting.md)

## AWS IoT Greengrass 机器学习推理的工作原理
<a name="how-ml-inference-works"></a>

AWS 提供了[机器学习组件，您可以使用这些组件](#ml-components)来创建一步部署以在设备上执行机器学习推理。您也可以将这些组件用作模板来创建自定义组件以满足您的特定要求。<a name="ml-component-types"></a>

AWS 提供以下类别的机器学习组件：
+ **模型组件** – 包含作为 Greengrass 构件的机器学习模型。
+ **运行时组件** – 包含用于在 Greengrass 核心设备上安装机器学习框架及其依赖关系的脚本。
+ **推理组件** – 包含推理代码并包括组件依赖关系，用于安装机器学习框架和下载预训练的机器学习模型。

您为执行机器学习推理而创建的每个部署都至少包含一个组件，用于运行推理应用程序、安装机器学习框架和下载机器学习模型。要使用 AWS提供的组件执行示例推理，您需要将推理组件部署到核心设备，该组件会自动包括相应的模型和运行时组件作为依赖项。要自定义部署，您可以将示例模型组件插入或替换为自定义模型组件，也可以将 AWS提供的组件配方用作模板来创建自己的自定义推理、模型和运行时组件。

要使用自定义组件执行机器学习推理，请执行以下操作：

1. 创建模型组件。该组件包含您要用于执行推理的机器学习模型。 AWS 提供了预训练的 DLR 和 L TensorFlow ite 模型示例。要使用自定义模型，请创建自己的模型组件。

1. 创建运行时组件。该组件包含为模型安装机器学习运行时所需的脚本。 AWS 为[深度学习运行时 (DLR) 和[TensorFlow 精简版](https://www.tensorflow.org/lite/guide/python)提供了示例运行时](https://github.com/neo-ai/neo-ai-dlr)组件。要将其他运行时与自定义模型和推理代码配合使用，请创建自己的运行时组件。

1. 创建推理组件。该组件包含您的推理代码，并包括您的模型和运行时组件作为依赖项。 AWS 为使用 DLR 和 Lite 进行图像分类和目标检测提供示例推理组件。 TensorFlow 要执行其他类型的推理，或者要使用自定义模型和运行时，请创建自己的推理组件。

1. 部署推理组件。部署此组件时， AWS IoT Greengrass 还会自动部署模型和运行时组件依赖关系。

要开始使用 AWS提供的组件，请参阅[教程：使用 TensorFlow Lite 执行样本图像分类推断](ml-tutorial-image-classification.md)。

有关创建自定义机器学习组件的信息，请参阅[自定义您的机器学习组件](ml-customization.md)。

## AWS IoT Greengrass 版本 2 有什么不同？
<a name="ml-differences"></a>

AWS IoT Greengrass 将机器学习的功能单元（例如模型、运行时和推理代码）整合到组件中，使您能够使用一步式流程安装机器学习运行时、下载经过训练的模型并在设备上执行推理。

通过使用 AWS提供的机器学习组件，您可以灵活地开始使用示例推理代码和预训练模型执行机器学习推理。您可以插入自定义模型组件，将自己的自定义训练模型与提供的推理和运行时组件一起使用。 AWS 对于完全自定义的机器学习解决方案，您可以使用公有组件作为模板来创建自定义组件，并使用所需的任何运行时、模型或推理类型。

## 要求
<a name="ml-requirements"></a>

要创建和使用机器学习组件，必须具备以下条件：
+ Greengrass 核心设备。如果没有，请参阅[教程：AWS IoT Greengrass V2 入门](getting-started.md)。
+ 至少 500 MB 的本地存储空间才能使用 AWS提供的示例机器学习组件。

## 支持的模型源
<a name="ml-model-sources"></a>

AWS IoT Greengrass 支持使用存储在 Amazon S3 中的自定义训练机器学习模型。您还可以使用 Amazon SageMaker AI 边缘打包任务直接为您的 SageMaker AI 新编译模型创建模型组件。有关将 SageMaker AI 边缘管理器与配合使用的信息 AWS IoT Greengrass，请参阅[在 Greengrass 核心设备上使用亚马逊 SageMaker AI 边缘管理器](use-sagemaker-edge-manager.md)。

包含模型的 S3 存储桶必须满足以下要求：
+ 存储桶不得使用 SSE-C 加密。对于使用服务器端加密的存储桶， AWS IoT Greengrass 机器学习推理目前仅支持 SSE-S3 或 SSE-KMS 加密选项。有关服务器端加密选项的更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[使用服务器端加密保护数据](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html)。
+ 存储桶的名字不得包含句点 (`.`)。有关更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[存储桶命名规则](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html#bucketnamingrules)中有关通过 SSL 使用虚拟托管式存储桶的规则。
+ <a name="sr-artifacts-req"></a>存储模型源的 S3 存储桶必须与您的机器学习组件相同 AWS 账户 。 AWS 区域 
+ AWS IoT Greengrass 必须拥有模型来源的`read`权限。 AWS IoT Greengrass 要允许访问 S3 存储桶，G [reengrass 设备角色](device-service-role.md)必须允许该操作。`s3:GetObject`有关设备角色的更多信息，请参阅 [授权核心设备与 AWS 服务交互](device-service-role.md)。

## 支持的机器学习运行时
<a name="ml-runtime-libraries"></a>

AWS IoT Greengrass 允许您创建自定义组件，以便使用您选择的任何机器学习运行时对自定义训练模型执行机器学习推理。有关创建自定义机器学习组件的信息，请参阅[自定义您的机器学习组件](ml-customization.md)。

为了提高机器学习入门过程的效率， AWS IoT Greengrass 提供了使用以下机器学习运行时的示例推理、模型和运行时组件：
+  [深度学习运行时](https://github.com/neo-ai/neo-ai-dlr)（DLR）v1.6.0 和 v1.3.0
+  [TensorFlow 精简版 v2.](https://www.tensorflow.org/lite/guide/python) 5.0 

## AWS提供的机器学习组件
<a name="ml-components"></a>

下表列出了 AWS提供的用于机器学习的组件。

**注意**  <a name="component-nucleus-dependency-update-note"></a>
 AWS提供的几个组件依赖于 Greengrass 核的特定次要版本。由于这种依赖关系，当您将 Greengrass Nucleus 更新到新的次要版本时，您需要更新这些组件。有关每个组件所依赖的特定内核版本的信息，请参阅相应的组件主题。有关更新 Nucleus 的更多信息，请参阅 [更新 AWS IoT Greengrass Core 软件（OTA）](update-greengrass-core-v2.md)。


| 组件 | 描述 | [组件类型](develop-greengrass-components.md#component-types) | 支持的操作系统 | [开源](open-source.md) | 
| --- | --- | --- | --- | --- | 
| [SageMaker AI 边缘管理器](sagemaker-edge-manager-component.md) | 在 Greengrass 核心设备上部署 SageMaker Amazon AI Edge Manager 代理。 | 通用 | Linux、Windows | 否 | 
| [DLR 图像分类](dlr-image-classification-component.md) | 推理组件，使用 DLR 图像分类模型存储和 DLR 运行时组件作为依赖关系，在支持的设备上安装 DLR、下载示例图像分类模型和执行图像分类推理。 | 通用 | Linux、Windows | 否 | 
| [DLR 对象检测](dlr-object-detection-component.md) | 推理组件，使用 DLR 对象检测模型存储和 DLR 运行时组件作为依赖关系，在支持的设备上安装 DLR、下载示例对象检测模型和执行对象检测推理。 | 通用 | Linux、Windows | 否 | 
| [DLR 图像分类模型存储](dlr-image-classification-model-store-component.md) | 包含作为 Greengrass 伪影的样本 ResNet -50 图像分类模型的模型组件。 | 通用 | Linux、Windows | 否 | 
| [DLR 对象检测模型存储](dlr-object-detection-model-store-component.md) | 包含样本 YOLOv3 对象检测模型的模型组件，如 Greengrass 工件。 | 通用 | Linux、Windows | 否 | 
| [DLR 运行时](dlr-component.md) | 运行时组件，其中包含用于在 Greengrass 核心设备上安装 DLR 及其依赖关系的安装脚本。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版图像分类](tensorflow-lite-image-classification-component.md) | 推理组件，使用 TensorFlow Lite 图像分类模型存储和 TensorFlow Lite 运行时组件作为依赖项，用于在支持的设备上安装 TensorFlow Lite、下载样本图像分类模型和执行图像分类推理。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版物体检测](tensorflow-lite-object-detection-component.md) | 推理组件，使用 TensorFlow Lite 对象检测模型存储和 TensorFlow Lite 运行时组件作为依赖项，用于在支持的设备上安装 TensorFlow Lite、下载示例对象检测模型和执行对象检测推理。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版图像分类模型存储](tensorflow-lite-image-classification-model-store-component.md) | 包含作为 Greengrass 工件的示例 MobileNet v1 模型的模型组件。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版物体检测模型存储](tensorflow-lite-object-detection-model-store-component.md) | 模型组件，其中包含作为 Greengrass 工件的样本单枪检测 (SSD) MobileNet 模型。 | 通用 | Linux、Windows | 否 | 
| [TensorFlow 精简版运行时](tensorflow-lite-component.md) | 包含用于安装 TensorFlow Lite 的安装脚本及其对 Greengrass 核心设备的依赖关系的运行时组件。 | 通用 | Linux、Windows | 否 | 