System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本公開涉及數據處理,特別是涉及一種內存分配方法、裝置、計算機設備、存儲介質。
技術介紹
1、隨著人工智能技術的不斷發展,計算模型被部署在如智能手機、平板電腦等電子設備上,用于增強電子設備的各種不同方面的處理能力。
2、然而,計算模型在推理時資源是有限的,既需要提升推理的效率,又需要節省內存空間的占用。
3、在這種情況下,往往是通過靜態內存分配的方式將推理過程中各個算子的內存占用提前規劃分配好,避免在實際計算推理時重復地去申請釋放內存,從而提升效率,但此時如何規劃內存使得節約內存資源是一個很大的問題。
技術實現思路
1、基于此,有必要針對上述技術問題,提供一種內存分配方法、裝置、計算機設備、存儲介質。
2、第一方面,本公開提供了一種內存分配方法。所述方法包括:
3、獲取目標模型,確定基于所述目標模型的拓撲結構中產生的每個張量的張量信息,所述張量信息中包括使用周期,所述使用周期用于指示所述張量的輸入算子和輸出算子;
4、根據所述每個張量的張量信息和所述目標模型的拓撲結構,確定所述拓撲結構中含有的算子的算子信息,其中,每個算子至少與一個張量相匹配;
5、根據所述算子信息,對所述算子進行排序,根據所述算子的排序結果,與所述算子相匹配的一個張量,確定每個所述張量的優先級;
6、響應于按照所述張量的優先級,確定所述張量中存在未進行內存分配的張量,至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算
7、在其中一個實施例中,所述輸入算子和輸出算子的類型包括:支持運行推理加速的算子;所述至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配,包括:
8、響應于所述輸入算子的類型為支持運行推理加速的算子,按照預先設置的分配內存對所述未進行內存分配的張量進行內存分配;
9、響應于所述輸入算子的類型不為支持運行推理加速的算子,且所述輸出算子的類型為支持運行推理加速的算子,按照所述輸出算子的第一輸入內存對所述未進行內存分配的張量進行內存分配。
10、在其中一個實施例中,所述至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配,還包括:
11、響應于所述輸入算子的類型不為支持運行推理加速的算子,且所述輸出算子的類型不為支持運行推理加速的算子,確定所述輸入算子和所述輸出算子的算子特性;
12、響應于所述算子特性支持原地操作,確定支持原地操作的算子的第二輸入內存;
13、在所述第二輸入內存不存在沖突的情況下,按照所述第二輸入內存對所述未進行內存分配的張量進行內存分配。
14、在其中一個實施例中,所述方法還包括:
15、在所述第二輸入內存存在沖突,且內存的緩存池中存在復用內存區域的情況下,確定使用每個所述復用存儲區域中的張量的張量信息;
16、根據使用每個所述復用存儲區域的張量的張量信息與所述未進行內存分配的張量的張量信息,確定目標張量;
17、根據所述目標張量使用的復用存儲區域,對所述未進行內存分配的張量進行內存分配。
18、在其中一個實施例中,所述張量信息還包括:尺寸信息;所述根據使用每個所述復用存儲區域的張量的張量信息與所述未進行內存分配的張量的張量信息,確定目標張量,包括:
19、確定使用所述復用存儲區域的張量中,尺寸信息大于所述未進行內存分配的張量的尺寸信息的第一張量;
20、根據所述第一張量的尺寸信息與所述未進行內存分配的張量的尺寸信息之間的尺寸差值,確定所述第一張量中的目標張量。
21、在其中一個實施例中,所述根據使用每個所述復用存儲區域的張量的張量信息與所述未進行內存分配的張量的張量信息,確定目標張量,包括:
22、根據使用所述復用存儲區域的張量的使用周期和所述未進行內存分配的張量的使用周期,確定使用所述復用存儲區域的張量和未進行內存分配的張量之間的使用周期差值;
23、響應于產生最小的所述使用周期差值的張量的使用周期與所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子均不相同,根據產生最小的所述使用周期差值的張量,確定目標張量;
24、響應于產生最小的所述使用周期差值的張量的使用周期與所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子中任一存在相同,按照所述使用周期差值的大小,直至確定出使用周期與所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子均不相同的目標使用周期,根據所述目標使用周期所對應的張量,確定目標張量。
25、第二方面,本公開還提供了一種內存分配裝置。所述裝置包括:
26、張量信息確定模塊,用于獲取目標模型,確定基于所述目標模型的拓撲結構中產生的每個張量的張量信息,所述張量信息中包括使用周期,所述使用周期用于指示所述張量的輸入算子和輸出算子;
27、算子信息確定模塊,用于根據所述每個張量的張量信息和所述目標模型的拓撲結構,確定所述拓撲結構中含有的算子的算子信息,其中,每個算子至少與一個張量相匹配;
28、優先級確定模塊,用于根據所述算子信息,對所述算子進行排序,根據所述算子的排序結果,與所述算子相匹配的一個張量,確定每個所述張量的優先級;
29、內存分配模塊,用于響應于按照所述張量的優先級,確定所述張量中存在未進行內存分配的張量,至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配。
30、第三方面,本公開還提供了一種計算機設備。所述計算機設備包括存儲器和處理器,所述存儲器存儲有計算機程序,所述處理器執行所述計算機程序時實現上述任一方法實施例中的步驟。
31、第四方面,本公開還提供了一種計算機可讀存儲介質。所述計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執行時實現上述任一方法實施例中的步驟。
32、第五方面,本公開還提供了一種計算機程序產品。所述計算機程序產品,包括計算機程序,該計算機程序被處理器執行時實現上述任一方法實施例中的步驟。
33、上述各實施例中,由于需要對目標模型的推理過程進行合理的分配內存,而目標模型在推理時會根據其拓撲結構產生不同的張量,因此可以確定目標模型拓撲結構中產生的每個張量的張量信息。由于目標模型產生張量是算子產生的,因此還可以根據張量信息和拓撲結構確定算子信息。為了能夠合理的對張量進行內存分配,可以按照算子信息對算子進行排序,進而再按照與算子匹配的張量,確定每個張量的優先級,后續可以按照優先級進行內存分配,保證內存復用的效果。最后可以對至少根據未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對未進行內存分本文檔來自技高網...
【技術保護點】
1.一種內存分配方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述輸入算子和輸出算子的類型包括:支持運行推理加速的算子;所述至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配,包括:
3.根據權利要求2所述的方法,其特征在于,所述至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配,還包括:
4.根據權利要求3所述的方法,其特征在于,所述方法還包括:
5.根據權利要求4所述的方法,其特征在于,所述張量信息還包括:尺寸信息;所述根據使用每個所述復用存儲區域的張量的張量信息與所述未進行內存分配的張量的張量信息,確定目標張量,包括:
6.根據權利要求4所述的方法,其特征在于,所述根據使用每個所述復用存儲區域的張量的張量信息與所述未進行內存分配的張量的張量信息,確定目標張量,包括:
7.一種內存分配裝置,其特征在于,所述裝置包括:
8.一種計算機設備,包括存儲器和
9.一種計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現權利要求1至6中任一項所述的方法的步驟。
10.一種計算機程序產品,包括計算機程序,其特征在于,該計算機程序被處理器執行時實現權利要求1至6中任一項所述的方法的步驟。
...【技術特征摘要】
1.一種內存分配方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述輸入算子和輸出算子的類型包括:支持運行推理加速的算子;所述至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配,包括:
3.根據權利要求2所述的方法,其特征在于,所述至少根據所述未進行內存分配的張量的使用周期所指示的輸入算子和輸出算子,對所述未進行內存分配的張量進行內存分配,還包括:
4.根據權利要求3所述的方法,其特征在于,所述方法還包括:
5.根據權利要求4所述的方法,其特征在于,所述張量信息還包括:尺寸信息;所述根據使用每個所述復用存儲區域的張量的張量信息與所述未進行內存分配的張量的張量信息...
【專利技術屬性】
技術研發人員:王雨順,鄭成林,于謙,梁爽,
申請(專利權)人:北京超星未來科技有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。