在边缘运行你的水果检测器


文档摘要

在边缘运行你的水果检测器 本课概述的草图笔记 草图笔记由Nitya Narasimhan绘制。点击图片查看大图。 这段视频介绍了如何在物联网设备上运行图像分类器,这是本课涵盖的主题。 Azure IoT Edge上的自定义视觉AI 预习测验 预习测验 引言 在上一课中,你使用图像分类器对成熟和未成熟的水果进行分类,将通过物联网设备上的摄像头捕获的图像发送到云端的服务。这些调用需要时间、花费金钱,并且根据你使用的图像数据类型,可能还会有隐私问题。 在本课中,你将学习如何在边缘——即运行在你自己网络上的物联网设备上运行机器学习(ML)模型。你将了解边缘计算与云计算的优缺点,如何将你的AI模型部署到边缘,并如何从物联网设备访问它。

在边缘运行你的水果检测器

本课概述的草图笔记

草图笔记由Nitya Narasimhan绘制。点击图片查看大图。

这段视频介绍了如何在物联网设备上运行图像分类器,这是本课涵盖的主题。

预习测验

预习测验

引言

在上一课中,你使用图像分类器对成熟和未成熟的水果进行分类,将通过物联网设备上的摄像头捕获的图像发送到云端的服务。这些调用需要时间、花费金钱,并且根据你使用的图像数据类型,可能还会有隐私问题。

在本课中,你将学习如何在边缘——即运行在你自己网络上的物联网设备上运行机器学习(ML)模型。你将了解边缘计算与云计算的优缺点,如何将你的AI模型部署到边缘,并如何从物联网设备访问它。

本课我们将涵盖以下内容:

边缘计算

边缘计算涉及让计算机尽可能靠近生成数据的地方处理物联网数据。与其在云中处理,不如将其移到云的边缘——你的内部网络。

显示互联网服务在云中和本地网络上的物联网设备的架构图

到目前为止的课程中,你有设备收集数据并将数据发送到云端进行分析,运行无服务器函数或在云中运行AI模型。

显示物联网设备连接到边缘设备,这些边缘设备又连接到云的架构图

边缘计算涉及将一些云服务从云移至同一网络上的计算机,仅在必要时与云通信。例如,你可以在边缘设备上运行AI模型来分析水果的成熟度,并只将分析结果发回云端,比如成熟的水果数量与未成熟的水果数量。

✅ 想想你已经构建的物联网应用。哪些部分可以移到边缘?

优点

边缘计算的优点包括:

  1. 速度 - 边缘计算对于实时数据处理非常理想,因为动作是在同一网络上完成的,而不是通过互联网进行调用。这使得速度更快,因为内部网络可以以比互联网连接快得多的速度运行,数据传输的距离也短得多。

    尽管互联网连接使用光纤允许数据以光速传播,但数据仍需花费时间传遍全球到达云服务提供商。例如,如果你从欧洲向美国的云服务发送数据,数据至少需要28毫秒才能通过海底电缆跨越大西洋,在光缆中传播,并忽略将数据传送到跨大西洋电缆、转换为光信号以及在另一端再转换回电信号所需的时间,然后从光缆传送到云服务提供商。

    边缘计算还需要较少的网络流量,从而降低了由于有限的互联网带宽而造成的数据拥堵风险。

  2. 远程可访问性 - 当你拥有有限或没有连接,或者连接成本过高无法持续使用时,边缘计算仍然有效。例如,在人道主义灾难地区工作时基础设施有限,或者在发展中国家。

  3. 降低成本 - 在边缘设备上进行数据采集、存储、分析和触发操作,减少了对云服务的使用,从而降低了整体物联网应用的成本。最近出现了一些专为边缘计算设计的设备,如NVIDIA Jetson Nano AI加速板,可以在成本低于100美元的设备上使用基于GPU的硬件运行AI负载。

  4. 隐私和安全 - 使用边缘计算时,数据保留在你的网络上,不会上传到云端。这对于敏感和个人身份信息通常是首选,特别是因为数据分析后不需要存储,大大降低了数据泄露的风险。例如医疗数据和监控摄像头录像。

  5. 处理不安全的设备 - 如果你有已知安全漏洞的设备,不想直接连接到你的网络或互联网,那么你可以将它们连接到一个单独的网络到网关物联网边缘设备。这个边缘设备还可以连接到更大的网络或互联网,并管理数据的双向流动。

  6. 支持不兼容的设备 - 如果你有不能直接连接到IoT Hub的设备,例如只能通过HTTP连接的设备或只有蓝牙连接的设备,你可以使用物联网边缘设备作为网关设备,转发消息到IoT Hub。

