1. 程式人生 > 實用技巧 >高通SNPE - 基準測試概述(2)

高通SNPE - 基準測試概述(2)

下面我們來繼續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檔案包含與以下示例類似的結果。

在這裡插入圖片描述

如何使用自己的網路和輸入來執行基準

準備輸入

在執行基準測試之前,需要準備好以下輸入:

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中的所有執行時執行。如果不存在此欄位,則會在所有可能的執行時(預設情況下)執行該欄位。