「AI边缘运算」Google Coral USB Accelerator 开箱测评

提到 AI,我们脑海中总会浮现如火星文般的复杂算法、深不可测的神经网络、数量庞大到以 TB 计数的 dataset 以及高速运算耗电量惊人的 GPU 等,它们可能存在于云端,甚至就在自家机房的内部;然而,尽管它们的算法再精确、GPU 运算再迅速、网络传输再快,还是无法满足一般使用者最基本的需求:即时回馈,因此更贴近使用者、无延迟的「Edge AI」近年来大量兴起,而前述庞大笨重的 AI 系统则隐身幕后称为「Centralized AI」,两者便组成 Distributed AI 的架构。

「AI边缘运算」Google Coral USB Accelerator 开箱测评

如上图左侧,Edge AI 部署于使用者终端,专用于「推论及决策」等动作,可满足低延迟、快速回应的 AI需求,例如 Robots、Drones、Portable or Mobile Devices、Outdoor Devices 等。

Google Coral USB Accelerator

目前市面可满足 Edge AI 的硬件设备选择相当多,大致可分为可单独运行的单版 AI board 与 USB 接口无法独立运行的 AI 加速器。今天要开箱的是一个可以通过 USB 与树莓派搭配的 AI 加速器:Google Coral USB Accelerator,它的外形与功能很容易让我们联想到 Intel 的 Neural Computing Stick(NCS),这两种都属于针对「深度学习运算」特别设计的 ASIC IC(Application Specific Integrated Circuit),它们两者都非常适合平行的处理大量加乘运算,但也由于专用于特定用途,因此它们只支持有限的深度学习框架,而且必须先将模型转换为特定的中介格式后才能运作。

「AI边缘运算」Google Coral USB Accelerator 开箱测评

NCS2 (左)与 Google Coral USB Accelerator(右)

NCS2 使用的中介档称为 IR(Intermediate Representation),可支持 TensorFlow、Caffe、MXNet、ONNX、Darknet 等模型转换为 IR(Intermediate Representation)的中介档格式,且还支持 OpenCV 的 DNN 模组;而 Google Edge TPU 目前则仅支持自家的 Tensorflow Lite 格式,且是 Edge TPU 专用的tflite-tpu,因此使用前必须将 TF Lite 模型转档后才能使用。

Google Coral USB Accelerator 的尺寸与重量都比想像中的更小更轻,相较于部置在云端能够提供训练与推论的 Cloud TPU,这块 Coral USB Accelerator 属于 Edge AI 的一环,即是上面所指的 Edge TPU。

推论时间比较

这个小巧的加速器能提升多少深度模型的推论速度呢?下面统计资料来自官方网站,由左至右:蓝色为使用一般 PC(CPU)、橙色为 PC 加上 Edge TPU、灰色为树莓派 3、黑色为树莓派加 Edge TPU,数值代表模型的推论时间,因此越小越好;由图表中可看出树莓派加上 Edge TPU 后可说是如虎添翼,比 PC 的 CPU 快上数十倍,甚至与 CPU+Edge TPU 并驾齐驱,可惜树莓派没有支持 USB 3.0,否则速度应该会更令人满意。

「AI边缘运算」Google Coral USB Accelerator 开箱测评

使用各加速器推论时间的比较


「AI边缘运算」Google Coral USB Accelerator 开箱测评

推论时间数值表

安装 Edge TPU 与 Python 资料集

接下来,我们先将 Google Coral USB Accelerator 接上树莓派,如下图所示:

「AI边缘运算」Google Coral USB Accelerator 开箱测评

A.下载 Edge TPU API

<code>cd ~/wget https://dl.google.com/coral/edgetpu_api/edgetpu_api_latest.tar.gz -O edgetpu_api.tar.gz –trust-server-namestar xzf edgetpu_api.tar.gz/<code>

B. 安装 Edge TPU API

<code>cd edgetpu_apibash ./install.sh/<code>

下图为安装的画面,未来如果想要更改设定值,可以重复执行此安装的步骤。

「AI边缘运算」Google Coral USB Accelerator 开箱测评

最后一行出现”Would you like to enable the maximum operating frequency?”如果输入Y,那么 Edge TPU 在推论时会全力运作加快速度,但需注意在这种情况下可能会产生高热。

安装的过程相当简单且顺利,目前的版本为 edgetpu-1.9.2,如下图所示:

「AI边缘运算」Google Coral USB Accelerator 开箱测评

C. 重新插入

安装好 API 后,如果 Accelerator 已经接在 USB 上,建议再重新插拔一次,让 udev rule 生效。

D. Demo 范例实作

  • Image Classification

首先试试最基本的影像分类模型,请执行下方>

<code>cd ~/Downloads/wget https://dl.google.com/coral/canned_models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \\https://dl.google.com/coral/canned_models/inat_bird_labels.txt \\https://dcoral.withgoogle.com/static/docs/images/parrot.jpg/<code>

下载完成后,进入 demo 目录执行 classify_image.py 程序:

<code>cd /usr/local/lib/python3.5/dist-packages/edgetpu/demopython3 classify_image.py \\--model ~/Downloads/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \\--label ~/Downloads/inat_bird_labels.txt \\--image ~/Downloads/parrot.jpg/<code>

却出现下方的 error:

<code>Traceback (most recent call last):  File "classify_image.py", line 19, in <module>    from edgetpu.classification.engine import ClassificationEngineImportError: No module named 'edgetpu'/<module>/<code>

错误的原因是 edgetpu API 预设安装到 /usr/local/lib/python3.5/dist-packages,但如果你的 Python 环境是 virtualenv,便需要多执行下列的安装步骤:

<code>cd /home/pi/envAI/lib/python3.5/site-packages/ln -s /usr/local/lib/python3.5/dist-packages/edgetpuln -s /usr/local/lib/python3.5/dist-packages/edgetpu-1.9.2.dist-info/<code>

执行结果:此为待分类的示范图片鹦鹉,范例程序预测其为 Ara macao,机率为 0.76,如下图所示:

「AI边缘运算」Google Coral USB Accelerator 开箱测评

总结

虽然 Google Coral USB Accelerator 在外形体积与耗电量上占尽优势,且使用精度更低的 INT8,使得 Coral USB Accelerator 在 SSD Mobilenet V2 模型的推论速度比起其他 Edge AI chip 更快,但这是种种不方便使用之下妥协的结果,例如 Edge TPU 目前仅支持 Tensorflow lite 一种格式,且是更为简化的 Tensorflow lite 版本,所支持的神经网络 layer 种类更少。

因此,您在上手一个 Google Coral USB Accelerator 后,除了执行官方所提供的范例外,可能还会烦恼「如何将自己先前所训练、FP32 精度的模型通过一道道繁琐的程序转换为最终 INT8 的 Tensorflow lite for Edge TPU 模型?」(此步骤称为 post-training quantization),并且考虑能否接受 INT8 模型所带来较低准确率的表现,以及后续是否需要采取重新训练的方式来提升 INT8 精度模型的准确率。


分享到:


相關文章: