AWS IoT Greengrass
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如何使用 AWS 管理控制台配置优化的机器学习推理

要执行本教程中的步骤,您必须使用 AWS IoT Greengrass 核心 v1.6 or later。

您可以使用 Amazon SageMaker Neo 深度学习编译器来优化许多框架中的本地机器学习推理模型的预测效率。然后可以下载优化的模型,安装 Amazon SageMaker Neo 深度学习运行时,并将其部署到 AWS IoT Greengrass 设备,以实现更快的推理。

本教程介绍如何使用 AWS 管理控制台将 Greengrass 组配置为运行一个 Lambda 推理示例,该示例可在本地识别摄像机中的图像,而无需将数据发送至云。该推理示例访问 Raspberry Pi 上的摄像机模块。在本教程中,您将下载由 Resnet-50 训练并在 Neo 深度学习编译器中优化的预先打包的模型。然后使用该模型在您的 AWS IoT Greengrass 设备上执行本地图像分类。

本教程包含以下概括步骤:

先决条件

要完成此教程,需要:

注意

本教程使用的是 Raspberry Pi,但 AWS IoT Greengrass 支持其他平台,如 Intel AtomNVIDIA Jetson TX2

步骤 1:配置 Raspberry Pi

在该步骤中,您将安装 Raspbian 操作系统的更新,安装摄像机模块软件和 Python 依赖项,以及启用摄像机接口。

在您的 Raspberry Pi 终端中运行以下命令。

  1. 安装 Raspbian 的更新。

    sudo apt-get update sudo apt-get dist-upgrade
  2. 安装适用于摄像机模块的 picamera 接口以及本教程所需的其他 Python 库。

    sudo apt-get install -y python-dev python-setuptools python-pip python-picamera
  3. 重启 Raspberry Pi。

    sudo reboot
  4. 打开 Raspberry Pi 配置工具。

    sudo raspi-config
  5. 使用箭头键打开接口选项并启用摄像机接口。如果出现提示,请允许设备重新启动。

  6. 使用以下命令测试摄像机设置。

    raspistill -v -o test.jpg

    这将在 Raspberry Pi 上打开一个预览窗口,将名为 test.jpg 的图片保存到您的当前目录,并在 Raspberry Pi 终端中显示有关摄像机的信息。

步骤 2:安装 Amazon SageMaker Neo 深度学习运行时

在这一步中,您将下载 Neo 深度学习运行时 并将其安装到 Raspberry Pi 上。

  1. AWS IoT Greengrass 机器学习运行时和预编译库 下载 页面上,找到适用于 Raspberry Pi 的深度学习运行时版本 1.0.0。选择 Download (下载)

  2. 将下载的 dlr-1.0-py2-armv7l.tar.gz 文件从您的计算机传输至 Raspberry Pi。您也可以使用以下 scp 命令,通过一个路径来保存您的文件,例如 /home/pi/

    scp dlr-1.0-py2-armv7l.tar.gz pi@your-device-ip-address:path-to-save-file
  3. 使用以下命令远程登录到您的 Raspberry Pi 并提取安装程序文件。

    ssh pi@your-device-ip-address ​cd path-to-save-file tar -xvzf dlr-1.0-py2-armv7l.tar.gz
  4. 安装 Neo 深度学习运行时。

    cd dlr-1.0-py2-armv7l/ chmod 755 install-dlr.sh sudo ./install-dlr.sh

    该程序包中包含一个 examples 目录,其中包含用于运行本教程的多个文件。该目录还包含 1.2.0 版 适用于 Python 的 AWS IoT Greengrass Core 开发工具包。您也可以从 AWS IoT Greengrass Core 开发工具包 下载 页面下载最新版本的开发工具包。

步骤 3:创建推理 Lambda 函数

