Coral生态以及技术
References: Coral AI
介绍下google coral edge TPU computing整个生态:
-
用于生产环境的SoM以及带PCI接口的加速器。
-
用于开发测试的四款口袋型开发板。
-
外围传感器包括环境检测模块以及摄像头,Wi-Fi/PoE扩展板。
Cloud TPU / Edge TPU 介绍
技术
Coral Edge TPU是谷歌为加速边缘设备神经网络推理而研发的专用芯片,并且在保持低功耗的前提下运行专门优化过的神经网络模型。
Edge TPU 运行速度为4 Tops,并且功耗为0.5W/Tops,相当于如果Edge TPU全天满负荷运行,那么一天的功耗总共为48WH,这样对于工业环境的要求,低功耗绝对是一个优势。上图为嵌入式CPU和Edge TPU推理速度的比较,可以看出在edge TPU上运行时间远远低于embedded cpu,降低功耗但保持模型推理的准确度并且加速运算,这就是edge tpu在工业领域的优点。
可扩展性
Coral产品线包括最初的原型设计开发板,到产品PCI edge TPU模块,最后再到微控制器micro dev board,整个生态链都有供应,缺点就是由于芯片限制的原因在中国很难买到,国外因为生产原因的关系,也需要时刻关注供应商的库存。像我之前购买的Environmental Sensor Board是通过HK代购进入中国的,还有micro dev board是通过pi3g供应商从EU发货到达国内的。
模型兼容
edge TPU可以运行tensorflow以及keras构建的模型,当然模型需要转换成int8 tensorflow lite ,这一步称之为quantized,这样就可以降低模型在edge device上内存的开销,然后tflite模型通过edge tpu compiler的编译,最后运行在edge tpu上。
Mendel Linux
Coral Dev Board和Coral Dev Mini Board以及SOM都可以运行google自己维护的Mendel Linux,系统的缺点就是独立性太强,使用的linux内核是4.x系列,比起raspberry pi生态,coral的内核已经相当老旧了,并且无法使用linux内核的新功能,而像raspberry pi官方一直支持Linux内核到6.x系列。在编程接口方面,google提供了,pycoral + libcoral,还有shell命令行工具MDT。
Coral Micro
Dev Board Micro是一款微控制器开发板,运行基于freeRTOS的CoralMicro系统,编程环境支持Arduino和C++/Cmakefile,并且CoralMicro是开源的。
运行多个模型
如果只有单一一个edge tpu,可以通过co-compiling技术,多个模型共享edge tpu内存。如果有多个edge tpu,那么可以将每一个模型单独的运行在对应的edge tpu上并行运行。
模型管线
将一个模型分割成多个部分运行在不同的edge tpu上,这样可以加快推理速度,同时对于一个大模型运行而言在单一edge tpu上可以打破因为内存的限制而无法运行的情况。
设备上训练
edge tpu适用于模型推理,由于硬件条件的限制无法做整个模型权重的训练,但是可以通过迁移学习,将最后一层神经网络之外的权重全部冻结,在edge tpu上训练网络的最后一层,训练出满足需求的模型。
未来
自从chatGPT问世之后,当下最火热的行业讨论当然是AI,大模型+大数据,如果要训练像chatGPT这样的模型,对于中小公司而言硬件成本是相当高的,同时还有模型的设计与研发投入都是一笔不小的开支,除非企业直接购买使用像chatGPT, DALL-E以收费订阅制为主的服务。那么换个方向,我们专注于小的领域,比如在嵌入式设备上运行模型,解决工业化中遇到的问题,尽量降低推理设备的成本,降低功耗,这样就能渗透到各个领域中,这就是tinyML。那么在什么芯片上运行神经网络的推理,我的答案是Edge TPU,虽然目前Google coral的生态用户数没有Nvidia jetson那么多,但是在微控制器器上运行AI的未来肯定是专用芯片,edge TPU主要的优势就是低功耗,低延时,高效率。