AWS IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1 维护策略。在此日期之后,将 AWS IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 AWS IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,这样可以添加重要的新功能并支持其他平台。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
ML 图像分类连接器
ML 图像分类连接器提供在 AWS IoT Greengrass 核心上运行的机器学习 (ML) 推理服务。此局部推理服务使用由 SageMaker AI 图像分类算法训练的模型执行图像分类。
用户定义的 Lambda 函数使用 M AWS IoT Greengrass achine Learning SDK 向本地推理服务提交推理请求。该服务在本地运行推理,并返回输入映像属于特定类别的概率。
AWS IoT Greengrass 提供了此连接器的以下版本,可用于多个平台。
- Version 2
-
Connector |
描述和 ARN |
机器学习图像分类 Aarch64 JTX2 |
适用于 NVIDIA Jet TX2 son 的图像分类推理服务。支持 GPU 加速。
ARN:arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/2 |
ML 图像分类 x86_64 |
适用于 x86_64 平台的映像分类推理服务。
ARN:arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/2 |
机器学习图像分类 ARMv7 |
ARMv7 平台图像分类推理服务。
ARN:arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/2 |
- Version 1
-
Connector |
描述和 ARN |
机器学习图像分类 Aarch64 JTX2 |
适用于 NVIDIA Jet TX2 son 的图像分类推理服务。支持 GPU 加速。
ARN:arn:aws:greengrass:region ::/connectors/ImageClassificationAarch64JTX2/versions/1 |
ML 图像分类 x86_64 |
适用于 x86_64 平台的映像分类推理服务。
ARN:arn:aws:greengrass:region ::/connectors/ImageClassificationx86-64/versions/1 |
ML 图像分类 Armv7 |
适用于 ARMv7 平台的映像分类推理服务。
ARN:arn:aws:greengrass:region ::/connectors/ImageClassificationARMv7/versions/1 |
有关版本更改的信息,请参阅更改日志。
要求
这些连接器具有以下要求:
- Version 2
-
-
AWS IoT Greengrass 核心软件 v1.9.3 或更高版本。
-
Python 版本 3.7 或 3.8 已安装在核心设备上,并已添加到 PATH 环境变量中。
要使用 Python 3.8,请运行以下命令来创建从默认 Python 3.7 安装文件夹到已安装的 Python 3.8 二进制文件的符号链接。
sudo ln -s path-to-python-3.8
/python3.8 /usr/bin/python3.7
这会将设备配置为满足 AWS IoT Greengrass的 Python 要求。
-
安装在核心设备上的 Apache MXNet 框架的依赖关系。有关更多信息,请参阅 在 AWS IoT Greengrass 核心上安装 MXNet 依赖关系。
-
Greengrass 群组中的一种引用 AI 模型源的机器学习资源。 SageMaker 该模型必须通过 SageMaker AI 图像分类算法进行训练。有关更多信息,请参阅 Amazon A SageMaker I 开发者指南中的图像分类算法。
-
添加到 Greengrass 组且已配置的 ML 反馈连接器。仅当您要使用此连接器上传模型输入数据并将预测发布到 MQTT 主题时,这才是必需的。
-
Greengrass 组角色,配置为允许对目标训练作业执行 sagemaker:DescribeTrainingJob
操作,如以下示例 IAM policy 中所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
对于组角色要求,您必须将角色配置为授予所需权限,并确保角色已添加到组中。有关更多信息,请参阅管理 Greengrass 组角色(控制台)或管理 Greengrass 组角色 (CLI)。
您可以授予对资源的具体或条件访问权限(例如,通过使用通配符*命名方案)。如果将来要更改目标训练任务,请务必更新组角色。
-
AWS IoT Greengrass 需要使用 M@@ achine Learning SDK v1.1.0 才能与此连接器进行交互。
- Version 1
-
-
AWS IoT Greengrass 核心软件 v1.7 或更高版本。
-
Python 版本 2.7 已安装在核心设备上,并已添加到 PATH 环境变量中。
-
安装在核心设备上的 Apache MXNet 框架的依赖关系。有关更多信息,请参阅 在 AWS IoT Greengrass 核心上安装 MXNet 依赖关系。
-
Greengrass 群组中的一种引用 AI 模型源的机器学习资源。 SageMaker 该模型必须通过 SageMaker AI 图像分类算法进行训练。有关更多信息,请参阅 Amazon A SageMaker I 开发者指南中的图像分类算法。
-
Greengrass 组角色,配置为允许对目标训练作业执行 sagemaker:DescribeTrainingJob
操作,如以下示例 IAM policy 中所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sagemaker:DescribeTrainingJob"
],
"Resource": "arn:aws:sagemaker:region
:account-id
:training-job:training-job-name
"
}
]
}
对于组角色要求,您必须将角色配置为授予所需权限,并确保角色已添加到组中。有关更多信息,请参阅管理 Greengrass 组角色(控制台)或管理 Greengrass 组角色 (CLI)。
您可以授予对资源的具体或条件访问权限(例如,通过使用通配符*命名方案)。如果将来要更改目标训练任务,请务必更新组角色。
-
AWS IoT Greengrass 需要使用 M@@ achine Learning SDK v1.0.0 或更高版本才能与此连接器进行交互。
连接器参数
这些连接器提供以下参数。
- Version 2
-
MLModelDestinationPath
-
Lambda 环境中 ML 资源的本地绝对路径。这是为 ML 资源指定的目标路径。
如果您在控制台中创建了 ML 资源,这便是本地路径。
AWS IoT 控制台中的显示名称:模型目标路径
必需:true
类型:string
有效模式:.+
MLModelResourceId
-
引用源模型的 ML 资源的 ID。
AWS IoT 控制台中的显示名称:SageMaker 作业 ARN 资源
必需:true
类型:string
有效模式:[a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
代表 AI 模型来源的 SageMaker AI 训练作业的 SageMaker ARN。模型必须通过 SageMaker AI 图像分类算法进行训练。
AWS IoT 控制台中的显示名称:SageMaker 作业 ARN
必需:true
类型:string
有效模式:^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
本地推理服务的名称。用户定义的 Lambda 函数通过将名称传递给 Machine Learn AWS IoT Greengrass ing SD invoke_inference_service
K 的函数来调用服务。有关示例,请参阅用法示例。
AWS IoT 控制台中的显示名称:本地推理服务名称
必需:true
类型:string
有效模式:[a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
在推理请求终止之前经过的时间(以秒为单位)。最小值为 1。
AWS IoT 控制台中的显示名称:超时(秒)
必需:true
类型:string
有效模式:[1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
该服务有权访问的内存量(以 KB 为单位)。最小值为 1。
AWS IoT 控制台中的显示名称:内存限制 (KB)
必需:true
类型:string
有效模式:[1-9][0-9]*
GPUAcceleration
-
CPU 或 GPU(加速)计算上下文。此属性仅适用于 ML 图像分类 Aarch64 JTX2 连接器。
AWS IoT 控制台中的显示名称:GPU 加速
必需:true
类型:string
有效值:CPU
或 GPU
MLFeedbackConnectorConfigId
-
用于上传模型输入数据的反馈配置的 ID。这必须与为 ML 反馈连接器定义的反馈配置的 ID 匹配。
仅当您要使用 ML 反馈连接器上传模型输入数据并将预测发布到 MQTT 主题时,才需要此参数。
AWS IoT 控制台中的显示名称:ML 反馈连接器配置 ID
必需:false
类型:string
有效模式:^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
- Version 1
-
MLModelDestinationPath
-
Lambda 环境中 ML 资源的本地绝对路径。这是为 ML 资源指定的目标路径。
如果您在控制台中创建了 ML 资源,这便是本地路径。
AWS IoT 控制台中的显示名称:模型目标路径
必需:true
类型:string
有效模式:.+
MLModelResourceId
-
引用源模型的 ML 资源的 ID。
AWS IoT 控制台中的显示名称:SageMaker 作业 ARN 资源
必需:true
类型:string
有效模式:[a-zA-Z0-9:_-]+
MLModelSageMakerJobArn
-
代表 AI 模型来源的 SageMaker AI 训练作业的 SageMaker ARN。模型必须通过 SageMaker AI 图像分类算法进行训练。
AWS IoT 控制台中的显示名称:SageMaker 作业 ARN
必需:true
类型:string
有效模式:^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][a-zA-Z0-9-]+$
LocalInferenceServiceName
-
本地推理服务的名称。用户定义的 Lambda 函数通过将名称传递给 Machine Learn AWS IoT Greengrass ing SD invoke_inference_service
K 的函数来调用服务。有关示例,请参阅用法示例。
AWS IoT 控制台中的显示名称:本地推理服务名称
必需:true
类型:string
有效模式:[a-zA-Z0-9][a-zA-Z0-9-]{1,62}
LocalInferenceServiceTimeoutSeconds
-
在推理请求终止之前经过的时间(以秒为单位)。最小值为 1。
AWS IoT 控制台中的显示名称:超时(秒)
必需:true
类型:string
有效模式:[1-9][0-9]*
LocalInferenceServiceMemoryLimitKB
-
该服务有权访问的内存量(以 KB 为单位)。最小值为 1。
AWS IoT 控制台中的显示名称:内存限制 (KB)
必需:true
类型:string
有效模式:[1-9][0-9]*
GPUAcceleration
-
CPU 或 GPU(加速)计算上下文。此属性仅适用于 ML 图像分类 Aarch64 JTX2 连接器。
AWS IoT 控制台中的显示名称:GPU 加速
必需:true
类型:string
有效值:CPU
或 GPU
创建连接器示例 (AWS CLI)
以下 CLI 命令创建一个 ConnectorDefinition
,它具有包含 ML 图像分类连接器的初始版本。
- 示例:CPU 实例
-
以下示例创建 ML 图像分类 ARMv7l 连接器的实例。
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
"Connectors": [
{
"Id": "MyImageClassificationConnector",
"ConnectorArn": "arn:aws:greengrass:region
::/connectors/ImageClassificationARMv7/versions/2",
"Parameters": {
"MLModelDestinationPath": "/path-to-model",
"MLModelResourceId": "my-ml-resource",
"MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
"LocalInferenceServiceName": "imageClassification",
"LocalInferenceServiceTimeoutSeconds": "10",
"LocalInferenceServiceMemoryLimitKB": "500000",
"MLFeedbackConnectorConfigId": "MyConfig0"
}
}
]
}'
- 示例:GPU 实例
-
此示例创建了 ML 图像分类 Aarch64 JTX2 连接器的实例,该连接器支持 NVIDIA Jet TX2 son 主板上的 GPU 加速。
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
"Connectors": [
{
"Id": "MyImageClassificationConnector",
"ConnectorArn": "arn:aws:greengrass:region
::/connectors/ImageClassificationAarch64JTX2/versions/2",
"Parameters": {
"MLModelDestinationPath": "/path-to-model",
"MLModelResourceId": "my-ml-resource",
"MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier",
"LocalInferenceServiceName": "imageClassification",
"LocalInferenceServiceTimeoutSeconds": "10",
"LocalInferenceServiceMemoryLimitKB": "500000",
"GPUAcceleration": "GPU",
"MLFeedbackConnectorConfigId": "MyConfig0"
}
}
]
}'
这些连接器中的 Lambda 函数的生命周期很长。
在 AWS IoT Greengrass 控制台中,您可以从群组的 “连接器” 页面添加连接器。有关更多信息,请参阅 Greengrass 连接器入门(控制台)。
这些连接器接受一个图像文件作为输入。输入图像文件必须为 jpeg
或 png
格式。有关更多信息,请参阅 用法示例。
这些连接器不接受 MQTT 消息作为输入数据。
输出数据
这些连接器返回输入图像中识别的对象的格式化预测:
[0.3,0.1,0.04,...]
预测包含值列表,这些值与模型训练期间训练数据集中使用的类别相对应。每个值代表图像落入相应类别的概率。概率最高的类别是主导预测。
这些连接器不发布 MQTT 消息来作为输出数据。
用法示例
以下示例 Lambda 函数使用 AWS IoT Greengrass 机器学习软件开发工具包 与 ML 图像分类连接器进行交互。
该示例初始化一个开发工具包客户端,并同步调用该开发工具包的 invoke_inference_service
函数来调用本地推理服务。它会传入算法类型、服务名称、映像类型和映像内容。然后,该示例会解析服务响应以获取概率结果(预测)。
- Python 3.7
-
import logging
from threading import Timer
import numpy as np
import greengrass_machine_learning_sdk as ml
# We assume the inference input image is provided as a local file
# to this inference client Lambda function.
with open('/test_img/test.jpg', 'rb') as f:
content = bytearray(f.read())
client = ml.client('inference')
def infer():
logging.info('invoking Greengrass ML Inference service')
try:
resp = client.invoke_inference_service(
AlgoType='image-classification',
ServiceName='imageClassification',
ContentType='image/jpeg',
Body=content
)
except ml.GreengrassInferenceException as e:
logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e))
return
except ml.GreengrassDependencyException as e:
logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e))
return
logging.info('resp: {}'.format(resp))
predictions = resp['Body'].read().decode("utf-8")
logging.info('predictions: {}'.format(predictions))
# The connector output is in the format: [0.3,0.1,0.04,...]
# Remove the '[' and ']' at the beginning and end.
predictions = predictions[1:-1]
count = len(predictions.split(','))
predictions_arr = np.fromstring(predictions, count=count, sep=',')
# Perform business logic that relies on the predictions_arr, which is an array
# of probabilities.
# Schedule the infer() function to run again in one second.
Timer(1, infer).start()
return
infer()
def function_handler(event, context):
return
- Python 2.7
-
import logging
from threading import Timer
import numpy
import greengrass_machine_learning_sdk as gg_ml
# The inference input image.
with open("/test_img/test.jpg", "rb") as f:
content = f.read()
client = gg_ml.client("inference")
def infer():
logging.info("Invoking Greengrass ML Inference service")
try:
resp = client.invoke_inference_service(
AlgoType="image-classification",
ServiceName="imageClassification",
ContentType="image/jpeg",
Body=content,
)
except gg_ml.GreengrassInferenceException as e:
logging.info('Inference exception %s("%s")', e.__class__.__name__, e)
return
except gg_ml.GreengrassDependencyException as e:
logging.info('Dependency exception %s("%s")', e.__class__.__name__, e)
return
logging.info("Response: %s", resp)
predictions = resp["Body"].read()
logging.info("Predictions: %s", predictions)
# The connector output is in the format: [0.3,0.1,0.04,...]
# Remove the '[' and ']' at the beginning and end.
predictions = predictions[1:-1]
predictions_arr = numpy.fromstring(predictions, sep=",")
logging.info("Split into %s predictions.", len(predictions_arr))
# Perform business logic that relies on predictions_arr, which is an array
# of probabilities.
# Schedule the infer() function to run again in one second.
Timer(1, infer).start()
infer()
# In this example, the required AWS Lambda handler is never called.
def function_handler(event, context):
return
Machine Lear AWS IoT Greengrass ning SDK 中的invoke_inference_service
函数接受以下参数。
参数 |
描述 |
AlgoType
|
要用于推理的算法类型的名称。目前仅支持 image-classification 。
必需:true
类型:string
有效值:image-classification |
ServiceName
|
本地推理服务的名称。在配置了连接器时,使用为 LocalInferenceServiceName 参数指定的名称。
必需:true
类型:string |
ContentType
|
输入映像的 mime 类型。
必需:true
类型:string
有效值:image/jpeg, image/png |
Body
|
输入映像文件的内容。
必需:true
类型:binary |
在 AWS IoT Greengrass 核心上安装 MXNet 依赖关系
要使用 ML 图像分类连接器,必须在核心设备上安装 Apache MXNet 框架的依赖关系。连接器使用该框架来处理 ML 模型。
这些连接器与预编译的 MXNet 库捆绑在一起,因此您无需在核心设备上安装 MXNet 框架。
AWS IoT Greengrass 提供了用于安装以下常用平台和设备的依赖关系的脚本(或用作安装它们的参考)。如果您使用的是其他平台或设备,请参阅有关您的配置的MXNet 文档。
在安装 MXNet 依赖关系之前,请确保设备上存在所需的系统库(具有指定的最低版本)。
- NVIDIA Jetson TX2
-
-
安装 CUDA Toolkit 9.0 和 cuDNN 7.0。您可以按照入门教程中设置其他设备中的说明进行操作。
-
启用通用存储库,以便连接器可以安装社区维护的开放软件。有关更多信息,请参阅 Ubuntu 文档中的 Repositories/Ubuntu。
-
打开 /etc/apt/sources.list
文件。
-
确保以下各行已取消注释。
deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe
deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
-
将以下安装脚本的副本保存到核心设备上一个名为 nvidiajtx2.sh
的文件。
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
echo 'Assuming that universe repos are enabled and checking dependencies...'
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev
apt-get install -y python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
echo 'Assuming that universe repos are enabled and checking dependencies...'
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev
echo 'Install latest pip...'
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
rm get-pip.py
pip install numpy==1.15.0 scipy
echo 'Dependency installation/upgrade complete.'
-
从保存文件的目录中,运行以下命令:
sudo nvidiajtx2.sh
- x86_64 (Ubuntu or Amazon Linux)
-
-
将以下安装脚本的副本保存到核心设备上一个名为 x86_64.sh
的文件。
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [ "$release" == '"Ubuntu"' ]; then
# Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
# this is mostly to prepare dependencies on Ubuntu EC2 instance.
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y libgfortran3 libsm6 libxext6 libxrender1
apt-get install -y python3.7 python3.7-dev
elif [ "$release" == '"Amazon Linux"' ]; then
# Amazon Linux. Expect python to be installed already
yum -y update
yum -y upgrade
yum install -y compat-gcc-48-libgfortran libSM libXrender libXext
else
echo "OS Release not supported: $release"
exit 1
fi
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
release=$(awk -F= '/^NAME/{print $2}' /etc/os-release)
if [ "$release" == '"Ubuntu"' ]; then
# Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so
# this is mostly to prepare dependencies on Ubuntu EC2 instance.
apt-get -y update
apt-get -y dist-upgrade
apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip
elif [ "$release" == '"Amazon Linux"' ]; then
# Amazon Linux. Expect python to be installed already
yum -y update
yum -y upgrade
yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip
else
echo "OS Release not supported: $release"
exit 1
fi
pip install numpy==1.15.0 scipy opencv-python
echo 'Dependency installation/upgrade complete.'
-
从保存文件的目录中,运行以下命令:
sudo x86_64.sh
- Armv7 (Raspberry Pi)
-
-
将以下安装脚本的副本保存到核心设备上一个名为 armv7l.sh
的文件。
Python 3.7Python 2.7
- Python 3.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
apt-get update
apt-get -y upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev
apt-get install -y python3.7 python3.7-dev
python3.7 -m pip install --upgrade pip
python3.7 -m pip install numpy==1.15.0
python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).'
echo 'Dependency installation/upgrade complete.'
- Python 2.7
#!/bin/bash
set -e
echo "Installing dependencies on the system..."
apt-get update
apt-get -y upgrade
apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev
# python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2
# This script installs python-numpy first so that python-opencv can be installed, and then install the latest
# numpy-1.15.x with pip
apt-get install -y python-numpy python-opencv
dpkg --remove --force-depends python-numpy
echo 'Install latest pip...'
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
rm get-pip.py
pip install --upgrade numpy==1.15.0 picamera scipy
echo 'Dependency installation/upgrade complete.'
-
从保存文件的目录中,运行以下命令:
sudo bash armv7l.sh
在 Raspberry Pi 上,使用 pip
安装机器学习依赖项是一项内存密集型操作,可能会导致设备用尽内存,变得无法响应。解决办法是临时增加交换空间大小:
在 /etc/dphys-swapfile
中,增加 CONF_SWAPSIZE
变量的值,然后运行以下命令重启 dphys-swapfile
。
/etc/init.d/dphys-swapfile restart
日志记录和故障排除
根据您的群组设置,事件和错误日志会写入日 CloudWatch 志、本地文件系统或两者兼而有之。此连接器中的日志使用前缀 LocalInferenceServiceName
。如果连接器出现异常行为,请检查连接器日志。其中经常包含有用的调试信息,例如缺失 ML 库依赖项或连接器启动故障的原因。
如果将 AWS IoT Greengrass 组配置为写入本地日志,则连接器会将日志文件写入到greengrass-root
/ggc/var/log/user/region
/aws/
。有关 Greengrass 日志记录的更多信息,请参阅 利用 AWS IoT Greengrass 日志进行监控。
可以使用以下信息帮助解决 ML 图像分类连接器问题。
所需系统库
以下选项卡列出了每个 ML 图像分类连接器所需的系统库。
- ML Image Classification Aarch64 JTX2
-
图书馆 |
最低版本 |
ld-linux-aarch64.so.1 | GLIBC_2.17 |
libc.so.6 | GLIBC_2.17 |
libcublas.so.9.0 | 不适用 |
libcudart.so.9.0 | 不适用 |
libcudnn.so.7 | 不适用 |
libcufft.so.9.0 | 不适用 |
libcurand.so.9.0 | 不适用 |
libcusolver.so.9.0 | 不适用 |
libgcc_s.so.1 | GCC_4.2.0 |
libgomp.so.1 | GOMP_4.0,OMP_1.0 |
libm.so.6 | GLIBC_2.23 |
libpthread.so.0 | GLIBC_2.17 |
librt.so.1 | GLIBC_2.17 |
libstdc++.so.6 | GLIBCXX_3.4.21,CXXABI_1.3.8 |
- ML Image Classification x86_64
-
图书馆 |
最低版本 |
ld-linux-x86-64.so.2 | GCC_4.0.0 |
libc.so.6 | GLIBC_2.4 |
libgfortran.so.3 | GFORTRAN_1.0 |
libm.so.6 | GLIBC_2.23 |
libpthread.so.0 | GLIBC_2.2.5 |
librt.so.1 | GLIBC_2.2.5 |
libstdc++.so.6 | CXXABI_1.3.8,GLIBCXX_3.4.21 |
- ML Image Classification Armv7
-
图书馆 |
最低版本 |
ld-linux-armhf.so.3 | GLIBC_2.4 |
libc.so.6 | GLIBC_2.7 |
libgcc_s.so.1 | GCC_4.0.0 |
libgfortran.so.3 | GFORTRAN_1.0 |
libm.so.6 | GLIBC_2.4 |
libpthread.so.0 | GLIBC_2.4 |
librt.so.1 | GLIBC_2.4 |
libstdc++.so.6 | CXXABI_1.3.8,CXXABI_ARM_1.3.3,GLIBCXX_3.4.20 |
问题
症状 |
解决方案 |
在 Raspberry Pi 上,记录了以下错误消息,并且您没有使用摄像机:Failed to initialize libdc1394
|
运行以下命令以显示驱动程序:
sudo ln /dev/null /dev/raw1394
此操作是临时的,符号链接将在重启后消失。请参阅您的 OS 分发手册以了解如何在重启时自动创建链接。
|
许可证
ML 图像分类连接器包含以下第三方软件/许可:
Intel OpenMP 运行时库许可。Intel® OpenMP* 运行时经过双重许可,具有商业 (COM) 许可证(作为 Intel® Parallel Studio XE Suite 产品的一部分)和 BSD 开源 (OSS) 许可证。
该连接器在 Greengrass Core 软件许可协议下发布。
更改日志
下表介绍每个版本连接器的更改。
版本 |
更改 |
2 |
添加了MLFeedbackConnectorConfigId 参数以支持使用机器学习反馈连接器上传模型输入数据、向 MQTT 主题发布预测以及向 Amazon CloudWatch 发布指标。
|
1 |
首次发布。
|
Greengrass 组在一个时间上只能包含一个版本的连接器。有关升级连接器版本的信息,请参阅升级连接器版本。
另请参阅