在该步骤中,您将创建一个部署程序包以及配置为使用该部署程序包的 Lambda 函数。接着,发布函数版本并创建别名。

  1. 在您的计算机上,解压缩之前下载并复制到 Raspberry Pi 的 dlr-1.0-py2-armv7l.tar.gz 文件。

    cd path-to-downloaded-runtime tar -xvzf dlr-1.0-py2-armv7l.tar.gz
  2. 生成的 dlr-1.0-py2-armv7l 目录包含一个 examples 文件夹,其中的文件包括 inference.py,这是我们在本教程中用于推理的示例代码。您可以将此代码视为使用示例,从而创建自己的推理代码。

    examples 文件夹中的文件压缩成一个名为 optimizedImageClassification.zip 的文件。

    注意

    创建 .zip 文件时,请验证 .py 文件和依赖项位于该目录的根目录中。

    cd path-to-downloaded-runtime/dlr-1.0-py2-armv7l/examples zip -r optimizedImageClassification.zip .

    .zip 文件就是您的部署程序包。此软件包中包含函数代码和依赖项,包括调用 Neo 深度学习运行时 Python API 以执行 Neo 深度学习编译器模型推理的代码示例。您将在稍后上传此部署程序包。

  3. 现在,创建 Lambda 函数。

    在 AWS IoT Core 控制台的导航窗格中,选择 Greengrass,然后选择 Groups (组)

    
            AWS IoT Core 控制台中的导航窗格,突出显示了“Groups (组)”。
  4. 选择要在其中添加 Lambda 函数的 Greengrass 组。

  5. 在组配置页面上,选择 Lambda,然后选择 Add Lambda

    
            突出显示“Lambda”和“Add Lambda (添加 Lambda)”的组页面。
  6. Add a Lambda to your Greengrass Group (将 Lambda 添加到 Greengrass 组) 页面上,选择 Create new Lambda。此操作将打开 AWS Lambda 控制台。

    
            突出显示包含“Create new Lambda (新建 Lambda)”的“Add a Lambda to your Greengrass Group (将 Lambda 添加到 Greengrass 组)”页面。
  7. 选择 Author from scratch 并使用以下值创建您的函数:

    属性

    函数名称

    optimizedImageClassification

    运行语言

    Python 2.7

    AWS IoT Greengrass 不会使用此角色,因此您可以创建或选择任何 Lambda 执行角色。

    
            “Create function (创建函数)”页面的“Basic information (基本信息)”部分。
  8. 选择 Create function

 

现在,上传您的 Lambda 函数部署程序包并注册处理程序。

  1. optimizedImageClassification 函数的 Configuration (配置) 选项卡上,对于 Function code (函数代码),使用以下值:

    属性

    代码条目类型

    上传 .zip 文件

    运行语言

    Python 2.7

    处理程序

    inference.handler

  2. 选择 Upload

    
            突出显示“Upload (上传)”的“Function code (函数代码)”部分。
  3. 选择您的 optimizedImageClassification.zip 部署程序包。

  4. 选择 Save

 

接下来,发布您的 Lambda 函数的第一个版本。然后,创建版本的别名

注意

Greengrass 组可以按别名 (推荐) 或版本引用 Lambda 函数。通过使用别名,可以更轻松地管理代码更新,因为您在更新函数代码时无需更改订阅表或组定义。相反,您只是将别名指向新的函数版本。

  1. Actions 菜单上,选择 Publish new version

    
            “Actions (操作)”菜单中的“Publish new version (发布新版本)”选项。
  2. 对于 Version description (版本描述),输入 First version,然后选择 Publish

  3. optimizedImageClassification: 1 配置页面上,从 Actions (操作) 菜单中选择 Create alias (创建别名)

    
            “Actions (操作)”菜单中的“Create alia (创建别名)”选项。
  4. 创建新别名页面上,使用以下值:

    属性

    名称

    mlTestOpt

    版本

    1

    注意

    AWS IoT Greengrass 不支持 $LATEST 版本的 Lambda 别名。

  5. 选择 Create

    现在,将 Lambda 函数添加到 Greengrass 组。

步骤 4:将 Lambda 函数添加到 Greengrass 组

在该步骤中,您将 Lambda 函数添加到该组,然后配置其生命周期。

首先,将 Lambda 函数添加到 Greengrass 组。

  1. Add a Lambda to your Greengrass Group (将 Lambda 添加到 Greengrass 组) 页面上,选择 Use existing Lambda

    
            突出显示“Use existing Lambda (使用现有 Lambda)”的“Add a Lambda to your Greengrass Group (将 Lambda 添加到 Greengrass 组)”页面。
  2. 选择 optimizedImageClassification,然后选择 Next

  3. Select a Lambda version (选择 Lambda 版本) 页面上,选择 Alias:mlTestOpt,然后选择 Finish

 

