本發明屬于深度學習框架領域,具體涉及一種深度學習框架間模型代碼轉換方法和系統。
背景技術:
1、人工智能是新一輪科技革命和產業變革的重要驅動力量,正在引領全球經濟發展。其中,深度學習框架是新一輪人工智能跨越發展的核心引擎,也是構建人工智能全棧生態的關鍵。
2、各種深度學習框架種類繁多、接口多樣,生態環境復雜。一方面,各種框架間的異構設計難以形成協同發展、群智服務的良好態勢,造成了一個個深度學習框架的生態孤島,給深度學習框架技術進步、協同發展、應用深化帶來了巨大的挑戰。現階段我國相關算法和創新型應用多以國外底層軟硬件平臺構建,自主產業生態薄弱,特別是國產廠商技術路線多樣,自主深度學習框架應用不夠豐富,相互間的兼容適配水平較差,缺乏有效的互操作性與互聯互通機制,嚴重制約了我國自主技術生態體系的構建。
3、mindspore是由華為于2019年8月推出的新一代全場景ai計算框架,mindspore外的其他深度學習框架下的模型并不能直接在昇騰處理器上進行訓練,為了充分利用昇騰處理器的算力來提升訓練性能,研究人員需要將源模型進行遷移,使遷移后的模型能夠高效運行在昇騰處理器上。
4、百度發布的飛槳生態下的模型轉換工具x2paddle進行代碼轉換需要開發者手動進行轉換前的代碼預處理以及轉換后的代碼后處理,并且遷移的大部分框架的預測模型僅可用于推理部署,如果還需要再進行訓練,則不能使用此方法。微軟開源的一款用于流行深度學習框架的模型轉換工具mmdnn只支持模型級別的轉換,而不支持代碼級別的轉換,開發人員無法針對目標框架下的模型進行自定義的修改和再訓練。華為推出的mindspore生態下的模型遷移工具mindconverter只支持單向遷移,且局限于將pytorch或tensorflow模型遷移成mindspore下的模型。
5、因此,尋求一種實現不同深度學習框架間模型代碼自動轉換的方法,是解決上述問題,凝聚深度學習框架的群智力量,推動我國自主深度學習框架快速發展,打造自主可控、持續發展的人工智能產業協同發展的必經之路。
技術實現思路
1、本發明的目的在于提出一種深度學習框架間模型代碼轉換方法和系統,可以可靠地對不同深度學習框架下的模型代碼進行轉換。
2、根據本發明第一方面,提供一種深度學習框架間模型代碼轉換方法,包括:從深度學習框架間的代碼轉換出發,確定算子知識圖譜的數據模型,存儲不同深度學習框架之間的算子及其參數的對應關系,以形成算子知識圖譜;在抽象語法樹改寫模塊中,利用詞法分析器對源深度學習框架搭建的神經網絡模型代碼進行詞法分析,將所有的字符串分割成若干標記;利用語法分析器通過語法分析將上述標記按照語法規則組成語句和表達式,從而構建出一棵完整的抽象語法樹;在抽象語法樹改寫模塊中,使用代碼依賴信息生成器解析神經網絡模型代碼中的導入模塊代碼,據此構建出通用依賴信息,其中導入模塊代碼用于導入神經網絡模型代碼所依賴的模塊,包括導入整個模塊、從模塊中導入特定的子模塊或算子,模塊包括函數定義模塊、類定義模塊、賦值語句模塊和函數調用模塊;抽象語法樹改寫器構建出特定算子信息來存儲算子的賦值名稱、算子的別名以及位置和縮進上下文信息;將以上構建的特定算子信息輸入算子知識圖譜的查詢腳本中,以使得算子知識圖譜根據上述信息進行查詢操作,并最終輸出對應的目標深度學習框架下的算子,生成算子映射關系;利用以上構建的特定算子信息并基于輔助映射轉換規則得到輔助映射信息,其中輔助映射信息是利用代碼的反射機制得到的算子及其特殊參數值;抽象語法樹改寫器逐級遍歷以上生成的源框架下的抽象語法樹,自頂向下改寫算法,以生成目標框架下的抽象語法樹;抽象語法樹解析模塊遍歷目標框架下的抽象語法樹中的每個節點,并根據存儲的算子位置及其縮進信息來組裝代碼結構,最終生成目標框架下的模型代碼。
3、在上述深度學習框架間模型代碼轉換方法中,數據模型包括:深度學習框架節點、深度學習框架類節點、深度學習框架內的算子節點、算子的參數節點和算子的輸入值節點。
4、在上述深度學習框架間模型代碼轉換方法中,所述的存儲不同深度學習框架之間的算子及其參數的對應關系中,所述對應關系包括:深度學習框架名稱節點與類節點間的關系、深度學習框架類節點與算子節點間的關系、算子節點與參數節點間的關系、不同深度學習框架間算子的關系、不同算子間參數的關系。
5、在上述深度學習框架間模型代碼轉換方法中,形成算子知識圖譜的過程包括:根據所述算子知識圖譜的數據模型生成對應的cypher語句,編寫自動化腳本,通過爬蟲程序解析提取出算子信息,將其存儲到neo4j中,形成算子知識圖譜。
6、在上述深度學習框架間模型代碼轉換方法中,所述算子信息包括:算子所屬的深度學習框架名稱、算子名稱、算子的完整調用路徑、深度學習框架版本和算子的參數信息。
7、根據本發明另一方面,提供一種深度學習框架間模型代碼轉換系統,包括:前端,用于基于vue3框架進行頁面的展示,并與用戶及后端進行數據交互;后端,用于一方面負責接收前端的請求并執行業務邏輯,另一方面與算法端交互以調用核心算法,所述核心算法包括:注冊登錄、遷移頁面管理、代碼遷移和生成遷移細節;算法端,用于接收來自后端的請求,執行以上深度學習框架間模型代碼轉換方法。
8、本發明與現有技術相比,其顯著優點為:本發明采取知識與代碼相分離的思想,將算子間映射關系存入算子知識圖譜中,降低了遷移算法與映射信息之間的耦合性,提高了存儲算子信息的靈活性以及查詢效率。本發明通過自頂向下的改寫算法,逐級遍歷抽象語法樹,并根據抽取的通用依賴信息和特定算子信息在算子知識圖譜中獲取目標算子信息,針對性地對抽象語法樹進行改寫,最終生成目標框架下的模型代碼,同時也保證了轉換的精度與可靠性。
1.一種深度學習框架間模型代碼轉換方法,其特征在于,包括:
2.根據權利要求1所述的深度學習框架間模型代碼轉換方法,其特征在于,所述數據模型包括:深度學習框架節點、深度學習框架類節點、深度學習框架內的算子節點、算子的參數節點和算子的輸入值節點。
3.根據權利要求1所述的深度學習框架間模型代碼轉換方法,其特征在于,
4.根據權利要求1所述的深度學習框架間模型代碼轉換方法,其特征在于,
5.根據權利要求4所述的深度學習框架間模型代碼轉換方法,其特征在于,
6.一種深度學習框架間模型代碼轉換系統,其特征在于,包括: