高通SNPE - 基准测试概述(2)

时间:2024-04-13 14:10:44

下面我们来继续SNPE基准测试概述。

CSV 1:配置

这一部分包含有关以下内容的信息:

  • 用于生成基准运行的SDK版本
  • 型号名称和DLC文件的路径
  • 为基准测试选择的运行时
  • 等等

CSV 2:初始化指标

这一部分包含有关模型初始化的度量。分析级别会影响收集的测量值。没有收集用于分析的指标。基本指标和详细指标如下所示。

分析级别:基本

  • 加载度量加载模型元数据所需的时间。
  • 反序列化测量反序列化模型缓冲区所需的时间。
  • 创建度量用于创建SNPE网络并初始化给定模型的所有层所花费的时间。可以将分析级别设置为“详细”来检索创建时间的详细细分。
  • 初始化测量构建和配置SNPE所花费的时间。该时间包括测得的“加载”,“反序列化”和“创建”的时间。
  • De-Init(去初始化)测量去初始化SNPE所花费的时间。

分析级别:中等或详细

  • 加载度量加载模型元数据所需的时间。
  • 反序列化测量反序列化模型缓冲区所需的时间。
  • 创建度量用于创建SNPE网络和初始化给定模型的所有层所花费的时间。可以将分析级别设置为“详细”来检索创建时间的详细分类。
  • 初始化测量构建和配置SNPE所花费的时间。该时间包括测得的“加载”,“反序列化”和“创建”的时间。
  • De-Init(去初始化)测量去初始化SNPE所花费的时间。
  • “创建网络”衡量为模型创建所有网络所需的总时间。分区的模型将导致创建多个网络。
  • RPC初始化时间用于衡量SNPE使用的RPC和加速器上的全部时间。该时间包括以Snpe Accelerator Init Time和Accelerator Init Time度量的时间。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。
  • Snpe Accelerator Init Time衡量SNPE为加速器进程(例如GPU,DSP,AIP)准备数据所花费的总时间。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。
  • Accelerator Init Time衡量在加速器核心上花费的总处理时间,其中可能包括不同的硬件资源。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。

CSV 3:执行指标

这一部分包含有关执行神经网络模型的一次推理的测量。分析级别会影响收集的测量值。

分析级别:基本

  • Total Inference Time度量一次推理过程的整个执行时间。这包括任何输入和输出处理,数据复制等。这在execute调用的开始和结束时进行测量。

分析级别:中等或详细

  • Total Inference Time度量一次推理过程的整个执行时间。这包括任何输入和输出处理,数据复制等。这在execute调用的开始和结束时进行测量。
  • 前向传播度量不包括加速器核心之一上的处理开销而执行一次推理过程所花费的时间。例如,在GPU的情况下,这表示在GPU硬件上运行的所有GPU内核的执行时间。
  • RPC Execute衡量SNPE使用的RPC和加速器上的全部时间。该时间包括在Snpe Accelerator和Accelerator中测量的时间。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。
  • Snpe Accelerator衡量SNPE设置加速器处理所需的总时间。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。
  • 加速器衡量在加速器核心上花费的总执行时间,其中可能包括不同的硬件资源。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。

分析级别:详细

  • Misc Accelerator度量了SNPE未指定的优化元素在加速器核心上花费的总执行时间。例如,在DSP的情况下,这表示在加速器为实现最佳性能而添加的其他层上花费的执行时间。当前仅适用于DSP和AIP运行时。对于其他运行时将显示为0。

CSV 4:模型层名称

这一部分包含神经网络模型每一层的名称列表。

请注意,仅当将分析级别设置为“详细”时,此信息才针对DSP / GPU运行时显示。

CSV 5:模型层时间

这一部分中的每一行代表神经网络模型每一层的执行时间。对于每个运行时间,均表示平均值,最小值和最大值。

请注意,仅当将分析级别设置为“详细”时,此信息才针对DSP / GPU运行时显示。

JSON基准结果文件

CSV文件中发布的基准测试结果也可以JSON格式提供。内容与CSV文件中的内容相同,以键值对的形式构造,将有助于以简单有效的方式解析结果。 JSON文件包含与以下示例类似的结果。

高通SNPE - 基准测试概述(2)

如何使用自己的网络和输入来运行基准

准备输入

在运行基准测试之前,需要准备好以下输入:

your_model.dlc
列出所有输入数据的文本文件。有关示例,请参见:$ SNPE_ROOT / models / alexnet / data / image_list.txt
上面的文本文件中列出的所有输入数据。有关示例,请参见目录$ SNPE_ROOT / models / alexnet / data / cropped
注意:image_list.txt必须与输入目录的结构完全匹配。

创建运行配置
配置结构

配置文件是具有预定义结构的JSON文件。请参考$ SNPE_ROOT / benchmarks / alexnet_sample.json作为示例。

各个field都需要。

  • 名称:此配置的名称,例如AlexNet
  • HostRootPath:主机上的*输出文件夹。它可以是当前工作目录的绝对路径或相对路径。
  • HostResultDir:放置所有基准测试结果的主机上的文件夹。它可以是当前工作目录的绝对路径或相对路径。
  • DevicePath:设备上用于存放所有与基准测试有关的数据和工件的文件夹,例如/ data / local / tmp / snpebm
  • 设备:运行基准测试的设备的***。当前仅支持一台设备。
  • 运行:基准测试针对“运行系统”和“度量”运行组合中的每一个运行的次数
    模型:
  • 名称:DNN模型的名称,例如alexnet
    Dlc:型号dlc文件在主机上的文件夹。它可以是当前工作目录的绝对路径或相对路径。
  • InputList:列出所有输入数据的文本文件路径。它可以是当前工作目录的绝对路径或相对路径。
  • 数据:InputList文件中列出的数据文件或文件夹的列表。它可以是当前工作目录的绝对路径或相对路径。如果路径是文件夹,则该文件夹的所有内容将被推送到设备。
  • 运行时间:可能的值为“ GPU”,“ GPU_FP16”,“ DSP”和“ CPU”。您可以使用这些的任意组合。
  • 测量:可能的值是“ timing”和“ mem”。您可以设置这些值之一或全部。每种测量类型都是针对每次运行单独测量的。

可选字段:

  • CpuFallback:可能的值为true和false。指示当运行时上的图层不可用时,网络是否可以回退到CPU。默认值为false。
  • 主机名:设备连接到的远程计算机的主机名/ IP。默认值为“ localhost”。
  • BufferTypes:用户缓冲区类型的列表。可能的值为“”(空字符串),或“ ub_float”和“ ub_tf8”的任意组合。如果给出“”,它将在“运行时间”字段中给定的所有运行时执行。如果给出了任何userbuffer选项,它将与给定的userbuffer变体一起在RunTimes中的所有运行时执行。如果不存在此字段,则会在所有可能的运行时(默认情况下)执行该字段。