接下来,配置 Lambda 函数的生命周期。

  1. Lambda 页面上,选择 optimizedImageClassification Lambda 函数。

    
            “Lambda”页面,突出显示了 optimizedImageClassification Lambda 函数。
  2. optimizedImageClassification 配置页面上,选择 Edit (编辑)

  3. 组特定的 Lambda 配置页面上,使用以下值:

    属性

    内存限制

    1024 MB

    超时

    10 秒

    Lambda 生命周期

    使该函数长时间生存,保持其无限期运行

    对 /sys 目录的只读访问权限

    启用

    有关更多信息,请参阅Greengrass Lambda 函数的生命周期配置

  4. 选择 Update

步骤 5:将 Amazon SageMaker Neo 优化的模型资源添加到 Greengrass 组中。

在这一步中,将为优化的 ML 推理模型创建一个资源并将其上传到 Amazon S3 存储桶。然后,在 AWS IoT Greengrass 控制台中找到 Amazon S3 上传的模型,并将新创建的资源与 Lambda 函数关联。这使该函数能够访问其在核心设备上的资源。

  1. 在计算机上,导航到之前解包的 Neo 深度学习运行时安装软件包。导航到 resnet50 目录。

    cd path-to-downloaded-runtime/dlr-1.0-py2-armv7l/models/resnet50

    该目录包含使用 Resnet-50 训练的图像分类模型的预编译模型项目。压缩 resnet50 目录内的文件以创建 resnet50.zip

    zip -r resnet50.zip .
  2. 在您的 AWS IoT Greengrass 组的组配置页面上,选择 Resources (资源)。导航到 Machine Learning (机器学习) 部分,然后选择 Add machine learning resource (添加机器学习资源)。在 Create a machine learning resource (创建机器学习资源) 页面上,对于 Resource name (资源名称),键入 resnet50_model

    
            包含更新后的属性的“Add Machine Learning Model”(添加机器学习模型) 页面。
  3. 对于模型源,选择 Upload a model in S3 (在 S3 中上传模型)

  4. Model from S3 (从 S3 获取模型) 下,选择 Select (选择)

    注意

    目前,Amazon SageMaker 模型在优化时自动存储在 Amazon S3 中。您可以使用此选项在 Amazon S3 存储桶中找到您的优化模型。有关 Amazon SageMaker 中的模型优化的更多信息,请参阅 Amazon SageMaker Neo 文档

  5. 选择上传模型。这会在 Amazon S3 控制台中打开一个新选项卡。

  6. 在 Amazon S3 控制台选项卡中,将 zip 文件上传到 Amazon S3 存储桶。有关信息,请参阅如何将文件和文件夹上传至 S3 存储桶?

    注意

    存储桶名称必须包含字符串 greengrass,以便该存储桶处于可访问状态。请选择唯一名称(如 greengrass-dlr-bucket-user-id-epoch-time)。不要在存储桶名称中使用句点 (.)。

  7. 在 AWS IoT Greengrass 控制台选项卡中,找到并选择 Amazon S3 存储桶。找到并上传 resnet50.zip 文件,然后选择 Select (选择)。您可能需要刷新页面以更新可用存储桶和文件的列表。

  8. Local path (本地路径) 中,输入 /ml_model

    
            更新的本地路径。

    这是 Lambda 运行时命名空间中的本地模型的目标。当您部署该组时,AWS IoT Greengrass 将检索源模型包,然后将内容提取到指定的目录。

    注意

    强烈建议使用为您的本地路径提供的准确路径。如果在该步骤中使用不同的本地模型目标路径,则会导致本教程中提供的一些问题排查命令不准确。如果使用不同的路径,则必须设置一个使用此处提供的准确路径的 MODEL_PATH 环境变量。有关环境变量的信息,请参阅 AWS Lambda 环境变量

  9. Lambda 函数从属关系下,选择选择

  10. 请依次选择 optimizedImageClassificationRead-only access (只读访问权限)Done (完成)

  11. 选择 Save

步骤 6:将摄像机设备资源添加到 Greengrass 组

