跳到主要内容

简介

SyNAP 是一个软件工具,通过针对 Synaptics Astra 嵌入式处理器 中的 NPU 或 GPU 硬件加速器来优化设备端推理的神经网络模型。为此,它接收原始表示形式的模型(如 Tensorflow Lite、PyTorch 或 ONNX),并将其编译为特定于目标硬件的二进制网络图 .synap 格式,准备进行推理。

为 NPU 编译模型​

使用提前编译为嵌入式应用编译模型通常可以通过单个命令完成。优化选项(如混合量化、异构推理)也可以在编译时通过 YAML 元文件 传递,并且可以对模型进行签名和加密以支持 Synaptics SyKURE™ 安全推理技术。

synap

important

虽然针对目标硬件进行了优化,但预优化模型是特定于目标的,将在不同硬件上执行失败。

运行推理​

有多种方法可以在 Synaptics Astra 硬件上使用编译后的 .synap 模型运行推理:

  • 使用 synap_cli 命令进行图像分类、目标检测和图像处理。
  • 使用 Gstreamer 插件和 Python 示例进行流媒体处理(如网络摄像头目标检测)。
  • 使用 C++ 或 Python 开发的嵌入式应用可以使用 SyNAP 框架 API。
提示

开始使用 SyNAP 最简单的方法是使用预装在 Synaptics Astra 开发板上的示例预编译模型和应用程序。

JIT 编译​

对于便携式应用(如针对 Android),您可能要考虑使用 JIT 编译 方法。这种方法使用 Tensorflow Lite 外部委托直接使用原始 .tflite 模型运行推理。

这提供了最大的硬件可移植性,但这种方法也有一些缺点。使用此方法需要在 TensorFlow 训练或 TFLite 模型导出阶段完成任何硬件特定的优化,这比使用 SyNAP 进行训练后量化要复杂得多。此外,首次推理时的初始化时间可能需要几秒钟,且不支持安全媒体路径。

模型分析和基准测试​

SyNAP 提供分析工具以识别瓶颈并优化模型。这些包括:

  • 整体模型推理时间
  • NPU 运行时统计(如整体层和 I/O 缓冲区利用率)
  • 模型分析(如每层运算符类型、执行时间、内存使用)

您还可以查看参考模型和基准测试的完整列表。

NPU 硬件​

SyNAP 旨在充分利用支持的神经网络运算符,以使用可用的 NPU 或 GPU 硬件加速设备端推理。NPU 本身由几种不同类型的功能单元组成:

  • 卷积核心:专门用于执行卷积运算(int8、int16、float 16)。
  • 张量处理器:专门用于执行高度并行运算(int8、int16、float 16)。
  • 并行处理单元:128 位 SIMD 执行单元(较慢,但更灵活)。
  • 内部 RAM:用于缓存数据和权重。
芯片神经网络核心张量处理器并行处理单元
VS640, SL164042 Full + 4 Lite1
VS680, SL1680228 Full1