本技術(shù)涉及計算機(jī),尤其涉及一種數(shù)據(jù)處理方法、裝置及相關(guān)設(shè)備。
背景技術(shù):
1、隨著信息技術(shù)的發(fā)展,應(yīng)用數(shù)據(jù)以及多媒體通信業(yè)務(wù)需求量極大增長,大量的數(shù)據(jù)需要在不同的設(shè)備之間通過網(wǎng)絡(luò)進(jìn)行傳輸或交互,例如高性能計算(high?performancecomputing,hpc)、人工智能(artificial?intelligence,ai)模型訓(xùn)練、多媒體數(shù)據(jù)傳輸?shù)葢?yīng)用中,為了提高計算效率,提高用戶體驗等,需要提高不同設(shè)備之間交互數(shù)據(jù)的效率,降低數(shù)據(jù)傳輸過程中的時延。而降低不同設(shè)備之間傳輸?shù)臄?shù)據(jù)量是提高數(shù)據(jù)交互效率,降低時延的一個有效途徑。因此如何降低不同設(shè)備之間交互的數(shù)據(jù)量是一個需要解決的技術(shù)問題。
技術(shù)實現(xiàn)思路
1、本技術(shù)提供一種數(shù)據(jù)處理方法、裝置及相關(guān)設(shè)備,通過對需要傳輸?shù)臄?shù)據(jù)進(jìn)行壓縮,能夠降低需要傳輸?shù)臄?shù)據(jù)量,提高數(shù)據(jù)交互效率,降低數(shù)據(jù)傳輸?shù)臅r延。
2、第一方面,本技術(shù)提供一種數(shù)據(jù)處理方法,該方法包括:計算設(shè)備根據(jù)待壓縮的多個第一數(shù)據(jù)確定第一基準(zhǔn)值;然后計算每個第一數(shù)據(jù)與第一基準(zhǔn)值的差值;確定每個差值對應(yīng)的編碼;根據(jù)每個編碼得到對應(yīng)的第一數(shù)據(jù)被壓縮后的數(shù)據(jù)。其中,各個第一數(shù)據(jù)對應(yīng)的編碼中的部分或全部編碼的長度小于原第一數(shù)據(jù)的長度。
3、上述基準(zhǔn)值是待壓縮的多個數(shù)據(jù)中出現(xiàn)次數(shù)較多的數(shù)據(jù),待壓縮的多個數(shù)據(jù)分別與基準(zhǔn)值做差值后,并根據(jù)差值確定每個數(shù)據(jù)對應(yīng)的編碼后,部分或者全部數(shù)據(jù)對應(yīng)的編碼的長度小于原第一數(shù)據(jù)的長度,并且多個數(shù)據(jù)與基準(zhǔn)值的差值中0的數(shù)量最多,將差值中為0的差值進(jìn)行編碼后,能夠?qū)⒉钪禐?對應(yīng)的數(shù)據(jù)壓縮到較少的位數(shù);由于編碼所占的比特位小于各個數(shù)據(jù),從而能夠?qū)崿F(xiàn)對數(shù)據(jù)的壓縮,降低不同計算設(shè)備之間交互的數(shù)據(jù)量,提高數(shù)據(jù)傳輸效率。
4、在一種可能的實現(xiàn)方式中,上述多個第一數(shù)據(jù)為多個浮點數(shù)各自的指數(shù)值。
5、在ai模型訓(xùn)練等應(yīng)用中,模型中的權(quán)重以及模型訓(xùn)練過程中產(chǎn)生的激活值、梯度等數(shù)據(jù)的數(shù)據(jù)類型通常是浮點(float?point,fp)型,例如雙精度浮點型(fp64)、單精度浮點型(fp32)和半精度浮點型(fp16)等。通過對浮點數(shù)中的指數(shù)值進(jìn)行壓縮,能夠降低浮點數(shù)在傳輸過程中的數(shù)據(jù)量,提高數(shù)據(jù)傳輸效率,降低數(shù)據(jù)時延,對于ai模型訓(xùn)練,能夠降低ai模型訓(xùn)練過程中交互的數(shù)據(jù)量,降低數(shù)據(jù)傳輸?shù)臅r延、提高模型訓(xùn)練效率。
6、在一種可能的實現(xiàn)方式中,上述確定每個差值對應(yīng)的編碼,包括:根據(jù)所述每個差值和編碼表確定所述每個差值對應(yīng)的編碼,所述編碼表中記錄了預(yù)設(shè)的多個差值對應(yīng)的編碼。計算設(shè)備中保存有編碼表,在計算出一個數(shù)據(jù)與基準(zhǔn)值的差值后,即可根據(jù)編碼表確定對應(yīng)的編碼。
7、在一種可能的實現(xiàn)方式中,上述編碼表中,絕對值大于閾值的差值對應(yīng)的編碼為固定值,上述根據(jù)每個編碼得到對應(yīng)的第一數(shù)據(jù)被壓縮后的數(shù)據(jù),包括:當(dāng)?shù)谝徊钪档慕^對值大于閾值時,則將固定值及第一差值對應(yīng)的第一數(shù)據(jù)作為第一差值對應(yīng)的第一數(shù)據(jù)被壓縮后的數(shù)據(jù)。
8、可選的,如果多個第一數(shù)據(jù)為多個浮點數(shù)各自的指數(shù)值,對于其中的任意一個第一指數(shù)值,根據(jù)編碼表確定第一指數(shù)值與基準(zhǔn)值之間的第一差值對應(yīng)的編碼;在第一差值的絕對值小于或等于第一閾值時,將第一差值對應(yīng)的編碼作為第一指數(shù)值對應(yīng)的編碼;在第一差值的絕對值大于第一閾值時,將第一差值對應(yīng)的編碼和第一指數(shù)值作為所述第一指數(shù)值對應(yīng)的編碼;其中,上述基準(zhǔn)值是出現(xiàn)次數(shù)較多的指數(shù)值,當(dāng)待壓縮的多個指數(shù)值分別與基準(zhǔn)值做差值時,得到的多個差值中0的數(shù)量最多,將差值中為0的差值根據(jù)上述編碼方式進(jìn)行編碼后,能夠?qū)⒉钪禐?對應(yīng)的指數(shù)值壓縮到較少的位數(shù);在模型訓(xùn)練中,浮點數(shù)的指數(shù)值的分布通常接近正態(tài)分布,上述多個差值中絕對值小于閾值的差值所占的比例也較多,因此將差值中絕對值小于或等于閾值的差值同樣根據(jù)上述編碼方式進(jìn)行編碼,由于編碼所占的比特位小于各個指數(shù)值,差值中絕對值小于第一閾值的差值的數(shù)量占比較多,從而能夠?qū)⒋蟛糠种笖?shù)值通過上述方式進(jìn)行壓縮,達(dá)到壓縮浮點數(shù),降低不同計算設(shè)備之間交互的數(shù)據(jù)量,提高數(shù)據(jù)傳輸效率。
9、在一種可能的實現(xiàn)方式中,上述根據(jù)待壓縮的多個第一數(shù)據(jù)確定一個第一基準(zhǔn)值,包括:對多個第一數(shù)據(jù)進(jìn)行采樣,得到多個采樣值;將多個采樣值劃分為t1個組,確定t1個組中每個組中多個采樣值的中位數(shù),得到t1個中位數(shù);將t1個中位數(shù)劃分為t2個組,確定t2個組中每個組中的中位數(shù),得到t2個中位數(shù),將這t2個中位數(shù)對應(yīng)的中位數(shù)作為多個第一數(shù)據(jù)對應(yīng)的第一基準(zhǔn)值。
10、在第一數(shù)據(jù)的數(shù)量較多時,通過對第一數(shù)據(jù)進(jìn)行采樣,能夠降低在確定基準(zhǔn)值時處理的數(shù)據(jù)量,提高確定基準(zhǔn)值的效率。
11、在一種可能的實現(xiàn)方式中,上述多個浮點數(shù)還包括尾數(shù)值;數(shù)據(jù)處理方法還包括:計算設(shè)備分別對多個浮點數(shù)的尾數(shù)值進(jìn)行壓縮,得到各個尾數(shù)值被壓縮后的數(shù)據(jù);根據(jù)多個浮點數(shù)的指數(shù)值被壓縮后的數(shù)據(jù)和多個浮點數(shù)的尾數(shù)值被壓縮后的數(shù)據(jù),得到多個浮點數(shù)被壓縮后的數(shù)據(jù)。
12、對浮點數(shù)的指數(shù)值同樣進(jìn)行壓縮,能夠進(jìn)一步降低數(shù)據(jù)傳輸中需要傳輸?shù)臄?shù)據(jù)量,提高數(shù)據(jù)傳輸?shù)男省?/p>
13、在一種可能的實現(xiàn)方式中,上述數(shù)據(jù)處理方法還包括:生成第一元數(shù)據(jù),該第一元數(shù)據(jù)包括第一基準(zhǔn)值,第一基準(zhǔn)值用于對多個第一數(shù)據(jù)被壓縮后的數(shù)據(jù)進(jìn)行解碼,得到多個第一數(shù)據(jù)。
14、通過生成包括基準(zhǔn)值的元數(shù)據(jù),在將壓縮后的數(shù)據(jù)和元數(shù)據(jù)發(fā)送給接收端,以使接收到壓縮后的數(shù)據(jù)的計算設(shè)備能夠根據(jù)元數(shù)據(jù)對接收到的壓縮后的數(shù)據(jù)進(jìn)行解碼,得的被壓縮前的數(shù)據(jù)。
15、在一種可能的實現(xiàn)方式中,在多個第一數(shù)據(jù)分別是多個浮點數(shù)的指數(shù)值時,第一元數(shù)據(jù)還包括壓縮類型和尾數(shù)壓縮等級;壓縮類型用于指示是否對多個浮點數(shù)的尾數(shù)值進(jìn)行了壓縮,尾數(shù)壓縮等級用于指示在對尾數(shù)值進(jìn)行了壓縮時,尾數(shù)值被壓縮后的數(shù)據(jù)的長度。
16、當(dāng)對浮點數(shù)據(jù)進(jìn)行壓縮時,可以選擇是否壓縮浮點數(shù)的尾數(shù)值,以及選擇對尾數(shù)值的壓縮程度,因此在對浮點數(shù)進(jìn)行壓縮時,上述元數(shù)據(jù)還包括壓縮類型和尾數(shù)壓縮等級,以使接收到壓縮后的數(shù)據(jù)的計算設(shè)備能夠根據(jù)元數(shù)據(jù)對接收到的壓縮后的數(shù)據(jù)的指數(shù)部分和尾數(shù)部分分別進(jìn)行解碼,得的被壓縮前的浮點數(shù)據(jù)。
17、在一種可能的實現(xiàn)方式中,上述方法還包括:接收待解壓數(shù)據(jù),該待解壓數(shù)據(jù)包括編碼部分和第二元數(shù)據(jù);其中,第二元數(shù)據(jù)包括第二基準(zhǔn)值,編碼部分包括多個編碼;根據(jù)第二基準(zhǔn)值和多個編碼,分別對多個編碼進(jìn)行解碼,得到多個第二數(shù)據(jù)。
18、計算設(shè)備在接收到數(shù)據(jù)后,在接收到的數(shù)據(jù)中存在基準(zhǔn)值時,計算設(shè)備能夠確定接收的數(shù)據(jù)是待解壓的數(shù)據(jù),通過待解壓數(shù)據(jù)中的編碼以及計算設(shè)備中存儲的編碼表,能夠確定每個編碼對應(yīng)的差值,進(jìn)而根據(jù)差值和基準(zhǔn)值恢復(fù)出原始數(shù)據(jù)。
19、在一種可能的實現(xiàn)方式中,在待解壓數(shù)據(jù)是被壓縮的浮點數(shù)對應(yīng)的數(shù)據(jù)時,待解壓數(shù)據(jù)還包括尾數(shù)部分,第二元數(shù)據(jù)還包括被壓縮的浮點數(shù)的數(shù)據(jù)類型、壓縮類型和尾數(shù)壓縮等級,壓縮類型用于指示是否對浮點數(shù)的尾數(shù)值進(jìn)行了壓縮,尾數(shù)壓縮等級用于指示在對尾數(shù)值進(jìn)行壓縮后,尾數(shù)值被壓縮后的數(shù)據(jù)的長度;上述根據(jù)第二基準(zhǔn)值和多個編碼,對待解壓數(shù)據(jù)進(jìn)行解碼,得到多個第二數(shù)據(jù),包括:根據(jù)數(shù)據(jù)類型確定被壓縮前的浮點數(shù)的指數(shù)值的長度和尾數(shù)值的長度;根據(jù)指數(shù)值的長度、第二基準(zhǔn)值和多個編碼,分別對多個編碼進(jìn)行解碼,得到多個指數(shù)值;在根據(jù)壓縮類型確定待解壓數(shù)據(jù)中尾數(shù)部分是對尾數(shù)值進(jìn)行壓縮后的數(shù)據(jù)時,根據(jù)尾數(shù)壓縮等級和尾數(shù)值的長度,對尾數(shù)部分被壓縮后的數(shù)據(jù)進(jìn)行解碼,得到多個尾數(shù)值;根據(jù)解碼得到的多個指數(shù)值和多個尾數(shù)值,恢復(fù)出被壓縮前的浮點數(shù)。
20、第二方面,本技術(shù)提供一種數(shù)據(jù)處理裝置,該裝置包括通信單元和處理單元,通信單元用于獲取多個第一數(shù)據(jù);處理單元,用于根據(jù)待壓縮的多個第一數(shù)據(jù)確定一個第一基準(zhǔn)值;然后計算每個第一數(shù)據(jù)與第一基準(zhǔn)值的差值;確定每個差值對應(yīng)的編碼;根據(jù)每個編碼得到對應(yīng)的第一數(shù)據(jù)被壓縮后的數(shù)據(jù)。各個第一數(shù)據(jù)對應(yīng)的編碼中的部分或全部編碼的長度小于指數(shù)值的長度。
21、在一種可能的實現(xiàn)方式中,上述多個第一數(shù)據(jù)分別為多個浮點數(shù)的指數(shù)值。
22、在一種可能的實現(xiàn)方式中,上述處理單元具體用于:根據(jù)所述每個差值和編碼表確定所述每個差值對應(yīng)的編碼,所述編碼表中記錄了預(yù)設(shè)的多個差值對應(yīng)的編碼。
23、在一種可能的實現(xiàn)方式中,上述編碼表中,絕對值大于閾值的差值對應(yīng)的編碼為固定值,上述處理單元具體用于:當(dāng)?shù)谝徊钪档慕^對值大于閾值時,則將固定值及第一差值對應(yīng)的第一數(shù)據(jù)作為第一差值對應(yīng)的第一數(shù)據(jù)被壓縮后的數(shù)據(jù)。
24、在一種可能的實現(xiàn)方式中,上述根據(jù)待壓縮的多個第一數(shù)據(jù)確定一個第一基準(zhǔn)值時,處理單元具體用于:對多個第一數(shù)據(jù)進(jìn)行采樣,得到多個采樣值;將多個采樣值劃分為t1個組,確定所述t1個組中每個組中多個采樣值的中位數(shù),得到t1個中位數(shù);將所述t1個中位數(shù)劃分為t2個組,確定所述t2個組中每個組中的中位數(shù),得到t2個中位數(shù),將所述t2個中位數(shù)對應(yīng)的中位數(shù)作為所述多個第一數(shù)據(jù)對應(yīng)的第一基準(zhǔn)值。
25、在一種可能的實現(xiàn)方式中,上述多個浮點數(shù)還包括尾數(shù)值;處理單元還用于分別對多個浮點數(shù)的尾數(shù)值進(jìn)行壓縮,得到各個尾數(shù)值被壓縮后的數(shù)據(jù);根據(jù)多個浮點數(shù)的指數(shù)值被壓縮后的數(shù)據(jù)和多個浮點數(shù)的尾數(shù)值被壓縮后的數(shù)據(jù),得到多個浮點數(shù)被壓縮后的數(shù)據(jù)。
26、在一種可能的實現(xiàn)方式中,上述處理單元還用于:生成第一元數(shù)據(jù),該第一元數(shù)據(jù)包括第一基準(zhǔn)值,第一基準(zhǔn)值用于對多個第一數(shù)據(jù)被壓縮后的數(shù)據(jù)進(jìn)行解碼,得到多個第一數(shù)據(jù)。
27、在一種可能的實現(xiàn)方式中,在多個第一數(shù)據(jù)分別是多個浮點數(shù)的指數(shù)值時,上述第一元數(shù)據(jù)還包括壓縮類型和尾數(shù)壓縮等級;壓縮類型用于指示是否對多個浮點數(shù)的尾數(shù)值進(jìn)行了壓縮,尾數(shù)壓縮等級用于指示在對尾數(shù)值進(jìn)行了壓縮時,尾數(shù)值被壓縮后的數(shù)據(jù)的長度。
28、在一種可能的實現(xiàn)方式中,上述通信單元還用于:接收待解壓數(shù)據(jù),該待解壓數(shù)據(jù)包括編碼部分和第二元數(shù)據(jù);其中,第二元數(shù)據(jù)包括第二基準(zhǔn)值,編碼部分包括多個編碼;根據(jù)第二基準(zhǔn)值和多個編碼,分別對多個編碼進(jìn)行解碼,得到多個第二數(shù)據(jù)。
29、在一種可能的實現(xiàn)方式中,在待解壓數(shù)據(jù)是被壓縮的浮點數(shù)對應(yīng)的數(shù)據(jù)時,待解壓數(shù)據(jù)還包括尾數(shù)部分,第二元數(shù)據(jù)還包括被壓縮的浮點數(shù)的數(shù)據(jù)類型、壓縮類型和尾數(shù)壓縮等級,壓縮類型用于指示是否對浮點數(shù)的尾數(shù)值進(jìn)行了壓縮,尾數(shù)壓縮等級用于指示在對尾數(shù)值進(jìn)行壓縮后,尾數(shù)值被壓縮后的數(shù)據(jù)的長度;上述處理單元具體用于:根據(jù)數(shù)據(jù)類型確定被壓縮前的浮點數(shù)的指數(shù)值的長度和尾數(shù)值的長度;根據(jù)指數(shù)值的長度、第二基準(zhǔn)值和多個編碼,分別對多個編碼進(jìn)行解碼,得到多個指數(shù)值;在根據(jù)壓縮類型確定待解壓數(shù)據(jù)中尾數(shù)部分是對尾數(shù)值進(jìn)行壓縮后的數(shù)據(jù)時,根據(jù)尾數(shù)壓縮等級和尾數(shù)值的長度,對尾數(shù)部分被壓縮后的數(shù)據(jù)進(jìn)行解碼,得到多個尾數(shù)值;根據(jù)解碼得到的多個指數(shù)值和多個尾數(shù)值,恢復(fù)出被壓縮前的浮點數(shù)。
30、第三方面,本技術(shù)提供一種計算設(shè)備,該計算設(shè)備包括一個或多個處理器、存儲器和壓縮引擎,存儲器中存儲計算機(jī)程序指令,處理器執(zhí)行計算機(jī)程序指令生成待壓縮的數(shù)據(jù),壓縮引擎用于實現(xiàn)如上述第一方面或第一方面任意可能實現(xiàn)方式中所描述的數(shù)據(jù)處理方法,對待壓縮數(shù)據(jù)進(jìn)行壓縮。
31、在一種可能的實現(xiàn)方式中,計算設(shè)備還包括通信引擎和解壓引擎,該通信引擎用于接收待解壓數(shù)據(jù),解壓引擎用于實現(xiàn)如上述第一方面或第一方面任意可能實現(xiàn)方式中描述的數(shù)據(jù)處理方法,對接收到的待解壓數(shù)據(jù)進(jìn)行解碼。
32、在一種可能的實現(xiàn)方式中,上述壓縮引擎和解壓引擎位于所述通信引擎。
33、在一種可能的實現(xiàn)方式中,上述壓縮引擎位于各個處理器中,解壓引擎位于通信引擎中。
34、在一種可能的實現(xiàn)方式中,上述壓縮引擎和解壓引擎均是獨立于處理器、存儲器和通信引擎的模塊。
35、第四方面,本技術(shù)提供了一種計算機(jī)可讀存儲介質(zhì),該計算機(jī)可讀存儲介質(zhì)中存儲有指令,當(dāng)所述指令在服務(wù)器上運(yùn)行時,使得服務(wù)器執(zhí)行第一方面或第一方面任一種可能實現(xiàn)方式中的數(shù)據(jù)處理方法。
36、第五方面,本技術(shù)提供了一種計算機(jī)程序產(chǎn)品,當(dāng)該計算機(jī)程序產(chǎn)品在服務(wù)器上運(yùn)行時,使得服務(wù)器執(zhí)行第二方面或第二方面任一種可能實現(xiàn)方式中的數(shù)據(jù)處理方法。