嵌入式人工智能大纲
人工智能的发展
- 机器学习(参考《机器学习》周志华,《统计学习方法》)
- 模型评估方法
- 监督学习(分类,强化学习)
- 半监督学习,无监督学习(聚类)
- 集成学习
- 概率图模型
- 规则学习
- 深度学习(参考《深度学习》)
- 深度前馈网络
- 正则化
- 优化(梯度下降)
- 卷积网络(CNN)
- RNN/LSTM
- 其他前沿理论(配分函数和近似推断,自编码器,生成对抗网络,图神经网络)
- 机器学习(参考《机器学习》周志华,《统计学习方法》)
硬件架构
本小节主要介绍常用的处理器,在嵌入式端广泛运用在深度学习训练、推理过程的加速。GPU
图像处理器。
GPU采用数量众多的计算单元和超长的流水线,善于处理图像领域的运算加速。但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。深度学习的崛起受到GPU发展的推动。- GPU发展历史
- GPU功能
- GPU物理架构(以Nvidia为例)
- NVidia Tesla架构(https://images.nvidia.cn/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf)
- NVidia Fermi架构
- NVidia Maxwell架构
- NVidia Kepler架构
- NVidia Turing架构(https://images.nvidia.cn/aem-dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf)
- GPU运行机制([]http://haifux.org/lectures/267/Introduction-to-GPUs.pdf
http://download.nvidia.com/developer/cuda/seminar/TDCI_Arch.pdf)- 渲染总览
- 逻辑管线
- 技术要点
- GPU资源机制
- 总结
FPGA (Field Programmable Gate Array,现场可编程门阵列)
(这部分内容非常新,资料不多,很多是专利和未公开架构。如专利201880061751.0)
半定制化的人工智能专用芯片。FPGA适用于多指令,单数据流的分析,与GPU相反,因此常用于预测阶段,如云端。(下面除5之外,参考《FPGA原理和结构》,在本书7.7章有深度学习结合FPGA,但过于简单)- FPGA发展历史
- FPGA构成要素和结构
- FPGA工作原理
- FPGA开发流程
- FPGA AI芯片案例:DPU(资源连接:https://blogs.nvidia.com/blog/2020/05/20/whats-a-dpu-data-processing-unit/)
- 基本概念
DPU(Deep learning Processing Unit)深度学习处理器 - 工作原理
- 和CPU/GPU优势
- 基本概念
ASIC(Application Specific IntegratedCircuit)
ASIC是指依产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。(参考《高级ASIC芯片综合》)- 基本概念
- 静态时序分析
- 设计约束和优化设计
- 物理综合
- ASIC AI芯片案例
TPU(Tensor Processing Unit)
(参考论文 https://arxiv.org/ftp/arxiv/papers/1704/1704.04760.pdf)
张量处理器
谷歌专门为加速深层神经网络运算能力而研发的一款芯片,其实也是一款ASIC。TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。- 架构
- 实现
备选:NPU((Neural network Processing Unit)
神经网络处理器:用电路模拟人类的神经元和突触结构,将神经网络结构直接以硬件形式体现。但是没有找到相关论文。
总结与比较
优缺点(能耗,推理速度,通用性,复杂程度,成本)
例:- GPU性能好,功耗高,通用性好。管理控制能力(最弱),功耗(最高)。
- FPGA可编程,灵活程度介于GPU和ASIC之间。开发难度大、只适合定点运算、价格比较昂贵。
- ASIC,作为集成电路技术与特定用户的整机或系统技术紧密结合的产物,与通用集成电路相比具有体积更小、重量更轻、 功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
应用场景(大型高性能计算、通用嵌入式、定制化嵌入式)
软件框架
(主流开发框架是tensorflow和pytorch,嵌入式端一般有tensorlite,armnn,tensorrt和一些其他中间协议,但原理书籍几乎没有,下面以tensorflow为例,参考开源书《Tensorflow内核剖析》,下载地址https://raw.github.com/horance-liu/tensorflow-internals/master/tensorflow-internals.pdf)- 依赖环境
- 系统架构
- Client
- Master
- Worker
- Kernel
- 图控制
- 会话管理
- 编程模型
- 计算图
- 设备
- 会话
- 变量
- 队列
- 嵌入式部署
本小节主要介绍目前主流的嵌入式AI部署框架:- 基于硬件环境
- 基于arm架构:armnn(
官网 https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/white-papers-and-research-papers
软件地址:https://github.com/ARM-software/armnn) - 基于通用GPU/CPU:tensorflow Lite(官网:https://www.tensorflow.org/lite?hl=zh-cn)
特点:
- 为不同端上优化的核心operator的解释器(Interpreter)打包成一个轻量的二进制包;
- 丰富的平台支持。Android和iOS设备、嵌入式Linux、微控制器设备等;
- 多语言API调用支持。Java, Swift, Objective-C, C++, and Python;
- 高性能。针对硬件精心优化的底层kernel实现,如预融合策略的激活和bias算子/底层kernel;
- 模型优化工具。量化模型,该策略可在不影响精度的前提下减小模型尺寸;
- 高效模型格式。使用轻量的FlatBuffer(跨平台,且比protobuf性能好,最初为游戏和性能相关任务而开发)。
- 其他框架:tensorRT
- 基于arm架构:armnn(
- 基于编译方法:TVM(https://tvm.apache.org/)
- 基于文件格式:ONNX(https://onnx.ai/)
- 对比
- 支持的平台
- 推理性能对比
- 基于硬件环境
综合案例
- 评价标准
- 模型精度(准确率,召回率,精确率,F值)
- 能耗
- 吞吐量和时延
- 能效比
- 目标检测
- 数据集(COCO)
- 算法:YOLO mobile/YOLO v4
- 模型训练
- 模型部署
- 评价标准