本技術(shù)涉及深度學(xué)習(xí)領(lǐng)域,特別是涉及一種深度學(xué)習(xí)算法的運(yùn)行與生成方法、裝置。
背景技術(shù):
1、在深度學(xué)習(xí)領(lǐng)域,深度學(xué)習(xí)框架可以用于模型訓(xùn)練或模型推理。目前深度學(xué)習(xí)框架主要有tensorflow、caffe、theano、mxnet、torch和pytorch,為了實(shí)現(xiàn)深度學(xué)習(xí)框架中涉及的算法,相關(guān)技術(shù)中需要建立包含各種算子的運(yùn)行時(shí)庫,通過調(diào)用運(yùn)行時(shí)庫中的算子實(shí)現(xiàn)這些算法。但是根據(jù)應(yīng)用場景的不同,算法中包括的算子往往不同,且難以預(yù)先知悉算法中包括何種算子,因此,為盡可能使得運(yùn)行時(shí)庫中包含算法所涉及的各算子,需要在運(yùn)行時(shí)庫中預(yù)先加載大量的算子,而加載算子需要占用一定量的系統(tǒng)資源。
2、而在一些邊緣設(shè)備或端側(cè)設(shè)備的系統(tǒng)資源往往有限,無法在運(yùn)行時(shí)庫中預(yù)先加載大量的算子,進(jìn)而導(dǎo)致無法通過調(diào)用運(yùn)行時(shí)庫中的算子實(shí)現(xiàn)這些算法,即這些算法無法在這些設(shè)備上實(shí)現(xiàn)。因此,如何在能力有限的設(shè)備上實(shí)現(xiàn)對(duì)深度學(xué)習(xí)算法的運(yùn)行成為了本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例的目的在于提供一種深度學(xué)習(xí)算法的運(yùn)行方法,以使得在能力有限的設(shè)備上實(shí)現(xiàn)對(duì)深度學(xué)習(xí)算法的運(yùn)行。
2、第一方面,本技術(shù)實(shí)施例提供了一種深度學(xué)習(xí)算法的運(yùn)行方法,應(yīng)用于算法模型運(yùn)行端,所述方法包括:
3、接收算法模型生成端發(fā)送的目標(biāo)算法的算法模型文件;
4、當(dāng)所述算法模型文件為能夠被所述算法模型運(yùn)行端運(yùn)行的可執(zhí)行文件時(shí),基于所述可執(zhí)行文件,實(shí)現(xiàn)所述目標(biāo)算法。
5、在一種可能的實(shí)施方式中,所述算法模型文件中包括所述目標(biāo)算法的算法模型、算子實(shí)現(xiàn)方式以及算子與所述算子實(shí)現(xiàn)方式的對(duì)應(yīng)關(guān)系,所述算子實(shí)現(xiàn)方式中包括運(yùn)行所述算法模型涉及的算子的實(shí)現(xiàn)方式;
6、所述方法還包括:
7、根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟;
8、針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式;
9、根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟。
10、在一種可能的實(shí)施方式中,所述根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟,包括:
11、根據(jù)所述算法模型確定正向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟;
12、所述根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟,包括:
13、根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)待推理數(shù)據(jù)實(shí)現(xiàn)各所述計(jì)算步驟,得到所述待推理數(shù)據(jù)的推理結(jié)果。
14、在一種可能的實(shí)施方式中,所述目標(biāo)算法為待訓(xùn)練算法,所述根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟,包括:
15、根據(jù)所述算法模型確定反向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟;
16、所述根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟,包括:
17、根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)誤差實(shí)現(xiàn)各所述計(jì)算步驟,得到目標(biāo)算法中各模型參數(shù)的調(diào)整方式;所述誤差為所述目標(biāo)算法輸出的所述推理結(jié)果與真值之間的差值;
18、按照所述調(diào)整方式調(diào)整所述目標(biāo)算法的各所述模型參數(shù)。
19、在一種可能的實(shí)施方式中,所述算法模型文件為包括所述目標(biāo)算法的算法模型結(jié)構(gòu)、模型參數(shù)、以及運(yùn)行所述算法模型時(shí)涉及的算子庫的文件;
20、或,
21、所述算法模型文件為將所述算法模型、運(yùn)行所述算法模型時(shí)涉及的算子編譯成指令序列后,基于指令序列生成的可執(zhí)行文件。
22、第二方面,本技術(shù)實(shí)施例提供了一種深度學(xué)習(xí)算法框架的生成方法,應(yīng)用于算法模型生成端,所述方法包括:
23、生成目標(biāo)算法的算法模型文件;
24、將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端在所述算法模型文件為能夠被所述算法模型運(yùn)行端運(yùn)行的可執(zhí)行文件時(shí),基于所述可執(zhí)行文件,實(shí)現(xiàn)所述目標(biāo)算法。
25、在一種可能的實(shí)施方式中,所述算法模型文件中包括所述目標(biāo)算法的算法模型、算子實(shí)現(xiàn)方式以及所述算子與所述算子實(shí)現(xiàn)方式的對(duì)應(yīng)關(guān)系,所述算子實(shí)現(xiàn)方式中包括運(yùn)行所述算法模型涉及的算子的實(shí)現(xiàn)方式;
26、所述將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端基于所述算法模型文件所表征的所述實(shí)現(xiàn)方式,實(shí)現(xiàn)所述目標(biāo)算法,包括:
27、將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟。
28、在一種可能的實(shí)施方式中,所述算子包括正向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟所涉及的算子;
29、所述將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟,包括:
30、將所述算法模型、所述算子實(shí)現(xiàn)方式以及所述對(duì)應(yīng)關(guān)系發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定正向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)待推理數(shù)據(jù)實(shí)現(xiàn)各所述計(jì)算步驟,得到所述待推理數(shù)據(jù)的推理結(jié)果。
31、在一種可能的實(shí)施方式中,所述算子還包括反向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟所涉及的算子;
32、所述將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟,包括:
33、將所述算法模型、所述算子實(shí)現(xiàn)方式以及所述對(duì)應(yīng)關(guān)系發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定反向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)誤差實(shí)現(xiàn)各所述計(jì)算步驟,得到目標(biāo)算法中各模型參數(shù)的調(diào)整方式,所述誤差為所述目標(biāo)算法輸出的推理結(jié)果與真值之間的差異;按照所述調(diào)整方式調(diào)整所述目標(biāo)算法的各所述模型參數(shù)。
34、在一種可能的實(shí)施方式中,所述算法模型文件為包括所述目標(biāo)算法的算法模型結(jié)構(gòu)、模型參數(shù)、以及運(yùn)行所述算法模型時(shí)涉及的算子庫的文件;
35、或,
36、所述算法模型文件為將所述算法模型、運(yùn)行所述算法模型時(shí)涉及的算子編譯成指令序列后,基于指令序列生成的可執(zhí)行文件。
37、第三方面,本技術(shù)實(shí)施例提供了一種深度學(xué)習(xí)算法的運(yùn)行裝置,應(yīng)用于算法模型運(yùn)行端,所述裝置包括:
38、接收模塊,用于接收算法模型生成端發(fā)送的目標(biāo)算法的算法模型文件;
39、算法實(shí)現(xiàn)模塊,用于當(dāng)所述算法模型文件為能夠被所述算法模型運(yùn)行端運(yùn)行的可執(zhí)行文件時(shí),基于所述可執(zhí)行文件,實(shí)現(xiàn)所述目標(biāo)算法;
40、在一種可能的實(shí)施方式中,所述算法模型文件中包括所述目標(biāo)算法的算法模型、算子實(shí)現(xiàn)方式以及所述算子與所述算子實(shí)現(xiàn)方式的對(duì)應(yīng)關(guān)系,所述算子實(shí)現(xiàn)方式中包括運(yùn)行所述算法模型涉及的算子的實(shí)現(xiàn)方式;所述裝置還包括:
41、步驟確定模塊,用于根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟;
42、實(shí)現(xiàn)方式確定模塊,用于針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式;
43、步驟實(shí)現(xiàn)模塊,用于根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟;
44、在一種可能的實(shí)施方式中,所述步驟確定模塊包括:
45、正向?qū)崿F(xiàn)步驟確定子模塊,用于根據(jù)所述算法模型確定正向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟;
46、所述步驟實(shí)現(xiàn)模塊,具體用于根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)待推理數(shù)據(jù)實(shí)現(xiàn)各所述計(jì)算步驟,得到所述待推理數(shù)據(jù)的推理結(jié)果;
47、在一種可能的實(shí)施方式中,所述算法模型為待訓(xùn)練算法,所述步驟確定模塊還包括:
48、反向?qū)崿F(xiàn)步驟確定子模塊,用于根據(jù)所述目標(biāo)算法確定反向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟;
49、所述步驟實(shí)現(xiàn)模塊,還用于根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)誤差實(shí)現(xiàn)各所述計(jì)算步驟,得到目標(biāo)算法中各模型參數(shù)的調(diào)整方式;所述誤差為所述目標(biāo)算法輸出的所述推理結(jié)果與真值之間的差值;按照所述調(diào)整方式調(diào)整所述目標(biāo)算法的各所述模型參數(shù)。
50、在一種可能的實(shí)施方式中,所述算法模型文件為包括所述目標(biāo)算法的算法模型結(jié)構(gòu)、模型參數(shù)、以及運(yùn)行所述算法模型時(shí)涉及的算子庫的文件;
51、或,
52、所述算法模型文件為將所述算法模型、運(yùn)行所述算法模型時(shí)涉及的算子編譯成指令序列后,基于指令序列生成的可執(zhí)行文件
53、第四方面,本技術(shù)實(shí)施例提供了一種深度學(xué)習(xí)算法框架的生成裝置,應(yīng)用于算法模型生成端,所述裝置包括:
54、生成模塊,用于生成目標(biāo)算法的算法模型文件;
55、發(fā)送模塊,用于將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端在所述算法模型文件為能夠被所述算法模型運(yùn)行端運(yùn)行的可執(zhí)行文件時(shí),基于所述可執(zhí)行文件,實(shí)現(xiàn)所述目標(biāo)算法;
56、在一種可能的實(shí)施方式中,所述算法模型文件中包括所述目標(biāo)算法的算法模型、算子實(shí)現(xiàn)方式以及所述算子與所述算子實(shí)現(xiàn)方式的對(duì)應(yīng)關(guān)系,所述算子實(shí)現(xiàn)方式中包括運(yùn)行所述算法模型涉及的算子的實(shí)現(xiàn)方式;所述發(fā)送模塊,具體用于將所述算法模型文件發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定實(shí)現(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,實(shí)現(xiàn)各所述計(jì)算步驟;
57、在一種可能的實(shí)施方式中,所述算子包括正向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟所涉及的算子;
58、所述發(fā)送模塊,具體用于將所述算法模型、所述算子實(shí)現(xiàn)方式以及所述對(duì)應(yīng)關(guān)系發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定正向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)待推理數(shù)據(jù)實(shí)現(xiàn)各所述計(jì)算步驟,得到所述待推理數(shù)據(jù)的推理結(jié)果;
59、在一種可能的實(shí)施方式中,所述算子還包括反向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟所涉及的算子;
60、所述發(fā)送模塊,具體用于將所述算法模型、所述算子實(shí)現(xiàn)方式以及所述對(duì)應(yīng)關(guān)系發(fā)送至算法模型運(yùn)行端,以使得所述算法模型運(yùn)行端根據(jù)所述算法模型確定反向?qū)崿F(xiàn)所述目標(biāo)算法的各計(jì)算步驟,針對(duì)每個(gè)所述計(jì)算步驟,根據(jù)所述對(duì)應(yīng)關(guān)系確定所述計(jì)算步驟所涉及的算子對(duì)應(yīng)的實(shí)現(xiàn)方式,根據(jù)確定得到的實(shí)現(xiàn)方式,針對(duì)誤差實(shí)現(xiàn)各所述計(jì)算步驟,得到目標(biāo)算法中各模型參數(shù)的調(diào)整方式,所述誤差為所述目標(biāo)算法輸出的所述推理結(jié)果與真值之間的差異;按照所述調(diào)整方式調(diào)整所述目標(biāo)算法的各所述模型參數(shù)。
61、在一種可能的實(shí)施方式中,所述算法模型文件為包括所述目標(biāo)算法的算法模型結(jié)構(gòu)、模型參數(shù)、以及運(yùn)行所述算法模型時(shí)涉及的算子庫的文件;
62、或,
63、所述算法模型文件為將所述算法模型、運(yùn)行所述算法模型時(shí)涉及的算子編譯成指令序列后,基于指令序列生成的可執(zhí)行文件
64、第五方面,本技術(shù)實(shí)施例提供了一種電子設(shè)備,包括:
65、存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
66、處理器,用于執(zhí)行存儲(chǔ)器上所存放的程序時(shí),實(shí)現(xiàn)本技術(shù)實(shí)施例中任一所述的深度學(xué)習(xí)算法的運(yùn)行方法。
67、第六方面,本技術(shù)實(shí)施例提供了一種電子設(shè)備,包括:
68、存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
69、處理器,用于執(zhí)行存儲(chǔ)器上所存放的程序時(shí),實(shí)現(xiàn)本技術(shù)實(shí)施例中任一所述的深度學(xué)習(xí)算法框架的生成方法。
70、第七方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)本技術(shù)中任一所述的深度學(xué)習(xí)算法的運(yùn)行方法。
71、第八方面,本技術(shù)實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)內(nèi)存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)本技術(shù)中任一所述的深度學(xué)習(xí)算法框架的生成方法。
72、本技術(shù)實(shí)施例提供的深度學(xué)習(xí)算法框架的生成方法,接收算法模型生成端發(fā)送算法模型文件,當(dāng)算法模型文件為能夠被算法模型運(yùn)行端運(yùn)行的可執(zhí)行文件時(shí),基于可執(zhí)行文件,實(shí)現(xiàn)目標(biāo)算法。這樣,相較于現(xiàn)有技術(shù)中設(shè)置運(yùn)行時(shí)庫,內(nèi)存體積較大,本技術(shù)通過預(yù)先接收算法模型生成端發(fā)送的能夠被算法模型運(yùn)行端運(yùn)行的算法模型文件,用戶端或邊緣端等能力有限的設(shè)備只需基于可執(zhí)行文件,就可以運(yùn)行算法模型,從而實(shí)現(xiàn)目標(biāo)算法,而無需從運(yùn)行時(shí)庫中獲取算子,因此無需設(shè)置運(yùn)行時(shí)庫,減少對(duì)用戶端或邊緣端等能力有限的設(shè)備的內(nèi)存的占用。
73、當(dāng)然,實(shí)施本技術(shù)的任一產(chǎn)品或方法并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。