[發明專利]一種基于TVM的中間表示和數據生成方法在審
| 申請號: | 202210905834.1 | 申請日: | 2022-07-29 |
| 公開(公告)號: | CN115145588A | 公開(公告)日: | 2022-10-04 |
| 發明(設計)人: | 石皓冰;黃萍;王皓 | 申請(專利權)人: | 北極雄芯信息科技(西安)有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06N3/04;G06K9/62 |
| 代理公司: | 西安弘理專利事務所 61214 | 代理人: | 王敏強 |
| 地址: | 710000 陜西省西安市高新區天*** | 國省代碼: | 陜西;61 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 tvm 中間 表示 數據 生成 方法 | ||
1.一種基于TVM的中間表示和數據生成方法,其特征在于,具體按照以下步驟實施:
步驟1、構建TVM計算圖;
步驟2、獲得TVMdebugger數據;
步驟3、生成自定義IR和數據。
2.根據權利要求1所述的一種基于TVM的中間表示和數據生成方法,其特征在于,所述步驟1具體如下:
深度學習編譯器的輸入是量化后的神經網絡模型,格式為主流深度學習框架的其中一種,當主流深度學習框架為pytorch時,輸入為pth格式的網絡模型文件和numpy格式的模型輸入數據,TVM框架的frontend模塊中提供各種主流深度學習框架到統一計算圖的轉換接口,根據神經網絡模型類型,調用相應的接口函數,輸出為mod和params,其中,mod為神經網絡模型轉換的統一計算圖,以txt格式保存,params是神經網絡模型的參數數據,以字典的格式保存;TVM生成計算圖mod,其中第一行包含模型輸入和參數的維度和數據類型,其余行對應單個算子或運算操作,包含算子的名稱和屬性。
3.根據權利要求2所述的一種基于TVM的中間表示和數據生成方法,其特征在于,所述步驟2具體如下:
TVM debugger作為用于調試TVM計算圖執行的接口,在TVM運行時提供對圖結構和張量值的訪問,通過配置opt_level設置優化級別,優化級別從低到高分別為0~4,Pass作為TVM中基于Relay IR進行的一系列優化函數,用來簡化計算圖,去除一些冗余的算子,每個pass有相應的優化級別屬性,如果pass對應的優化級別高于opt_level的值,則不執行該pass,即不對IR進行相應的優化;輸入所述步驟1TVM生成的模型參數params、計算圖mod,首先基于TVM對網絡模型進行編譯和代碼生成,然后基于TVM debugger工具獲取json格式表示的優化后的計算圖_tvmdbg_graph_dump.json以及模型執行后生成的相關參數和激活數據output_tensors.params,以序列化格式保存為二進制,通過load_param_dict加載為字典格式,其中單個張量類型為tvm.ndarray,通過relay構建的優化后的計算圖保持在_tvmdbg_graph_dump.json中,包含有關graph的全部信息,包括nodes,arg_nodes,heads,node_row_ptr,attrs信息,保存為json序列化格式,其中nodes是json中的占位符或計算節點,以列表的形式進行存儲,單個節點包含算子類型、節點名稱、算子輸入、屬性、輸入數、輸出數相關信息。
4.根據權利要求3所述的一種基于TVM的中間表示和數據生成方法,其特征在于,所述步驟3具體如下:
1)算子類型包括dense,add,nn_conv2d,nn_relu,nn_bias_add,nn_max_pool2d,nn_avg_pool2d,concatenate,transpose,將Graph JSON中除param以外的算子按照算子名稱進行分類,然后保存在字典data_list中;
2)讀取TVM計算圖的第一行,獲取模型參數名稱和參數大小,保存在shape_dtype_dict中;
3)逐行解析TVM計算圖,進行算子融合、清理和優化,獲取算子相關屬性和依賴關系并保存到自定義IR中,自定義IR表示網絡各層算子的屬性、文件列表、量化參數和數據類型信息,采用json輕量級文件格式,內容為python字典結構;
網絡模型經過量化工具進行量化時,根據不同的精度要求和硬件后端的不同,采用不同的量化方法,融合txt中量化相關的行時,針對不同的量化方法給出不同的融合方案。
5.根據權利要求4所述的一種基于TVM的中間表示和數據生成方法,其特征在于,所述步驟3中算子解析的過程中,根據模型參數出現的順序,確定參數在TVMGRAPH JSON中對應的op_name(p*),根據op_name在TVM outputs數據中獲取模型參數,以npy的格式保存在parameters目錄下。
6.根據權利要求5所述的一種基于TVM的中間表示和數據生成方法,其特征在于,所述步驟1中生成的計算圖中算子和Graph JSON中算子的映射關系的建立,具體如下:
根據算子類型和inputs在data_list字典中確定相應算子的節點名稱,根據節點名稱在TVM outputs數據中獲取算子輸入輸出激活數據,以npy的格式保存在activations目錄下。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北極雄芯信息科技(西安)有限公司,未經北極雄芯信息科技(西安)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210905834.1/1.html,轉載請聲明來源鉆瓜專利網。