在该步骤中,您将为摄像机模块创建一个资源,并将该资源与 Lambda 函数关联,从而使该资源在 AWS IoT Greengrass Core 上处于可访问状态。

  1. 在组配置页面上,选择资源

    
            突出显示包含“Resources (资源)”的组配置页面。
  2. 本地资源选项卡上,选择添加本地资源

  3. 创建本地资源页面上,使用以下值:

    属性

    资源名称

    videoCoreSharedMemory

    资源类型

    设备

    设备路径

    /dev/vcsm

    组所有者文件访问权限

    自动添加拥有资源的 Linux 组的操作系统组权限

    设备路径是设备资源的本地绝对路径。该路径只能引用 /dev 下的字符设备或块储存设备。

    Group owner file access permission (组所有者文件访问权限) 选项可让您授予对 Lambda 进程的额外的文件访问权限。有关更多信息,请参阅组所有者文件访问权限

    
            包含编辑后的资源属性的“Create a local resource (创建本地资源)”页面。
  4. Lambda 函数从属关系下,选择选择

  5. 请依次选择 optimizedImageClassificationRead and write access (读写访问权限)Done (完成)

    
            突出显示包含“Done (完成)”的 Lambda 函数从属关系属性。

    接下来,您将为摄像机接口添加本地设备资源。

  6. 在页面底部,选择添加其他资源

  7. 创建本地资源页面上,使用以下值:

    属性

    资源名称

    videoCoreInterface

    资源类型

    设备

    设备路径

    /dev/vchiq

    组所有者文件访问权限

    自动添加拥有资源的 Linux 组的操作系统组权限

    
            包含编辑后的资源属性的“Create a local resource (创建本地资源)”页面。
  8. Lambda 函数从属关系下,选择选择

  9. 请依次选择 optimizedImageClassificationRead and write access (读写访问权限)Done (完成)

  10. 选择 Save

步骤 7:将订阅添加到 Greengrass 组

在该步骤中,将订阅添加到组。这些订阅使 Lambda 函数能够将预测结果发布到 MQTT 主题,从而将这些结果发送到 AWS IoT。

  1. 在组配置页面上,选择 Subscriptions (订阅),然后选择 Add Subscription

    
            突出显示“Subscriptions (订阅)”和“Add Subscription (添加订阅)”的组页面。
  2. 选择您的源和目标页面,配置源和目标,如下所示:

    1. Select a source (选择源) 中,选择 Lambda,然后选择 optimizedImageClassification

    2. 选择目标中,选择服务,然后选择 IoT Cloud

    3. 选择 Next

      
                突出显示“Next (下一步)”的“Select your source and target (选择您的源和目标)”页面。
  3. Filter your data with a topic (利用主题筛选您的数据) 页面的 Optional topic filter (可选主题筛选条件) 中键入 /resnet-50/predictions,然后选择 Next

    
            突出显示包含“Next (下一步)”的“Filter your data with a topic (利用主题筛选您的数据)”页面。
  4. 选择 Finish

  5. 添加另一个订阅。在选择您的源和目标页面,配置源和目标,如下所示:

    1. 选择源中,选择服务,然后选择 IoT Cloud

    2. Select a target (选择目标) 中,选择 Lambda,然后选择 optimizedImageClassification

    3. 选择 Next

  6. Filter your data with a topic (利用主题筛选您的数据) 页面的 Optional topic filter (可选主题筛选条件) 中键入 /resnet-50/test,然后选择 Next

  7. 选择 Finish

步骤 8:部署 Greengrass 组

在该步骤中,您将最新版本的组定义部署到 Greengrass 核心设备。该定义包含您添加的 Lambda 函数、资源和订阅配置。

  1. 确保 AWS IoT Greengrass Core正在运行。根据需要在您的 Raspberry Pi 终端中运行以下命令。

    1. 要检查守护程序是否正在运行,请执行以下操作:

      ps aux | grep -E 'greengrass.*daemon'

      如果输出包含 root/greengrass/ggc/packages/latest-core-version/bin/daemon 条目,则表示守护程序正在运行。

    2. 要启动守护程序,请执行以下操作:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. 在组配置页面上,选择部署,然后从操作菜单中,选择部署

    
            突出显示“Deployments (部署)”和“Deploy (部署)”的组页面。
  3. Configure how devices discover your core (配置设备搜索您的核心的方式) 页面上,选择 Automatic detection

    这使得设备可以自动获取核心的连接信息,例如 IP 地址、DNS 和端口号。建议使用自动检测,不过 AWS IoT Greengrass 也支持手动指定的终端节点。只有在首次部署组时,系统才会提示您选择搜索方法。

    
            突出显示“Automatic detection (自动检测)”的“Configure how devices discover your core (配置设备搜索您的核心的方式)”页面。

    注意

    在系统提示时,授予权限以创建Greengrass 服务角色,并将该角色与您在当前 AWS 区域中的 AWS 账户关联。该角色允许 AWS IoT Greengrass 访问您 AWS 服务中的资源。每个 AWS 账户只需要一个 Greengrass 服务角色,但相应角色必须与您在其中使用 AWS IoT Greengrass 的每个 AWS 区域中的 AWS 账户关联。

    Deployments (部署) 页面显示了部署时间戳、版本 ID 和状态。完成后,部署的状态应显示为 Successfully completed (成功完成)

    
            突出显示成功部署状态的“Deployments”(部署) 页面。

    有关问题排查帮助,请参阅AWS IoT Greengrass 问题排查

