最近开始自学TensorFlow,也粗看了Caffe。和之前较为直观的电子工程类的思路和经验有很大差异。自己是一个来自Semicon行业的Pythoner,所以针对芯片行业做了一些粗浅的调研。
AI的误解
有几个明显的关于AI的误解:
- AI必须运行在云端,实际上利用云端的大数据和高算力硬件,主要是用来AI模型训练,AI推导对于算力要求要低许多,可以前置到设备一侧。
- AI是吹牛,AI最近通过智能音箱、机器视觉等场景的应用,证明AI不再是虚无缥缈的
- AI就是深度学习,深度学习是AI的一种分支,但的确是最近突破最快的一支。但是AI还有其他的训练方法。
顶级芯片玩家
常见的可以支持AI的通用架构主要是:
- FPGA,包括Xilinx, Intel/Altera
- GPU,包括Nvidia
- CPU,主要是Intel/AMD,以及ARM/RISC-V/MIPS
而新架构和新名词太多了,包括Intel Movidius,阿里平头哥,华为的AI... 傳統的CPU/MCU/SoC越來越多的集成AI加速器和算法:
- ARM推出CMSIS.NN,
- STM的STM32CubeMX.ai也已經推出,
- NXP的RT1052也開始加載AI
- RK3399集成NPU成为RK3399Pro...
所有这些新进推出的板、卡、棒、模块,让人眼花缭乱,安装工具、运行代码、验证都要花费非常长的时间。所以除非送给我(也不一定有空),一般来说,我自己还是采用标准硬件:GPU+CPU+FPGA来做测试。
整個產業鏈條會以前所未有的速度集成AI,應用場景卻非僅限於智能語音、機器視覺和自然語言處理。在基础建设领域,AI同样有应用场景,比如管道无损验伤,无线信号预测,设备检测,泵机维护,管道巡检,设备的姿态与振动分析 ......
标准化有待时日
我个人觉得未来除了CPU/MCU/SoC架构外,在5年内会有标准化的NPU架构和指令集出现,至少是针对深度学习方向的NPU。以结束当前大量的APU/BPU/VPU等奇怪的命名和五花八门的架构。这种玩家可能是某种开源架构,毕竟移植模型也不好玩,也不高效。
目前的AI算法的技术驱动力主要来自互联网,而非传统Semicon IDM。例如GAAF/BAT,华为比较另类,来自传统蜂窝通讯行业。而Intel/Nvidia/Xilinx仅仅提供的是硬件,以迎合互联网的要求。目前这些互联网巨头都已经开始慢慢涉足半导体的架构设计,比如Google TPU/阿里平头哥的SoC设计,很难说NPU的标准化架构将来自哪个行业。华为的新品如果不能够开源,那么可能很难校准化。
AI对于半导体行业的技术要求
虽然不需要对于模型的构建有太多了解,但是对接一系列AI框架和硬件平台,要求工程师对于Python AI 框架有初步了解,并熟悉掌握MCU的C/C++以及汇编级别优化。
应用方式
使用高算力和大量数据在云端进行AI训练模型,然后在设备端进行AI推理。作为设备端的工程师,需要掌握的是如何把模型移植到目标MCU中。现在更加倾向于从半导体供应商获得模型和代码,集成到最终产品中。或者采用AIoT方式,通过网络来获得推理服务。
目前,STM32F4xx基于M4,STM32F7基于M7,可以利用FPU/DSP扩展进行部分的AI推理,但是因为使用内部Flash,主频较低,比不上NXP RT1052和STM32H7。可以使用Cortex-A来替代RT1052进行推理,毕竟人脸识别之类的在手机上也不是新鲜事了。但是性价比和功耗远远比不上RT1052。所以RT1052卡位很准。但是吐槽一下NXP的支持还是不足,居然在Keil MDK里还会出现编译错误。感觉没有验证过环境,或者没有判断依赖条件。
相信STM和国产厂家也会出现大量竞品。