本發(fā)明涉及人工智能,尤其涉及一種模擬計(jì)算方法、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著人工智能技術(shù)的飛速發(fā)展,人工智能芯片作為其核心驅(qū)動(dòng)力之一,在模型訓(xùn)練與推理過(guò)程中扮演著至關(guān)重要的角色。
2、為了提升計(jì)算效率并降低成本,當(dāng)前市場(chǎng)上的人工智能芯片普遍支持低精度浮點(diǎn)數(shù)計(jì)算(如fp8、fp16和fp32),并不支持高精度浮點(diǎn)數(shù)計(jì)算(如fp64)。這種設(shè)計(jì)策略顯著提升了計(jì)算速度,并降低了功耗和硬件成本,尤其適用于大規(guī)模數(shù)據(jù)處理和實(shí)時(shí)應(yīng)用場(chǎng)景。
3、由于不支持高精度浮點(diǎn)數(shù)計(jì)算,需要通過(guò)高精度計(jì)算實(shí)現(xiàn)的應(yīng)用無(wú)法在人工智能芯片上落地,這限制了人工智能模型的精度和人工智能芯片的應(yīng)用范疇。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供一種模擬計(jì)算方法、設(shè)備及存儲(chǔ)介質(zhì),用以解決相關(guān)技術(shù)中人工智能芯片不支持高精度計(jì)算的缺陷。
2、本發(fā)明提供一種模擬計(jì)算方法,包括:
3、獲取用于高精度計(jì)算的兩個(gè)原始數(shù)值;
4、在所述原始數(shù)值為高精度數(shù)值的情況下,將所述高精度數(shù)值轉(zhuǎn)換為兩個(gè)低精度數(shù)值,并將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),每個(gè)計(jì)算項(xiàng)由兩個(gè)低精度數(shù)值參與實(shí)現(xiàn);
5、對(duì)每個(gè)計(jì)算項(xiàng)進(jìn)行計(jì)算,得到每個(gè)計(jì)算項(xiàng)的近似值和誤差值;
6、基于每個(gè)計(jì)算項(xiàng)的近似值和誤差值,確定模擬所述高精度計(jì)算的計(jì)算結(jié)果。
7、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,所述將所述高精度數(shù)值轉(zhuǎn)換為兩個(gè)低精度數(shù)值,包括:
8、將所述高精度數(shù)值進(jìn)行精度降低處理,得到第一低精度數(shù)值,將所述高精度數(shù)值與所述一個(gè)低精度數(shù)值之間的差值作為第二低精度數(shù)值。
9、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,在所述高精度計(jì)算為兩個(gè)高精度數(shù)值的加法的情況下,所述將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),包括:
10、將所述兩個(gè)高精度數(shù)值的加法拆分為四個(gè)順序執(zhí)行的計(jì)算項(xiàng);
11、所述四個(gè)順序執(zhí)行的計(jì)算項(xiàng)包括將兩個(gè)高精度數(shù)值各自的第一低精度數(shù)值相加得到第一數(shù)值,將兩個(gè)高精度數(shù)值各自的第二低精度數(shù)值相加得到第二數(shù)值、并將所述第一數(shù)值的第二低精度數(shù)值更新為所述第一數(shù)值的第二低精度數(shù)值和所述第二數(shù)值的第一低精度數(shù)值之和,將所述第一數(shù)值的第一低精度數(shù)值和所述第一數(shù)值的第二低精度數(shù)值相加得到更新后的第一數(shù)值、并將所述第一數(shù)值的第二低精度數(shù)值更新為所述第一數(shù)值的第二低精度數(shù)值和所述第二數(shù)值的第二低精度數(shù)值之和,將更新后的第一數(shù)值的第一低精度數(shù)值和更新后的第一數(shù)值的第二低精度數(shù)值相加。
12、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,在所述高精度計(jì)算為兩個(gè)高精度數(shù)值的乘法的情況下,所述將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),包括:
13、將所述兩個(gè)高精度數(shù)值的乘法拆分為三個(gè)計(jì)算項(xiàng)之和;
14、所述三個(gè)計(jì)算項(xiàng)包括將所述兩個(gè)高精度數(shù)值各自的第一低精度數(shù)值相乘,將一個(gè)高精度數(shù)值的第一低精度數(shù)值與另一個(gè)高精度數(shù)值的第二低精度數(shù)值相乘,將另一個(gè)高精度數(shù)值的第二低精度與另一個(gè)高精度數(shù)值的第一低精度數(shù)值相乘。
15、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,在所述高精度計(jì)算為兩個(gè)高精度數(shù)值的除法的情況下,所述將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),包括:
16、將所述兩個(gè)高精度數(shù)值的除法拆分為五個(gè)順序執(zhí)行的計(jì)算項(xiàng);
17、所述五個(gè)順序執(zhí)行的計(jì)算項(xiàng)包括將兩個(gè)高精度數(shù)值各自的第一低精度數(shù)值相除得到第一數(shù)值,將一個(gè)高精度數(shù)值與所述第一數(shù)值相乘得到第二數(shù)值,將另一個(gè)高精度數(shù)值與所述第二數(shù)值相減得到第三數(shù)值,將所述第三數(shù)值的第一低精度數(shù)值與所述一個(gè)高精度數(shù)值的第一低精度數(shù)值的倒數(shù)相乘得到第四數(shù)值,將兩個(gè)所述第一數(shù)值與所述第四數(shù)值相加。
18、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,在所述計(jì)算項(xiàng)包括加法的情況下,所述對(duì)每個(gè)計(jì)算項(xiàng)進(jìn)行計(jì)算,得到每個(gè)計(jì)算項(xiàng)的近似值和誤差值,包括:
19、將參與所述加法的兩個(gè)低精度數(shù)值相加,得到所述加法的近似值;
20、將所述加法的近似值,以及參與所述加法的兩個(gè)低精度數(shù)值,確定所述兩個(gè)低精度數(shù)值各自在所述加法中的參與值;
21、基于所述兩個(gè)低精度數(shù)值、以及所述兩個(gè)低精度數(shù)值各自在所述加法中的參與值,確定所述加法的誤差值。
22、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,在所述計(jì)算項(xiàng)包括乘法的情況下,所述對(duì)每個(gè)計(jì)算項(xiàng)進(jìn)行計(jì)算,得到每個(gè)計(jì)算項(xiàng)的近似值和誤差值,包括:
23、將參與所述乘法的兩個(gè)低精度數(shù)據(jù)分別拆分為高階項(xiàng)和低階項(xiàng);
24、將所述兩個(gè)低精度數(shù)據(jù)的高階項(xiàng)之積作為所述乘法的近似值;
25、將所述兩個(gè)低精度數(shù)據(jù)的高階項(xiàng)與低階項(xiàng)之積,以及所述兩個(gè)低精度數(shù)據(jù)的低階項(xiàng)之積,作為所述乘法的誤差值。
26、根據(jù)本發(fā)明提供的一種模擬計(jì)算方法,還包括:
27、在所述原始數(shù)值為低精度數(shù)據(jù)的情況下,將所述高精度計(jì)算作為所述計(jì)算項(xiàng)。
28、本發(fā)明提供一種模擬計(jì)算方法,包括:
29、接收計(jì)算指令,所述計(jì)算指令包括高精度計(jì)算、以及用于高精度計(jì)算的兩個(gè)原始數(shù)值;
30、在確定本地不支持所述高精度計(jì)算、且所述原始數(shù)值為高精度數(shù)值的情況下,將所述高精度數(shù)值轉(zhuǎn)換為兩個(gè)低精度數(shù)值,并將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),每個(gè)計(jì)算項(xiàng)由兩個(gè)低精度數(shù)值參與實(shí)現(xiàn);
31、對(duì)每個(gè)計(jì)算項(xiàng)進(jìn)行計(jì)算,得到每個(gè)計(jì)算項(xiàng)的近似值和誤差值;
32、基于每個(gè)計(jì)算項(xiàng)的近似值和誤差值,確定模擬所述高精度計(jì)算的計(jì)算結(jié)果。
33、本發(fā)明還提供一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如上述任一種所述模擬計(jì)算方法。
34、本發(fā)明還提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述任一種所述模擬計(jì)算方法。
35、本發(fā)明還提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述任一種所述模擬計(jì)算方法。
36、本發(fā)明提供的模擬計(jì)算方法、設(shè)備及存儲(chǔ)介質(zhì),可以將高精度數(shù)值轉(zhuǎn)換為兩個(gè)低精度數(shù)值,由此通過(guò)基于低精度數(shù)值的計(jì)算,模擬高精度計(jì)算。并且,在此過(guò)程中,計(jì)算每個(gè)計(jì)算項(xiàng)的近似值和誤差值,以近似值和誤差值模擬高精度計(jì)算的計(jì)算結(jié)果,進(jìn)一步提高模擬計(jì)算的計(jì)算精度,進(jìn)而在不增加硬件成本的前提下通過(guò)模擬計(jì)算的方式得到更高精度的計(jì)算結(jié)果,有效擴(kuò)展了人工智能芯片所支持的精度范圍。
1.一種模擬計(jì)算方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的模擬計(jì)算方法,其特征在于,所述將所述高精度數(shù)值轉(zhuǎn)換為兩個(gè)低精度數(shù)值,包括:
3.根據(jù)權(quán)利要求2所述的模擬計(jì)算方法,其特征在于,在所述高精度計(jì)算為兩個(gè)高精度數(shù)值的加法的情況下,所述將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),包括:
4.根據(jù)權(quán)利要求2所述的模擬計(jì)算方法,其特征在于,在所述高精度計(jì)算為兩個(gè)高精度數(shù)值的乘法的情況下,所述將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),包括:
5.根據(jù)權(quán)利要求2所述的模擬計(jì)算方法,其特征在于,在所述高精度計(jì)算為兩個(gè)高精度數(shù)值的除法的情況下,所述將所述高精度計(jì)算拆分為至少兩個(gè)計(jì)算項(xiàng),包括:
6.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的模擬計(jì)算方法,其特征在于,在所述計(jì)算項(xiàng)包括加法的情況下,所述對(duì)每個(gè)計(jì)算項(xiàng)進(jìn)行計(jì)算,得到每個(gè)計(jì)算項(xiàng)的近似值和誤差值,包括:
7.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的模擬計(jì)算方法,其特征在于,在所述計(jì)算項(xiàng)包括乘法的情況下,所述對(duì)每個(gè)計(jì)算項(xiàng)進(jìn)行計(jì)算,得到每個(gè)計(jì)算項(xiàng)的近似值和誤差值,包括:
8.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的模擬計(jì)算方法,其特征在于,還包括:
9.一種模擬計(jì)算方法,其特征在于,包括:
10.一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,其特征在于,所述處理器執(zhí)行所述程序時(shí)實(shí)現(xiàn)如權(quán)利要求1至9任一項(xiàng)所述模擬計(jì)算方法。
11.一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1至9任一項(xiàng)所述模擬計(jì)算方法。