测试推理示例

现在,您可以验证是否正确配置了部署。要进行测试,您需要订阅 /resnet-50/predictions 主题,并向 /resnet-50/test 主题发布任何消息。这会触发 Lambda 函数使用您的 Raspberry Pi 拍照,并对捕获的图像执行推理。

注意

如果将一个监视器连接到 Raspberry Pi,活动摄像机源将显示在预览窗口中。

  1. 在 AWS IoT Core 控制台主页上,选择 Test (测试)

    
            AWS IoT Core 控制台中的导航窗格,突出显示了“Test (测试)”。
  2. 对于 Subscriptions (订阅),选择 Subscribe to a Topic。使用以下值。将剩余选项保留为默认值:

    属性

    订阅主题

    /resnet-50/predictions

    MQTT 负载显示

    将负载显示为字符串

  3. 选择 Subscribe to topic

  4. /resnet-50/predictions 页面上,指定要发布到的 /resnet-50/test 主题。选择 Publish to topic

  5. 如果测试成功,发布的消息会触发 Raspberry Pi 摄像机捕获图像。来自 Lambda 函数的消息将显示在页面底部。该消息包含图像的预测结果,采用的格式为:预测的类名称、可能性和峰值内存使用率。

    
            显示了包含消息数据的测试结果的“Subscriptions (订阅)”页面。

配置 Intel Atom

要在 Intel Atom 设备上运行此教程,您需要提供源图像并配置 Lambda 函数。要使用此 GPU 进行推理,您必须在设备上安装 OpenCL 版本 1.0 或更高版本。您还必须添加本地设备资源。

  1. 下载 Lambda 函数的静态 PNG 或 JPG 图像以用于图像分类。该示例最适合小型图像文件。

    将图像文件保存在包含 inference.py 文件的目录中(或保存在此目录的子目录中)。此目录位于您在步骤 3:创建推理 Lambda 函数中上传的 Lambda 函数部署程序包中。

    注意

    如果使用 Amazon DeepLens,您可以选择使用板载摄像头或安装自己的摄像头来捕获图像并对它们运行推理。但是,我们强烈建议您先用静态图像尝试示例。

  2. 编辑 Lambda 函数的配置。按照步骤 4:将 Lambda 函数添加到 Greengrass 组中过程操作。

    1. 内存限制值提高到 3000 MB。

    2. 超时值增加到 2 分钟。这将确保请求不会过早超时。在 Intel Atom 上完成设置后首次运行的推理需要一些时间。

    3. 对于对 /sys 目录的只读访问权限选项,选择 Enable

    4. 对于Lambda 生命周期,选择 Make this function long-lived and keep it running indefinitely

  3. 添加以下本地设备资源。

    1. 在导航窗格中,选择资源Add a local resource

      
                “添加本地资源”页面。
    2. 对于资源:

      • 对于资源类型,选择设备

      • 对于组所有者文件访问权限,选择自动添加拥有资源的 Linux 组的操作系统组权限

      • 对于 Lambda function affiliations (Lambda 函数从属关系),为您的 Lambda 函数授予 Read and write access (读写访问权限)

         

        名称

        设备路径

        renderD128

        /dev/dri/renderD128

配置 NVIDIA Jetson TX2

要在 NVIDIA Jetson TX2 上运行此教程,您需要提供源图像并配置 Lambda 函数。要使用 GPU 进行推理,在使用 Jetpack 3.3 获取板卡图像时,您必须在设备上安装 CUDA 9.0 和 cuDNN 7.0。您还必须添加本地设备资源。

