嵌入式人工智能

嵌入式人工智能大纲

  1. 人工智能的发展

    1. 机器学习(参考《机器学习》周志华,《统计学习方法》)
      1. 模型评估方法
      2. 监督学习(分类,强化学习)
      3. 半监督学习,无监督学习(聚类)
      4. 集成学习
      5. 概率图模型
      6. 规则学习
    2. 深度学习(参考《深度学习》)
      1. 深度前馈网络
      2. 正则化
      3. 优化(梯度下降)
      4. 卷积网络(CNN)
      5. RNN/LSTM
      6. 其他前沿理论(配分函数和近似推断,自编码器,生成对抗网络,图神经网络)
  2. 硬件架构
    本小节主要介绍常用的处理器,在嵌入式端广泛运用在深度学习训练、推理过程的加速。

    1. GPU
      图像处理器。
      GPU采用数量众多的计算单元和超长的流水线,善于处理图像领域的运算加速。但GPU无法单独工作,必须由CPU进行控制调用才能工作。CPU可单独作用,处理复杂的逻辑运算和不同的数据类型,但当需要大量的处理类型统一的数据时,则可调用GPU进行并行计算。深度学习的崛起受到GPU发展的推动。

      1. GPU发展历史
      2. GPU功能
      3. GPU物理架构(以Nvidia为例)
        1. NVidia Tesla架构(https://images.nvidia.cn/content/pdf/tesla/whitepaper/pascal-architecture-whitepaper.pdf)
        2. NVidia Fermi架构
        3. NVidia Maxwell架构
        4. NVidia Kepler架构
        5. NVidia Turing架构(https://images.nvidia.cn/aem-dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf)
      4. GPU运行机制([]http://haifux.org/lectures/267/Introduction-to-GPUs.pdf
        http://download.nvidia.com/developer/cuda/seminar/TDCI_Arch.pdf)
        1. 渲染总览
        2. 逻辑管线
        3. 技术要点
        4. GPU资源机制
      5. 总结
    2. FPGA (Field Programmable Gate Array,现场可编程门阵列)
      (这部分内容非常新,资料不多,很多是专利和未公开架构。如专利201880061751.0)
      半定制化的人工智能专用芯片。FPGA适用于多指令,单数据流的分析,与GPU相反,因此常用于预测阶段,如云端。(下面除5之外,参考《FPGA原理和结构》,在本书7.7章有深度学习结合FPGA,但过于简单)

      1. FPGA发展历史
      2. FPGA构成要素和结构
      3. FPGA工作原理
      4. FPGA开发流程
      5. FPGA AI芯片案例:DPU(资源连接:https://blogs.nvidia.com/blog/2020/05/20/whats-a-dpu-data-processing-unit/)
        1. 基本概念
          DPU(Deep learning Processing Unit)深度学习处理器
        2. 工作原理
        3. 和CPU/GPU优势
    3. ASIC(Application Specific IntegratedCircuit)
      ASIC是指依产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。(参考《高级ASIC芯片综合》)

      1. 基本概念
      2. 静态时序分析
      3. 设计约束和优化设计
      4. 物理综合
      5. ASIC AI芯片案例
        TPU(Tensor Processing Unit)
        (参考论文 https://arxiv.org/ftp/arxiv/papers/1704/1704.04760.pdf)
        张量处理器
        谷歌专门为加速深层神经网络运算能力而研发的一款芯片,其实也是一款ASIC。TPU与同期的CPU和GPU相比,可以提供15-30倍的性能提升,以及30-80倍的效率(性能/瓦特)提升。
        1. 架构
        2. 实现
          备选:NPU((Neural network Processing Unit)
          神经网络处理器:用电路模拟人类的神经元和突触结构,将神经网络结构直接以硬件形式体现。但是没有找到相关论文。
    4. 总结与比较

      1. 优缺点(能耗,推理速度,通用性,复杂程度,成本)
        例:

        • GPU性能好,功耗高,通用性好。管理控制能力(最弱),功耗(最高)。
        • FPGA可编程,灵活程度介于GPU和ASIC之间。开发难度大、只适合定点运算、价格比较昂贵。
        • ASIC,作为集成电路技术与特定用户的整机或系统技术紧密结合的产物,与通用集成电路相比具有体积更小、重量更轻、 功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
      2. 应用场景(大型高性能计算、通用嵌入式、定制化嵌入式)

  3. 软件框架
    (主流开发框架是tensorflow和pytorch,嵌入式端一般有tensorlite,armnn,tensorrt和一些其他中间协议,但原理书籍几乎没有,下面以tensorflow为例,参考开源书《Tensorflow内核剖析》,下载地址https://raw.github.com/horance-liu/tensorflow-internals/master/tensorflow-internals.pdf)

    1. 依赖环境
    2. 系统架构
      1. Client
      2. Master
      3. Worker
      4. Kernel
    3. 图控制
    4. 会话管理
    5. 编程模型
      1. 计算图
      2. 设备
      3. 会话
      4. 变量
      5. 队列
    6. 嵌入式部署
      本小节主要介绍目前主流的嵌入式AI部署框架:
      1. 基于硬件环境
        1. 基于arm架构:armnn(
          官网 https://developer.arm.com/solutions/machine-learning-on-arm/developer-material/white-papers-and-research-papers
          软件地址:https://github.com/ARM-software/armnn)
          1. 硬件设计(https://arxiv.org/pdf/1801.06274.pdf)
          2. 软件优化(https://arxiv.org/pdf/1801.04326.pdf)
        2. 基于通用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性能好,最初为游戏和性能相关任务而开发)。
        1. 其他框架:tensorRT
      2. 基于编译方法:TVM(https://tvm.apache.org/)
      3. 基于文件格式:ONNX(https://onnx.ai/)
      4. 对比
        1. 支持的平台
        2. 推理性能对比
  4. 综合案例

    1. 评价标准
      1. 模型精度(准确率,召回率,精确率,F值)
      2. 能耗
      3. 吞吐量和时延
      4. 能效比
    2. 目标检测
      1. 数据集(COCO)
      2. 算法:YOLO mobile/YOLO v4
      3. 模型训练
      4. 模型部署