✅ 做些研究:边缘计算还有哪些其他优点?

缺点

边缘计算也有一些缺点,其中云可能是更好的选择:

  1. 规模和灵活性 - 云计算可以根据网络和数据需求实时调整服务器和其他资源的数量。增加更多边缘计算机则需要手动添加设备。

  2. 可靠性和弹性 - 云计算提供多个服务器,通常分布在多个位置,以实现冗余和灾难恢复。要在边缘达到相同的冗余水平需要大量的投资和大量的配置工作。

  3. 维护 - 云服务提供商提供系统维护和更新。

✅ 做些研究:边缘计算还可能存在哪些其他缺点?

缺点实际上是使用云的优缺点的反面——你需要自己建立和管理这些设备,而不是依赖云提供商的专业知识和规模。

一些风险实际上可以通过边缘计算的性质来缓解。例如,如果你在一个工厂里有一个边缘设备收集机器数据,你就不必考虑一些灾难恢复场景。如果工厂断电,那么生成边缘设备处理数据的机器也将失去电力。

对于物联网系统,你通常会希望结合使用云和边缘计算,根据系统的需要、客户的需求和维护者的需要利用每种服务。

Azure IoT Edge

Azure IoT Edge标志

Azure IoT Edge是一个可以帮助你将工作负载从云端迁移到边缘的服务。你可以设置设备为边缘设备,并从云端部署代码到该边缘设备。这允许你混合使用云端和边缘的能力。

工作负载是指执行某些工作的任何服务,如AI模型、应用程序或无服务器函数。

例如,你可以在云端训练一个图像分类器,然后从云端将其部署到边缘设备。然后,你的物联网设备将图像发送到边缘设备进行分类,而不是通过互联网发送图像。如果你需要部署模型的新迭代版本,可以在云端训练它,然后使用IoT Edge更新边缘设备上的模型。

部署到IoT Edge的软件被称为模块。默认情况下,IoT Edge运行与IoT Hub通信的模块,如edgeAgentedgeHub模块。当你部署图像分类器时,这会被部署为一个额外的模块。

IoT Edge内置在IoT Hub中,因此你可以使用与管理物联网设备相同的工具和服务来管理边缘设备,并具有相同级别的安全性。

IoT Edge运行来自容器的代码——一种隔离的应用程序,与其他应用程序在你的计算机上独立运行。当你运行一个容器时,它就像一台在你的计算机内部运行的单独计算机,有自己的软件、服务和应用程序。大多数时候,容器除非选择共享,否则无法访问你的计算机上的任何东西,比如文件夹。容器通过开放的端口暴露服务,你可以连接到这些端口或将它们暴露给网络。

重定向到容器的网页请求

例如,你可以在端口80上运行一个带有网站的容器,这是默认的HTTP端口,然后也可以从你的计算机上通过端口80暴露它。

✅ 做些研究:阅读有关容器和服务(如Docker或Moby)的信息。

你可以使用Custom Vision下载图像分类器并将其部署为容器,无论是直接部署到设备还是通过IoT Edge部署。一旦它们在容器中运行,就可以使用与云端版本相同的REST API访问它们,但端点指向运行容器的边缘设备。

注册物联网边缘设备

要使用物联网边缘设备,需要在IoT Hub中注册它。

任务 - 注册物联网边缘设备

  1. fruit-quality-detector资源组中创建一个IoT Hub。根据fruit-quality-detector起一个唯一的名称。

  2. 在你的IoT Hub中注册一个名为fruit-quality-detector-edge的物联网边缘设备。执行此操作的命令类似于注册非边缘设备的命令,只是需要传递--edge-enabled标志。

    az iot hub device-identity create --edge-enabled \ --device-id fruit-quality-detector-edge \ --hub-name <hub_name>

    <hub_name>替换为你IoT Hub的名称。

  3. 使用以下命令获取设备的连接字符串:

    az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \ --output table \ --hub-name <hub_name>

    <hub_name>替换为你IoT Hub的名称。

    复制输出中显示的连接字符串。

设置物联网边缘设备

一旦你在IoT Hub中创建了边缘设备注册,就可以设置边缘设备。

任务 - 安装并启动IoT Edge运行时

IoT Edge运行时仅支持Linux容器。 可以在Linux上运行,或在Windows上使用Linux虚拟机运行。

导出模型

要在边缘运行分类器,需要从Custom Vision导出模型。Custom Vision可以生成两种类型的模型——标准模型和紧凑模型。紧凑模型使用各种技术减小模型大小,使其足够小,可以下载并部署到物联网设备上。