要了解如何配置 Jetson 以便可以安装 AWS IoT Greengrass 核心软件,请参阅设置其他设备

  1. 下载 Lambda 函数的静态 PNG 或 JPG 图像以用于图像分类。该示例最适合小型图像文件。

    将图像文件保存在包含 inference.py 文件的目录中(或保存在此目录的子目录中)。此目录位于您在步骤 3:创建推理 Lambda 函数中上传的 Lambda 函数部署程序包中。

    注意

    或者,您也可以在 Jetson 板上安装摄像头来捕获源图像。但是,我们强烈建议您先用静态图像尝试示例。

  2. 编辑 Lambda 函数的配置。按照步骤 4:将 Lambda 函数添加到 Greengrass 组中过程操作。

    1. 提高内存限制值。要在 GPU 模式下使用提供的模型,请使用 2048 MB。

    2. 超时值增加到 5 分钟。这将确保请求不会过早超时。在 Jetson 上完成设置后首次运行的推理需要一些时间。

    3. 对于Lambda 生命周期,选择 Make this function long-lived and keep it running indefinitely

    4. 对于对 /sys 目录的只读访问权限,选择 Enable

  3. 添加以下本地设备资源。

    1. 在导航窗格中,选择资源Add a local resource

      
                “添加本地资源”页面。
    2. 对于每个资源:

      • 对于资源类型,选择设备

      • 对于组所有者文件访问权限,选择自动添加拥有资源的 Linux 组的操作系统组权限

      • 对于 Lambda function affiliations (Lambda 函数从属关系),为您的 Lambda 函数授予 Read and write access (读写访问权限)

         

        名称

        设备路径

        nvhost-ctrl

        /dev/nvhost-ctrl

        nvhost-gpu

        /dev/nvhost-gpu

        nvhost-ctrl-gpu

        /dev/nvhost-ctrl-gpu

        nvhost-dbg-gpu

        /dev/nvhost-dbg-gpu

        nvhost-prof-gpu

        /dev/nvhost-prof-gpu

        nvmap

        /dev/nvmap

注意

完成设置后首次运行的推理可能需要一些时间。

AWS IoT Greengrass ML 推理问题排查

如果测试失败,您可以尝试以下问题排查步骤。在您的 Raspberry Pi 终端中运行以下命令。

检查错误日志

  1. 切换到根用户。

    sudo su
  2. 导航到 /log 目录。

    cd /greengrass/ggc/var/log
  3. 检查 runtime.log 是否存在任何错误。

    cat system/runtime.log | grep 'ERROR'

    您也可以在用户 lambda 日志中查看是否有任何错误:

    cat user/your-region/your-account-id/lambda-function-name.log | grep 'ERROR'

    有关更多信息,请参阅 使用日志记录进行问题排查

 

验证 Lambda 函数是否已成功部署

  1. 列出 /lambda 目录中已部署的 Lambda 的内容。在运行命令前替换占位符值。

    cd /greengrass/ggc/deployment/lambda/arn:aws-cn:lambda:region:account:function:function-name:function-version ls -la
  2. 验证该目录是否包含与您在 步骤 3:创建推理 Lambda 函数 中上传的 optimizedImageClassification.zip 部署软件包相同的内容。

    确保 .py 文件和依赖项位于该目录的根目录中。

 

验证推理模型是否已成功部署

  1. 查找 Lambda 运行时进程的进程标识号 (PID):

    ps aux | grep lambda-function-name

    在输出中,PID 显示在 Lambda 运行时进程的行的第二列中。

  2. 输入 Lambda 运行时命名空间。请确保在运行命令前替换占位符 pid 值。

    注意

    此目录及其内容位于 Lambda 运行时命名空间中,因此它们不会显示在常规 Linux 命名空间中。

    sudo nsenter -t pid -m /bin/bash
  3. 列出您为 ML 资源指定的本地目录的内容。

    注意

    如果您的 ML 资源路径不是 ml_model,则必须在此处替换。

    cd /ml_model ls -ls

    您应该看到以下文件:

    56 -rw-r--r-- 1 ggc_user ggc_group 56703 Oct 29 20:07 model.json 196152 -rw-r--r-- 1 ggc_user ggc_group 200855043 Oct 29 20:08 model.params 256 -rw-r--r-- 1 ggc_user ggc_group 261848 Oct 29 20:07 model.so 32 -rw-r--r-- 1 ggc_user ggc_group 30564 Oct 29 20:08 synset.txt

Lambda 函数无法找到 /dev/dri/renderD128

如果 OpenCL 无法连接到需要的 GPU 设备,则可能会发生这种情况。您必须为 lambda 函数创建必要设备的设备资源。

后续步骤

接下来,探索其他优化模型。有关信息,请参阅 Amazon SageMaker Neo 文档