帶你掌握如何使用CANN 運算元ST測試工具msopst
摘要:本期帶您瞭解如何使用msopst工具。
本文分享自華為雲社群《 【CANN文件速遞13期】運算元ST測試工具【msopst】 》,作者: 昇騰CANN 。
如何獲取msopst工具
msopst工具儲存在Ascend-cann-toolkit安裝目錄的“toolkit/python/site-packages/bin”路徑下。支援對TBE運算元以及AI CPU運算元進行ST測試。
CANN軟體安裝完成並生效環境變數配置指令碼後,即可直接使用此工具,您可以在任意路徑下執行如下命令檢視工具相關引數:
總體使用流程
自定義運算元部署到OPP運算元庫後,開發者可使用msopst工具驗證運算元在昇騰AI處理器上執行的正確性,總體流程較簡單,如下所示:
下面我們分別介紹以上每一個步驟是幹什麼的?該如何做?
生成測試用例定義檔案
測試用例定義檔案,顧名思義,就是用來生成測試用例的,其內容包含了測試用例所需的基本資訊,例如:測試用例名稱,所要測試的運算元型別,運算元的輸入輸出描述資訊(形狀、資料型別、資料排布格式等)、運算元屬性相關資訊(包含屬性名稱、型別、屬性值)、資料生成演算法等。以Add運算元為例,通過msopst工具生成測試用例定義檔案的命令如下:
上述命令執行完成後,會在當前路徑的output目錄下生成Add運算元的測試用例定義檔案:Add_case_{timestamp}.json。
當然,您也可以不使用msopst create命令,直接拷貝已有運算元的測試用例定義檔案進行修改亦可,使用運算元資訊庫生成的優勢是會自動填充測試用例定義檔案中的相關欄位,例如case_name,op,input_desc與output_desc中的name、format、type等。OpType_case_xxx.json檔案的模板如下:
配置測試用例定義檔案
測試用例定義檔案的配置為整個ST測試流程的核心,直接決定了生成的測試用例個數、資料生成演算法、測試覆蓋率等,下面描述測試用例定義檔案的引數含義及配置方法。
輸入輸出描述配置
輸入輸出描述資訊包含的關鍵配置如下表所示:
測試用例採用將以上配置進行正交組合的方式生成,如下圖所示,format取值為[“ND”,“NCHW”, “NHWC”];type的取值為[“int32”,“float32”];shape的取值範圍為[32,16];data_distribute的取值為[“uniform”],value_range的取值為[0.1, 1.0],則生成的測試用例個數為 3 * 2 * 1 * 1 * 1 = 6。
運算元屬性配置
若運算元包含屬性,還需要配置如下表所示引數:
大批量生成測試用例
若開發者需要生成大量測試用例,可利用fuzz測試引數生成指令碼輔助生成,並在測試用例定義檔案( *.json )中配置fuzz指令碼路徑、所需生成的測試用例數目,同時輸入輸出描述中相關引數的取值配置為“fuzz”。操作步驟示例如下:
1、配置fuzz測試引數生成指令碼,假設指令碼命名“fuzz_shape.py”,實現如下所示:
2、配置測試用例定義檔案;
3、在測試用例定義檔案(*.json)中配置fuzz測試引數生成指令碼的路徑,所需生成的測試用例個數,並將需要自動生成的欄位配置為固定值“fuzz”,如下所示:
定義期望資料生成函式
若使用者需要得到實際輸出與期望輸出的比對結果,可使用Python語言自定義實現期望資料生成函式,並在ST測試用例定義檔案中增加此函式入口。例如,Add運算元的期望資料生成函式為“/home/test/test_add.py”,實現如下所示:
然後在ST測試用例定義檔案中增加“calc_expect_func_file”引數,配置為“期望資料生成函式的檔案:函式名”,如下所示:
生成並執行測試用例
配置完相關環境變數後,您就可以通過如下命令執行ST測試用例:
檢視執行結果
ST測試用例執行完後,您可以通過打屏資訊檢視用例執行結果,若下所示,共執行9個用例,9個用例全部執行成功。
開發者也可以檢視生成的報表“st_report.json”,此報表中記錄了測試結果及各階段的執行情況,ST測試用例執行異常時,可以基於此資訊進行問題定位。
至此,ST測試工具“msopst”的使用全流程已介紹完畢,您是否對此工具有了初步的認知呢?若您需要進行自定義運算元的開發,別忘了使用此工具進行運算元的ST測試噢~關於此工具的更多使用樣例,可參見昇騰社群中的《TBE自定義運算元開發指南》或《AI CPU自定義運算元開發指南》。 ( https://www.hiascend.com/document?tag=community-developer )
昇騰CANN文件中心致力於為開發者提供更優質的內容和更便捷的開發體驗,助力CANN開發者共建AI生態。任何意見和建議都可以在昇騰社群反饋,您的每一份關注都是我們前進的動力。
- 設計模式之狀態模式
- 如何實現資料庫讀一致性
- 我是怎麼入行做風控的
- C 11精要:部分語言特性
- 吳恩達來信:人工智慧領域的求職小 tips
- EasyCV帶你復現更好更快的自監督演算法-FastConvMAE
- 某車聯網App 通訊協議加密分析(四) Trace Code
- 帶你瞭解CANN的目標檢測與識別一站式方案
- EasyNLP玩轉文字摘要(新聞標題)生成
- PostgreSQL邏輯複製解密
- 基於 CoreDNS 和 K8s 構建雲原生場景下的企業級 DNS
- 迴圈神經網路(RNN)可是在語音識別、自然語言處理等其他領域中引起了變革!
- 技術分享| 分散式系統中服務註冊發現元件的原理及比較
- 利用谷歌地圖採集外貿客戶的電話和手機號碼
- 跟我學Python影象處理丨關於影象金字塔的影象向下取樣和向上取樣
- 帶你掌握如何使用CANN 運算元ST測試工具msopst
- 一招教你如何高效批量匯入與更新資料
- 一步步搞懂MySQL元資料鎖(MDL)
- 你知道如何用 PHP 實現多程序嗎?
- KubeSphere 閘道器的設計與實現(解讀)