本公開涉及計算機,尤其涉及一種用于包括多個計算單元的處理器執行矩陣乘法運算的方法。
背景技術:
1、隨著人工智能的發展,諸如基于transformer結構的大型語言模型(largelanguage?model,llm)等大模型(下文中有時簡稱為“模型”)在諸多領域得到了廣泛應用。例如,可以利用大模型處理查詢任務、生成自然語言文本、生成圖像或視頻等。一般地,大模型的推理過程中可能會包括大量的矩陣乘法(general?matrix?multiply,gemm)運算,并可能涉及數十億級別及以上的參數(例如模型權重)量,這會占用大量的存儲空間,給模型的實際部署和應用帶來巨大挑戰。
2、目前,為了減少模型參數占用的存儲空間,可以使用模型參數量化算法減少模型參數的位寬。比如,自適應加權量化(adaptive?weighted?quantization,awq)算法可以將預訓練模型的16?bit(位)參數量化到4?bit。對于llm來說,約減少四分之三的參數量,從而極大程度減少了模型參數所帶來的存儲、訪存等開銷。
3、雖然使用模型參數量化算法對模型參數進行量化壓縮可以節約存儲空間,但是在模型的推理過程中,在進行輸入數據與模型參數的矩陣乘法運算之前,需要先對量化的模型參數進行解量化(例如從4?bit恢復到16?bit),導致矩陣乘法運算耗時較長,降低了模型的推理效率。因此,如何針對量化的模型參數提高矩陣乘法運算的計算效率以提高推理效率是亟待解決的問題。
技術實現思路
1、本公開的發明人注意到,在大模型的推理過程中,由于需要進行矩陣乘法的輸入數據(例如32×4096的矩陣)和模型參數(例如4096×4096的矩陣)的規模都較大,因此通常將輸入數據和模型參數分別分成多個塊并分配給多個計算單元(例如圖形處理器gpu中的流式多處理器(streaming?multiprocessor,sm)),使每個計算單元對被分配的輸入數據塊與相應的模型參數塊進行矩陣乘法運算,得到作為運算結果的輸出數據塊,并且所有多個計算單元的輸出數據塊能夠組成完整的輸出數據。在相關技術中,通常將計算單元的計算任務映射到輸出數據上,即,針對一個輸出數據塊,將能夠運算得到該輸出數據塊的輸入數據塊與相應的模型參數塊分配給一個計算單元。由于針對不同的輸出數據塊的運算往往需要使用相同的模型參數塊,因此,在對模型參數進行了量化的情況下,被分配了相同的模型參數塊的計算單元均需要對該相同的模型參數塊進行解量化之后再與相應的輸入數據塊進行矩陣乘法運算。這就造成了在進行輸入數據與模型參數的矩陣乘法運算時在全局上需要對模型參數重復多次解量化,浪費了計算資源,降低了處理器的利用率和計算速度,并且降低了模型的推理速度。
2、有鑒于此,本公開提出了一種用于包括多個計算單元的處理器執行矩陣乘法運算的方法,能夠避免在對大模型的模型參數進行了量化的情況下在推理過程中對量化的模型參數進行多次解量化,以提高矩陣乘法運算的計算效率,從而加快處理器的計算速度,節省計算資源,提高推理效率。
3、根據本公開的一方面,提供了一種用于包括多個計算單元的處理器執行矩陣乘法運算的方法,所述方法包括:
4、將量化參數矩陣劃分為多個參數塊,使得每個參數塊具有預設的第一長度和第一寬度;
5、將所述多個參數塊依次不重復地分配給所述多個計算單元中的每個計算單元,使得除至多一個計算單元被分配所述多個參數塊中的連續的少于第一數量的參數塊外,每個計算單元被分配所述多個參數塊中的連續的所述第一數量的參數塊;
6、所述多個計算單元中的每個計算單元對被分配的參數塊進行解量化;
7、所述多個計算單元中的每個計算單元獲取輸入矩陣的應與所述被分配的參數塊相乘的部分,并對解量化后的所述被分配的參數塊與輸入矩陣的所述部分進行矩陣乘法運算,以完成所述輸入矩陣與大模型的模型參數的矩陣乘法運算,
8、其中,所述量化參數矩陣是對所述模型參數進行量化得到的二維矩陣,所述第一數量是基于所述量化參數矩陣的長度和寬度、每個參數塊的所述第一長度和第一寬度以及所述多個計算單元的數量計算的,并且
9、所述輸入矩陣是作為所述大模型的推理的解碼階段的輸入數據的二維矩陣。
10、在一種可能的實現方式中,所述多個計算單元中的每個計算單元的所述被分配的參數塊跨所述量化參數矩陣的整個長度而分布,每個計算單元獲取的輸入矩陣的所述部分是整個輸入矩陣。
11、在一種可能的實現方式中,所述對解量化后的所述被分配的參數塊與輸入矩陣的所述部分進行矩陣乘法運算,包括:
12、所述多個計算單元中的每個計算單元針對解量化后的所述被分配的參數塊中的每個參數塊,利用預設的矩陣乘法運算指令,依次不重復地對該參數塊中具有第二長度和第二寬度的子參數塊與輸入矩陣中應與所述子參數塊相乘的具有第三長度和第三寬度的子輸入塊進行矩陣乘法運算,以完成所述被分配的參數塊與輸入矩陣的矩陣乘法運算。
13、在一種可能的實現方式中,所述方法還包括:
14、在所述輸入矩陣的長度指示所述輸入數據的批大小且小于所述矩陣乘法運算指令規定的被乘數矩陣的長度和寬度、并且所述矩陣乘法運算指令規定的乘數矩陣的寬度小于所述矩陣乘法運算指令規定的被乘數矩陣的長度和寬度以及乘數矩陣的長度的情況下,
15、在利用所述矩陣乘法運算指令進行子參數塊與子輸入塊的矩陣乘法運算時,將所述子參數塊作為被乘數矩陣,將所述子輸入塊作為乘數矩陣,并且
16、所述第二長度、第二寬度和第三寬度分別等于所述矩陣乘法運算指令規定的被乘數矩陣的長度、寬度和乘數矩陣的長度,并且所述第二寬度與第三長度相等。
17、在一種可能的實現方式中,在所述輸入矩陣的長度等于或小于所述矩陣乘法運算指令規定的乘數矩陣的寬度時,所述第三長度等于所述輸入矩陣的長度。
18、在一種可能的實現方式中,所述處理器是圖形處理器,所述計算單元是流式多處理器,并且
19、每個計算單元運行一個線程塊,在所述線程塊中,依次針對解量化后的所述被分配的參數塊中的每個參數塊執行所述子參數塊與所述子輸入塊的矩陣乘法運算。
20、在一種可能的實現方式中,所述矩陣乘法運算指令是并行線程執行ptx指令集中的矩陣乘累加mma指令。
21、根據本公開另一方面,提供了一種用于執行矩陣乘法運算的包括多個計算單元的處理器,所述處理器被配置為:
22、將量化參數矩陣劃分為多個參數塊,使得每個參數塊具有預設的第一長度和第一寬度;
23、將所述多個參數塊依次不重復地分配給所述多個計算單元中的每個計算單元,使得除至多一個計算單元被分配所述多個參數塊中的連續的小于第一數量的個數的參數塊外,每個計算單元被分配所述多個參數塊中的連續的所述第一數量的參數塊,并且
24、所述多個計算單元中的每個計算單元被配置為:
25、對被分配的參數塊進行解量化;
26、獲取輸入矩陣的應與所述被分配的參數塊相乘的部分,并對解量化后的所述被分配的參數塊與輸入矩陣的所述部分進行矩陣乘法運算,以完成所述輸入矩陣與大模型的模型參數的矩陣乘法運算,
27、其中,所述量化參數矩陣是對所述模型參數進行量化得到的二維矩陣,所述第一數量是基于所述量化參數矩陣的長度和寬度、每個參數塊的所述第一長度和第一寬度以及所述多個計算單元的數量計算的,并且
28、所述輸入矩陣是作為所述大模型的推理的解碼階段的輸入數據的二維矩陣。
29、根據本公開另一方面,提供了一種用于包括多個計算單元的處理器執行矩陣乘法運算的裝置,包括存儲器、處理器及存儲在存儲器上的計算機程序,所述處理器執行所述計算機程序以實現如下操作:
30、所述處理器執行所述計算機程序以實現如下操作:
31、將量化參數矩陣劃分為多個參數塊,使得每個參數塊具有預設的第一長度和第一寬度;
32、將所述多個參數塊依次不重復地分配給處理器包括的多個計算單元中的每個計算單元,使得除至多一個計算單元被分配所述多個參數塊中的連續的小于第一數量的個數的參數塊外,每個計算單元被分配所述多個參數塊中的連續的所述第一數量的參數塊;
33、使所述多個計算單元中的每個計算單元對被分配的參數塊進行解量化;
34、使所述多個計算單元中的每個計算單元獲取輸入矩陣的應與所述被分配的參數塊相乘的部分,并對解量化后的所述被分配的參數塊與輸入矩陣的所述部分進行矩陣乘法運算,以完成所述輸入矩陣與大模型的模型參數的矩陣乘法運算,
35、其中,所述量化參數矩陣是對所述模型參數進行量化得到的二維矩陣,所述第一數量是基于所述量化參數矩陣的長度和寬度、每個參數塊的所述第一長度和第一寬度以及所述多個計算單元的數量計算的,并且
36、所述輸入矩陣是作為所述大模型的推理的解碼階段的輸入數據的二維矩陣。
37、根據本公開另一方面,提供了一種非易失性計算機可讀存儲介質,其上存儲有計算機程序,所述計算機程序被處理器執行時實現上述方法的步驟。
38、根據本公開另一方面,提供了一種計算機程序產品,包括計算機程序,或者承載有計算機程序的非易失性計算機可讀存儲介質,所述計算機程序被處理器執行時實現上述方法的步驟。
39、在根據本公開的用于包括多個計算單元的處理器執行矩陣乘法運算的方法中,將量化參數矩陣劃分為多個參數塊;將多個參數塊依次不重復地分配給多個計算單元中的每個計算單元,使得除至多一個計算單元被分配多個參數塊中的連續的少于第一數量的參數塊外,每個計算單元被分配多個參數塊中的連續的第一數量的參數塊;多個計算單元中的每個計算單元對被分配的參數塊進行解量化;多個計算單元中的每個計算單元獲取輸入矩陣的應與被分配的參數塊相乘的部分,并對解量化后的被分配的參數塊與輸入矩陣的部分進行矩陣乘法運算,以完成輸入矩陣與大模型的模型參數的矩陣乘法運算。由于各個計算單元被分配的量化參數塊互不重復,因此,在全局上只需對量化參數矩陣進行一次解量化,能夠避免在對大模型的模型參數進行了量化的情況下在推理過程中對量化的模型參數進行多次解量化,提高了矩陣乘法運算的計算效率,加快了處理器的計算速度,節省了計算資源,提高了推理效率。
40、根據下面參考附圖對示例性實施例的詳細說明,本公開的其他特征及方面將變得清楚。