当你创建图像分类器时,使用了食品域,这是一种针对食物图像优化的模型版本。在Custom Vision中,你可以更改项目的域,使用训练数据训练新的模型。Custom Vision支持的所有域都可以作为标准和紧凑模型获得。

任务 - 使用食品(紧凑)域训练模型

  1. CustomVision.ai启动Custom Vision门户并登录(如果尚未打开)。然后打开你的fruit-quality-detector项目。

  2. 选择设置按钮(⚙图标)

  3. 列表中,选择食品(紧凑)

  4. 导出能力下,确保选择了基本平台(Tensorflow、CoreML、ONNX等)

  5. 在设置页面底部,选择保存更改

  6. 使用训练按钮重新训练模型,选择快速训练

任务 - 导出模型

一旦模型被训练,需要将其导出为容器。

  1. 选择性能标签,找到使用紧凑域训练的最新迭代。

  2. 选择顶部的导出按钮。

  3. 选择DockerFile,然后选择与你的边缘设备匹配的版本:

    • 如果你在Linux计算机、Windows计算机或虚拟机上运行IoT Edge,请选择Linux版本。
    • 如果你在Raspberry Pi上运行IoT Edge,请选择*ARM(Raspberry Pi 3)*版本。

    Docker是最流行的容器管理工具之一,DockerFile是一组指令,用于设置容器。

  4. 选择导出以让Custom Vision创建相关文件,然后下载以下载zip文件。

  5. 将文件保存到你的计算机,然后解压缩文件夹。

准备容器以供部署

容器构建完成后推送到容器注册表,然后从容器注册表通过IoT Edge部署到边缘设备

一旦你下载了模型,需要将其构建为容器,然后推送到容器注册表——一个在线位置,你可以在此存储容器。IoT Edge可以从注册表下载容器并推送到你的设备。

Azure容器注册表标志

本课将使用的容器注册表是Azure容器注册表。这不是免费服务,为了省钱,请确保在完成项目后清理你的项目

你可以在Azure容器注册表定价页面中查看使用Azure容器注册表的成本。

任务 - 安装Docker

为了构建和部署分类器,你可能需要安装Docker

只有在计划从不同设备构建容器,而不是在安装IoT Edge的设备上构建容器时,才需要这样做——安装IoT Edge时,Docker会为你安装。

  1. 如果在不同的设备上构建docker容器,而非IoT Edge设备,请按照Docker安装页面上的Docker安装说明安装Docker桌面或Docker引擎。安装后确保其正在运行。

任务 - 创建容器注册表资源

  1. 从终端或命令提示符运行以下命令以创建Azure容器注册表资源:

    az acr create --resource-group fruit-quality-detector \ --sku Basic \ --name <Container registry name>

    <Container registry name> with a unique name for your container registry, using letters and numbers only. Base this around fruitqualitydetector。这个名字成为访问容器注册表的URL的一部分,所以需要全局唯一。

  2. 使用以下命令登录到Azure容器注册表:

    az acr login --name <Container registry name>

    <Container registry name>替换为你容器注册表的名称。

  3. 将容器注册表设置为管理员模式,以便生成密码,使用以下命令:

    az acr update --admin-enabled true \ --name <Container registry name>

    <Container registry name>替换为你容器注册表的名称。

  4. 使用以下命令生成容器注册表的密码:

    az acr credential renew --password-name password \ --output table \ --name <Container registry name>

    <Container registry name> with the name you used for your container registry.

    Take a copy of the value of PASSWORD,因为你稍后需要这个密码。

任务 - 构建容器

从Custom Vision下载的内容是一个包含构建容器指令的DockerFile,以及将在容器内运行的应用程序代码,包括一个调用自定义视觉模型及其REST API的API。你可以使用Docker从DockerFile构建并标记一个容器,然后将其推送到你的容器注册表。

