说到机器学习,在计算方面,大多数边缘应用程序只执行推理,然而,随着 联邦学习(Federated Learning)等新兴技术的出现,这种情况在未来可能会发生变化。
但就目前而言,在小型微控制器和其他边缘设备上运行机器学习模型已经成为可能,这将带来各种各样有趣的应用。
边缘设备的定义在不同的应用中会有很大的差异,它包括从智能手机到自动驾驶汽车,以及介于两者之间的各种设备。目前,数量最多的边缘设备(也可以连接到网络),很有可能就是智能手机。越来越多的其他设备配备了小型 MCU(microcontroller,微控制器),它们不连接任何网络,用于家庭花园的智能喷水灭火系统等应用。
各种边缘设备
具体来说,全球智能手机的总数量已达数十亿部。连接的智能设备数量在不断增加,从智能恒温器到门铃,再到送货机器人。这些设备大多靠电池运行(也有像智能助理这样的例外),并连接到 wifi、蓝牙和/或移动网络。
在这些设备上进行机器学习时,通常会将设备传感器的数据发送回云端进行推理,该过程具有以下特点:
消耗更多的能量(通过有线或无线网络移动数据会消耗能量)。
导致应用程序受到较高延迟的影响。
由于数据传输和云计算的成本,导致费用更高。
需要额外的工作来处理数据隐私和安全问题。
这些高层次的优势使得机器学习模型嵌入到设备上变得至关重要,不过,这也带来了更多的数据隐私和安全问题。
说到机器学习,在计算方面,大多数边缘应用程序只执行推理,然而,随着连邦学习(Federated Learning)等新兴技术的出现,这种情况在未来可能会发生变化。
但就目前而言,在小型微控制器和其他边缘设备上运行机器学习模型已经成为可能,这将带来各种各样有趣的应用。请继续阅读本文,了解如何开始为边缘设备开发机器学习应用程序。
边缘架构
由于边缘产品的类型不同,它们的架构也不尽相同。目前使用的不同架构可以分为 5~6 类,如下图所示:
边缘应用架构
基于 ARM Cortex-A 架构的处理器赋能了今天几乎所有的智能手机,而基于 Cortex-M 的微控制器则用于键盘、智能手表、安全摄像头以及我们周围的大量其他产品。
基于 x86 的笔记本计算机、上网本等也有数以百万计的人使用,它们还用于 ATM 和各种其他产品。一些智能手机还搭载了高通(Qualcomm)和华为等公司开发的定制机器学习加速器。
在功耗方面,不同的产品可以分为三类,从超低功耗的 Cortex-M 系列微控制器,到 NVIDIA、Mobileye 和德州仪器(Texas Instruments)的高性能自主汽车专用系统。
按功耗大致分组
ARM 公司最近推出了带有 NPU(Neural Processing Unit,神经处理单元)的 Ethos-N 系列处理器,该处理器与 Cortex-M 处理器相结合,可用于各种低功耗应用。NDP101 是一款低功耗 SoC 芯片,用于语音应用中的关键词分类。
模型动物园与模型
由于边缘设备的算力和内存有限,因此,边缘机器学习模型的关键属性是:
给定模型的优化过程会因应用程序而异:在某些应用程序中,如自动驾驶汽车,对准确率要求最高,但可能不会执行量化等模型压缩技术。
框架选择的流程图
针对特定平台进行优化的预训练模型可以显著提升推理速度,也可以用于迁移学习来训练特定应用的模型。它们还提供了一个很好的基准来比较自定义模型,并且还可以帮助开发团队更快地达到 MVP。TensorFlow 和 PyTorch 是两个最流行的机器学习框架,它们可以在树莓派(Raspberry Pi)和 NVIDIA Jetson 等任何 Linux 兼容板上运行。下面是一些专门针对边缘模型的模型动物园和库。
Intel OpenVINO Model Zoo:Intel 提供了大量针对 Intel x86 CPU 优化的预训练模型。免费模型可用于人脸检测、行人检测、人体姿势估计等用例。OpenVINO 工具箱可以用来优化 Intel 产品的自定义模型。
iOS Core ML:像 GPT-2 和 BERT 这样的最先进模型的精简版可以在 iOS 设备上使用。
TensorFlow Lite:是 TensorFlow 生态系统的一部分,可以用在 Android、iOS 和其他各种边缘设备上部署机器学习模型。预训练模型可用于对象检测、姿势估计,使用 mobileBert 进行问答等等,这些都是针对 Android 设备的。ML Kit 是 Firebase 生态系统的另一个选项,也可以在 iOS 上使用。ML Kit 还有一个视觉 API,可以用来识别 400 个常见物体的图像,还可以使用 AutoML Vision Edge 来训练自定义模型。
PyTorch Mobile:是 PyTorch 生态系统的一部分,支持 Android、iOS 和其他边缘设备。PySyft 是一个用于保护机器学习隐私的库,与 PyTorch 一起使用,可以用在一些边缘设备上。
PocketFlow 是来自腾讯公司的一个开源项目,用于深度学习模型的自动压缩和加速。
ARM CMSIS NN:该库为 ARM Cortex-M 系列微控制器的卷积等常见操作提供了高效实现。在这篇关于 CMSIS-NNN 的论文中,ARM 描述了在 Cortex-M7 MCU 上运行 CNN 所做的各种优化。这里有几个例子。
Coral Edge TPU:Edge TPU 的预训练模型可用于图像分类、对象检测和图像分割等。
Fritz AI:为 iOS 和 Android 提供了预训练模型,可免费上手和实验。此外,Fritz AI 还有一个端到端的移动模型构建平台,目前还处于早期访问阶段。
云平台
AWS IoT:包括 Amazon FreeRTOS、AWS IoT Core 以及其他各种服务,用于管理和开发边缘应用。
硬件
传感器
在边缘应用中,传感器是关键,因为它们帮助我们收集和测量不同类型的环境信息,如温度、声音、图像、运动、湿度等。下面是一些有趣的传感器:
ST LSM6DSOX Inertial Sensor:这是一个带有三轴加速度计和三轴陀螺仪的惯性传感器。它还有一个机器学习核心,有 8 个独立的决策树,可以用来对运动模式进行分类。
Sensor Tag、Sensor Tile 和 Sensor Puck 是带有 BLE(Bluetooth low energy,低功耗蓝牙)和湿度、温度、环境光等多种环境传感器的开发套件。
边缘开发套件
有几家公司(这里列出了一长串这类公司的名单)正在研究深度学习加速器,用于深度神经网络的训练/推理;然而,目前可供开发人员开始开发的产品还很少。下面是一些现在可以购买的开发板列表,用于开发边缘人工智能应用:
低功耗板
Sparkfun Edge 和 Lattice iCE40 开发板
搭载 Ambiq Apollo3 微控制器的 SparkFun Edge 开发板——由 Ambiq Micro 开发的 Apollo 3 是最高效、低功耗的 32 位 Cortex-M4F 微控制器之一。这里有一些例子,如唤醒词检测、打造一个魔法棒!费用:14.95 美元。
Lattice iCE40 UltraPlus FPGA Platform:是基于 FPGA 的开发工具包,可用于运行小型 CNN(4~8 层),用于关键词检测、人脸检测等应用。这里提供了带有各种传感器(麦克风、惯性传感器等)的开发工具包。费用:99 美元。
中功耗板
Coral Edge TPU 开发板和 NVIDIA Jetson Nano 开发板
Google Edge TPU:Google 前不久宣布的 Edge TPU,现已可购。这是 Coral 平台的一部分。开发板还包含一个来自 NXP 的 Cortex-A53 SoC,可以独立使用,并且有摄像头的连接器等。它可以使用 TensorFlow Lite 进行编程。Google 提供了一些性能数据,见这里。开发板(如上图)可以在这里购买。费用:149.9 美元。
NVIDIA Jetson Nano:这是 NVIDIA 在 GTC 2019 上发布的 Edge AI 最新深度学习开发板。Jetson Nano 的主要优势之一是它包含了四核 ARM CPU,可以运行 Linux 系统,而 Intel 神经计算棒和 Edge TPU 加速棒需要单独的板子,比如树莓派等。它可以使用 TensorFlow、PyTorch 进行编程。费用:99 美元。
有关 Coral Edge TPU 开发板和 NVIDIA Jetson Nano 的更详细比较,请查看这篇博文:《Google Coral Edge TPU 开发板与 NVIDIA Jetson Nano 开发板的硬件比较》(Google Coral Edge TPU Board Vs NVIDIA Jetson Nano Dev board — Hardware Comparison)。
Intel Neural Compute Stick 2(Intel 神经计算棒 2):这款 USB 外观的开发板采用了 Intel Myriad X 视觉处理单元(Vision processing unit,VPU) 。在 Myriad X 之前,Intel/Movidius 已经推出了 Myriad2,为第一代 Intel 神经计算棒提供动力。要进行编程,必须使用 IntelOpenVino 工具包。可在这里购买。费用:99 美元。
Intel 神经计算棒
Coral USB
Coral USB Accelerator:这包含了 USB 外形尺寸类似于 NCS 2 的 Google Edge TPU,它可以与树莓派或任何笔记本计算机一起使用。费用:74.99 美元。
Sipeed MAix M1 (RISC-V + Kendryte 120):这款用于树莓派的 Grove Hat,目前仅售 24.50 美元(预购结束后为 28.90 美元)。它拥有双核 600MHz RISC-V CPU 和 Kendryte K120 16 位神经网络处理器。费用:24.50 美元。
Raspberry Pi(RPi,树莓派):树莓派采用四核 ARM Cortex-A7 系列处理器,可与 Edge TPU 加速棒结合,打造功能强大、易于使用的边缘人工智能平台。费用:35 美元。
AWS DeepLens:这是来自 AWS 的开发套件,面向计算机视觉应用的开发人员。它可以在 Intel Atom 处理器上运行推理,并可以轻松地与 AWS IoT 服务集成,将推理结果发送到云端。费用:199 美元。
结 语
在边缘开发人工智能应用需要使用受限的资源(内存、计算等),并对费用、功耗和面积进行优化,所有这些都使其成为当今人工智能领域最具挑战性的问题之一。
随着互联设备的兴起,以及这些嵌入式设备上的应用开发软件的发展,我们将看到更多的边缘应用使用机器学习来解决医疗、节能和机器人等领域的新问题,这里仅举几个例子。
作者介绍:
Manu Suryavansh,机器学习工程师。
原文链接:
https://heartbeat.fritz.ai/machine-learning-at-the-edge-μml-2802f1af92de
评论