容器被赋予一个标签,定义了名称和版本。当你需要更新容器时,可以使用相同的标签但更新版本来构建它。

  1. 打开你的终端或命令提示符并导航到从Custom Vision下载并解压缩的模型。

  2. 运行以下命令以构建并标记镜像:

    docker build --platform <platform> -t <Container registry name>.azurecr.io/classifier:v1 .

    <platform> with the platform that this container will run on. If you are running IoT Edge on a Raspberry Pi, set this to linux/armhf, otherwise set this to linux/amd64.

    If you are running this command from the device you are running IoT Edge from, such as running this from your Raspberry Pi, you can omit the --platform <platform> part as it defaults to the current platform.

    Replace <Container registry name> with the name you used for your container registry.

    If you are running on Linux or Raspberry Pi OS you nay need to use sudo to run this command.

    Docker will build the image, configuring all the software needed. The image will then be tagged as classifier:v1

    ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker build --platform linux/amd64 -t fruitqualitydetectorjimb.azurecr.io/classifier:v1 . [+] Building 102.4s (11/11) FINISHED => [internal] load build definition from Dockerfile => => transferring dockerfile: 131B => [internal] load .dockerignore => => transferring context: 2B => [internal] load metadata for docker.io/library/python:3.7-slim => [internal] load build context => => transferring context: 905B => [1/6] FROM docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 => => resolve docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 => => sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda 27.15MB / 27.15MB => => sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 2.77MB / 2.77MB => => sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 10.06MB / 10.06MB => => sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 1.86kB / 1.86kB => => sha256:44073386687709c437586676b572ff45128ff1f1570153c2f727140d4a9accad 1.37kB / 1.37kB => => sha256:3d94f0f2ca798607808b771a7766f47ae62a26f820e871dd488baeccc69838d1 8.31kB / 8.31kB => => sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 233B / 233B => => sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f 2.64MB / 2.64MB => => extracting sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda => => extracting sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 => => extracting sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 => => extracting sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 => => extracting sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f => [2/6] RUN pip install -U pip => [3/6] RUN pip install --no-cache-dir numpy~=1.17.5 tensorflow~=2.0.2 flask~=1.1.2 pillow~=7.2.0 => [4/6] RUN pip install --no-cache-dir mscviplib==2.200731.16 => [5/6] COPY app /app => [6/6] WORKDIR /app => exporting to image => => exporting layers => => writing image sha256:1846b6f134431f78507ba7c079358ed66d944c0e185ab53428276bd822400386 => => naming to fruitqualitydetectorjimb.azurecr.io/classifier:v1

任务 - 将容器推送到容器注册表

  1. 使用以下命令将容器推送到你的容器注册表:

    docker push <Container registry name>.azurecr.io/classifier:v1

    <Container registry name> with the name you used for your container registry.

    If you are running Linux you nay need to use sudo以运行此命令。

    容器将被推送到容器注册表。

    ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker push fruitqualitydetectorjimb.azurecr.io/classifier:v1 The push refers to repository [fruitqualitydetectorjimb.azurecr.io/classifier] 5f70bf18a086: Pushed 8a1ba9294a22: Pushed 56cf27184a76: Pushed b32154f3f5dd: Pushed 36103e9a3104: Pushed e2abb3cacca0: Pushed 4213fd357bbe: Pushed 7ea163ba4dce: Pushed 537313a13d90: Pushed 764055ebc9a7: Pushed v1: digest: sha256:ea7894652e610de83a5a9e429618e763b8904284253f4fa0c9f65f0df3a5ded8 size: 2423
  2. 要验证推送,请使用以下命令列出注册表中的容器:

    az acr repository list --output table \ --name <Container registry name>

    <Container registry name>替换为你容器注册表的名称。

    ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux az acr repository list --name fruitqualitydetectorjimb --output table Result ---------- classifier

    你将在输出中看到你的分类器。

部署容器

现在可以将容器部署到你的物联网边缘设备上了。部署需要定义一个部署清单——一个JSON文档,列出了将部署到边缘设备的模块。

任务 - 创建部署清单

  1. 在你的计算机上创建一个名为deployment.json的新文件。

  2. 向此文件添加以下内容:

    { "content": { "modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "ClassifierRegistry": { "username": "<Container registry name>", "password": "<Container registry password>", "address": "<Container registry name>.azurecr.io" } } } }, "systemModules": { "edgeAgent": { "type": "docker", "settings": { "image": "mcr.microsoft.com/azureiotedge-agent:1.1", "createOptions": "{}" } }, "edgeHub": { "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" } } }, "modules": { "ImageClassifier": { "version": "1.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "<Container registry name>.azurecr.io/classifier:v1", "createOptions": "{\"ExposedPorts\": {\"80/tcp\": {}},\"HostConfig\": {\"PortBindings\": {\"80/tcp\": [{\"HostPort\": \"80\"}]}}}" } } } } }, "$edgeHub": { "properties.desired": { "schemaVersion": "1.1", "routes": { "upstream": "FROM /messages/* INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } } } } }

    你可以在code-deployment/deployment文件夹中找到此文件。

    替换<Container registry name> with the name you used for your container registry. One is in the ImageClassifier module section, the other two are in the registryCredentials section.

    Replace <Container registry password> in the registryCredentials部分中的三个实例为你的容器注册表密码。

  3. 从包含部署清单的文件夹中,运行以下命令:

    az iot edge set-modules --device-id fruit-quality-detector-edge \ --content deployment.json \ --hub-name <hub_name>

    <hub_name> with the name of your IoT Hub.

    The image classifier module will be deployed to your edge device.

Task - verify the classifier is running

  1. Connect to the IoT edge device:

    • If you are using a Raspberry Pi to run IoT Edge, connect using ssh either from your terminal, or via a remote SSH session in VS Code

    • If you are running IoT Edge in a Linux container on Windows, follow the steps in the verify successful configuration guide to connect to the IoT Edge device.

    • If you are running IoT Edge on a virtual machine, you can SSH into the machine using the adminUsername and password替换为你创建VM时设置的用户名和密码,使用IP地址或DNS名称:

      ssh <adminUsername>@<IP address>

      或者:

      ssh <adminUsername>@<DNS Name>

      输入密码时会提示你输入。

  2. 连接成功后,运行以下命令以获取正在运行的物联网边缘模块列表:

    iotedge list

    你可能需要以sudo运行此命令。

    你将看到正在运行的模块:

    jim@fruit-quality-detector-jimb:~$ iotedge list NAME STATUS DESCRIPTION CONFIG ImageClassifier running Up 42 minutes fruitqualitydetectorjimb.azurecr.io/classifier:v1 edgeAgent running Up 42 minutes mcr.microsoft.com/azureiotedge-agent:1.1 edgeHub running Up 42 minutes mcr.microsoft.com/azureiotedge-hub:1.1
  3. 使用以下命令检查Image Classifier模块的日志:

    iotedge logs ImageClassifier

    你可能需要以sudo运行此命令。

    jim@fruit-quality-detector-jimb:~$ iotedge logs ImageClassifier 2021-07-05 20:30:15.387144: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 2021-07-05 20:30:15.392185: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2394450000 Hz 2021-07-05 20:30:15.392712: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55ed9ac83470 executing computations on platform Host. Devices: 2021-07-05 20:30:15.392806: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): Host, Default Version Loading model...Success! Loading labels...2 found. Success! * Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)

任务 - 测试图像分类器

  1. 您可以通过运行以下curl命令来使用本地文件测试容器:

    curl --location \ --request POST 'http://<IP address or name>/image' \ --header 'Content-Type: image/png' \ --data-binary '@<file_Name>'

    <IP地址或名称> with the IP address or host name of the computer running IoT Edge. Replace <file_Name>替换为要测试的文件名。

    您将在输出中看到预测结果:

    { "created": "2021-07-05T21:44:39.573181", "id": "", "iteration": "", "predictions": [ { "boundingBox": null, "probability": 0.9995615482330322, "tagId": "", "tagName": "ripe" }, { "boundingBox": null, "probability": 0.0004384400090202689, "tagId": "", "tagName": "unripe" } ], "project": "" }

    在这种情况下不需要提供预测密钥,因为这不是使用Azure资源。相反,安全配置将基于内部网络的安全需求进行设置,而不是依赖于公共端点和API密钥。

使用您的IoT Edge设备

现在您的图像分类器已部署到IoT Edge设备,您可以从IoT设备使用它。

任务 - 使用您的IoT Edge设备

请按照相关指南使用IoT Edge分类器对图像进行分类:

模型再训练

在IoT Edge上运行图像分类器的一个缺点是它们无法连接到您的自定义视觉项目。如果您查看自定义视觉中的“预测”标签,您将看不到使用边缘分类器进行分类的图像。

这是预期行为——图像不会发送到云端进行分类,因此它们不会出现在云端。使用IoT Edge的好处之一是隐私,确保图像不会离开您的网络,另一个好处是能够离线工作,因此无需在设备没有互联网连接时上传图像。缺点是改进模型——您需要实施另一种方式来存储可以手动重新分类以改进和重新训练图像分类器的图像。

✅ 思考如何上传图像以重新训练分类器。

挑战

在边缘设备上运行AI模型可能比在云端更快,因为网络跳转更短。但它们也可能更慢,因为运行模型的硬件可能不如云端强大。

进行一些时间测量并比较调用边缘设备与调用云端的响应速度。思考解释差异(或缺乏差异)的原因。研究如何使用专用硬件在边缘更快地运行AI模型。

课后测验

课后测验

复习与自学

作业

在边缘运行其他服务

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


作者与出处
原作者: microsoft
来源:microsoft
许可证:MIT
整理: 灏天文库整理
由灏天文库结构化整理,提供目录导航、全文检索与在线阅读,便于系统化学习
发布者: 作者: microsoft 转发
评论区 (0)
U