摘 要:目前,ChatGPT、LLaMA、Gemini等大型語言模型已取得了顯著突破,對(duì)自然語言處理領(lǐng)域產(chǎn)生了深遠(yuǎn)影響。然而,這些模型通常擁有數(shù)百億甚至數(shù)千億個(gè)參數(shù),在部署時(shí)對(duì)計(jì)算資源和存儲(chǔ)需求極高,導(dǎo)致其在計(jì)算資源有限的平臺(tái)上難以應(yīng)用。為此,介紹了當(dāng)前主流的模型壓縮方法,并結(jié)合llama.cpp項(xiàng)目,提出了一種在申威平臺(tái)上利用純CPU進(jìn)行大型語言模型部署的方案。文章還針對(duì)不同的模型量化方式及多線程推理進(jìn)行了總結(jié)與歸納,為大型語言模型在申威平臺(tái)上的實(shí)際應(yīng)用提供了實(shí)用指導(dǎo)。
關(guān)鍵詞:申威;自然語言處理;大型語言模型;模型壓縮;模型量化;推理提速
中圖分類號(hào):TP181 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2025)08-0-04
0 引 言
語言是人類表達(dá)思想的一個(gè)復(fù)雜而精密的系統(tǒng),受到語法規(guī)則的嚴(yán)格約束。研究和開發(fā)能夠理解并生成語言的強(qiáng)大AI算法,是一項(xiàng)極具挑戰(zhàn)性的任務(wù)。近年來,語言建模方法作為重要的研究方向之一,被廣泛應(yīng)用于語言的理解和生成。從早期的統(tǒng)計(jì)語言模型(SLMs)和神經(jīng)語言模型(NLMs),到基于Transformer的預(yù)訓(xùn)練語言模型(PLMs),這些方法在解決各類自然語言處理(NLP)任務(wù)中展現(xiàn)了強(qiáng)大的能
力[1-3]。同時(shí),研究人員發(fā)現(xiàn),在預(yù)訓(xùn)練語言模型的基礎(chǔ)上增加參數(shù)規(guī)模和數(shù)據(jù)量,可以顯著提升模型性能。當(dāng)參數(shù)規(guī)模超過一定閾值時(shí),這些更大的語言模型不僅能在效果上實(shí)現(xiàn)質(zhì)的飛躍,還展現(xiàn)出小規(guī)模模型所不具備的特殊能力,例如上下文學(xué)習(xí)、指令遵循和逐步推理等。這類模型被稱為大型語言模型(LLMs)。
LLMs是指在大規(guī)模文本語料上訓(xùn)練、包含數(shù)百億甚至數(shù)千億以上參數(shù)的語言模型。隨著參數(shù)規(guī)模的增加,LLMs能夠捕捉更復(fù)雜的語言結(jié)構(gòu)和語義信息,從而在各種自然語言處理任務(wù)中表現(xiàn)更優(yōu)。近年來,LLMs的參數(shù)規(guī)模呈現(xiàn)爆發(fā)式增長(zhǎng)。例如,2019年谷歌發(fā)布的T5模型包含110億個(gè)參數(shù),2020年OpenAI發(fā)布的GPT-3模型達(dá)到1 750億個(gè)參數(shù),而2023年華為發(fā)布的PanGu-Σ模型更是突破了1.085萬億個(gè)參數(shù)[4]。然而,這些龐大的參數(shù)規(guī)模也帶來了巨大的計(jì)算資源、存儲(chǔ)需求和能源消耗,使得LLMs在個(gè)人計(jì)算機(jī)、嵌入式平臺(tái)或移動(dòng)設(shè)備等計(jì)算資源有限的環(huán)境中難以部署和應(yīng)用。因此,如何在盡可能不損失模型性能的前提下壓縮模型并加速推理,成為一個(gè)亟待解決的關(guān)鍵問題。
本文通過調(diào)研近年來模型壓縮技術(shù)的發(fā)展現(xiàn)狀,結(jié)合當(dāng)前主流的LLMs推理工具和框架,在申威平臺(tái)上進(jìn)行了LLMs的推理實(shí)驗(yàn)。文章總結(jié)并歸納了不同模型壓縮方法的優(yōu)缺點(diǎn),驗(yàn)證了利用CPU進(jìn)行本地推理的可行性,為L(zhǎng)LMs在資源受限平臺(tái)上的應(yīng)用提供了參考。
1 LLMs及模型壓縮簡(jiǎn)介
1.1 LLMs簡(jiǎn)介
自2019年Google發(fā)布T5(Text-to-Text Transfer Transformer)以來,國(guó)內(nèi)外研究機(jī)構(gòu)紛紛加入大型語言模型的研發(fā)行列,涌現(xiàn)出一大批具有競(jìng)爭(zhēng)力的模型。例如,OpenAI的GPT-4和Anthropic的Claude-3等國(guó)外模型在多項(xiàng)能力上仍處于領(lǐng)先地位,而谷歌的Gemini、Meta的LLaMA3等模型也在不斷更新迭代。在國(guó)內(nèi),百度的文心一言4.0、阿里云的Qwen1.5以及百川智能的Baichuan3等模型同樣表現(xiàn)出色。這些模型的持續(xù)涌現(xiàn)和改進(jìn),為自然語言處理技術(shù)的發(fā)展開辟了新的可能性,并在機(jī)器翻譯、文本生成、信息檢索、語音識(shí)別、情感分析等領(lǐng)域?yàn)橛脩籼峁┝烁迂S富和高效的服務(wù)??傮w而言,LLMs的應(yīng)用場(chǎng)景已覆蓋社會(huì)各個(gè)層面,為各行各業(yè)帶來了深遠(yuǎn)的影響和變革。表1展示了當(dāng)前部分主流LLMs的基本信息。
1.2 模型壓縮概覽
模型壓縮旨在盡可能不損失大型語言模型性能的前提下,對(duì)模型進(jìn)行精簡(jiǎn),從而獲得一個(gè)計(jì)算開銷和存儲(chǔ)開銷大幅降低但仍保持較高準(zhǔn)確率的小模型,以便部署在計(jì)算資源有限的硬件設(shè)備上。當(dāng)前主流的模型壓縮方法主要包括參數(shù)剪枝(Network Pruning)、參數(shù)量化(Quantization)、低秩分解(Network Decomposition)和知識(shí)蒸餾(Network Distillation)等[5]。
參數(shù)剪枝:通過設(shè)計(jì)一種對(duì)預(yù)訓(xùn)練模型網(wǎng)絡(luò)參數(shù)的評(píng)價(jià)準(zhǔn)則,依據(jù)該準(zhǔn)則刪除不重要的參數(shù)。參數(shù)剪枝主要分為結(jié)構(gòu)化剪枝、非結(jié)構(gòu)化剪枝和動(dòng)態(tài)剪枝[6]。結(jié)構(gòu)化剪枝通過刪除整個(gè)過濾器(層)來減少參數(shù)數(shù)量,雖然能顯著降低模型大小和計(jì)算量,但可能會(huì)產(chǎn)生較大的精度損失。相比之下,非結(jié)構(gòu)化剪枝更加精細(xì),它在層內(nèi)部刪除單個(gè)參數(shù),因此能更好地保持模型性能,但實(shí)施復(fù)雜度較高。此外,動(dòng)態(tài)剪枝是一種在模型推理期間動(dòng)態(tài)刪除參數(shù)的方法,能夠根據(jù)輸入數(shù)據(jù)的特征實(shí)時(shí)調(diào)整模型結(jié)構(gòu),從而在保持性能的同時(shí)提高推理效率。然而,動(dòng)態(tài)剪枝需要額外的計(jì)算資源進(jìn)行實(shí)時(shí)調(diào)整,因此在計(jì)算資源受限的環(huán)境中適用性較低。
參數(shù)量化:將模型網(wǎng)絡(luò)參數(shù)從高精度浮點(diǎn)數(shù)轉(zhuǎn)換為較低精度浮點(diǎn)數(shù)或整數(shù),例如將32位浮點(diǎn)數(shù)(FP32)轉(zhuǎn)換為16位
浮點(diǎn)數(shù)(FP16)或8位整型數(shù)(Int8),從而減少存儲(chǔ)和計(jì)算開銷。網(wǎng)絡(luò)參數(shù)包括權(quán)重、激活值、梯度和誤差等,可以使用統(tǒng)一的位寬或特定的策略組合對(duì)其進(jìn)行轉(zhuǎn)換。參數(shù)量化是一種直接的模型壓縮方法,能夠顯著降低存儲(chǔ)需求、計(jì)算成本和推理時(shí)間。然而,網(wǎng)絡(luò)參數(shù)位寬的減少會(huì)損失部分信息量,可能影響模型推理的準(zhǔn)確性。研究表明,在大多數(shù)應(yīng)用中,采用8位整型量化的模型推理能夠保持較高的準(zhǔn)確率。結(jié)合權(quán)值共享等優(yōu)化技巧,權(quán)重和激活甚至可以量化到4位整數(shù)。
低秩分解:將給定的權(quán)重矩陣分解為兩個(gè)或多個(gè)維度明顯較低的矩陣,以近似原始矩陣。低秩分解的主要方法包括奇異值分解(SVD)、Tucker分解和CP分解等。低秩分解是一種有效的模型壓縮技術(shù),但在降維過程中需要消耗額外的計(jì)算資源,同時(shí)可能會(huì)丟失一些重要特征信息,導(dǎo)致模型性能下降。此外,低秩分解通常需要大量模型重訓(xùn)練才能達(dá)到與原模型一致的收斂效果。
知識(shí)蒸餾:通過將大型復(fù)雜模型(教師模型)的知識(shí)遷移到小型模型(學(xué)生模型)上,可以在不顯著降低模型性能的前提下大幅減少參數(shù)量。知識(shí)蒸餾的過程包括兩個(gè)部分:首先,教師模型通過對(duì)數(shù)據(jù)的預(yù)測(cè)生成軟標(biāo)簽,這些軟標(biāo)簽不僅包含硬標(biāo)簽的類別信息,還包含數(shù)據(jù)之間的相似性信息;其次,學(xué)生模型在訓(xùn)練過程中通過模擬教師模型的軟標(biāo)簽以及傳統(tǒng)的硬標(biāo)簽進(jìn)行學(xué)習(xí)[7]?;谥R(shí)蒸餾的方法能夠顯著降低模型的深度和規(guī)模,但需要預(yù)先訓(xùn)練一個(gè)教師模型,這增加了訓(xùn)練的復(fù)雜性和成本。
2 申威平臺(tái)模型推理
申威處理器是一系列多核心、高性能的處理器,采用先進(jìn)的處理架構(gòu)和制造工藝。其多核心設(shè)計(jì)使其能夠在高負(fù)載應(yīng)用場(chǎng)景下實(shí)現(xiàn)高效的并行計(jì)算,顯著提升計(jì)算效率;同時(shí),強(qiáng)大的浮點(diǎn)計(jì)算能力和高速緩存系統(tǒng)使其在科學(xué)計(jì)算、大數(shù)據(jù)分析和人工智能等領(lǐng)域具有廣泛的應(yīng)用前景。
在申威平臺(tái)上,主要的操作系統(tǒng)包括統(tǒng)信(UOS)、麒麟(Kylin)和歐拉(Euler)等Linux發(fā)行版。支持Linux的大型語言模型推理框架或工具套件主要有vLLM、PyTorch和llama.cpp等。
vLLM是由伯克利大學(xué)LMSYS組織開源的大型語言模型高速推理框架,其核心思想是將自注意力機(jī)制(Self-Attention)的計(jì)算過程分解為多個(gè)較小的計(jì)算任務(wù),并將這些任務(wù)分布到多個(gè)計(jì)算節(jié)點(diǎn)上并行處理[8]。
PyTorch是一個(gè)基于Torch的Python開源機(jī)器學(xué)習(xí)庫,其核心優(yōu)勢(shì)包括動(dòng)態(tài)計(jì)算圖、自動(dòng)微分機(jī)制以及高效的CUDA利用等,用戶可以方便地構(gòu)建、訓(xùn)練和部署深度學(xué)習(xí)模型。然而,PyTorch和vLLM都是基于Python的服務(wù)框架,且依賴GPU進(jìn)行推理加速,這在計(jì)算資源有限且缺乏GPU的環(huán)境中并不適用。
llama.cpp是基于Meta發(fā)布的LLaMA模型的C++推理實(shí)現(xiàn),不依賴任何外部庫,旨在以最少的設(shè)置在各種硬件上實(shí)現(xiàn)高效的LLMs推理。它支持Apple Silicon的Meta加速以及x86架構(gòu)的AVX、AVX2和AVX512加速,能夠使用純CPU或CPU+GPU(NVIDIA CUDA或AMD HIP)混合推理。此外,llama.cpp還提供了2 bit、3 bit、4 bit、5 bit、6 bit以及8 bit位寬的模型量化功能,用于壓縮模型以加快推理速度并減少內(nèi)存占用。因此,本文選擇llama.cpp在申威平臺(tái)上利用純CPU進(jìn)行LLMs的部署和推理。
2.1 llama.cpp項(xiàng)目構(gòu)建
llama.cpp項(xiàng)目的構(gòu)建在申威平臺(tái)上進(jìn)行,操作系統(tǒng)為統(tǒng)信(UOS),構(gòu)建環(huán)境包括:Linux 4.19.0-sw64-desktop、GLIBC 2.28、gcc 8.3.1、CMake 3.26.4、Python 3.10。
(1)獲取llama.cpp源碼
首先,獲取llama.cpp的源碼并進(jìn)入項(xiàng)目目錄,執(zhí)行以下命令:
$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp//進(jìn)入llama.cpp目錄
(2)開啟對(duì)OpenBLAS的支持
llama.cpp支持多種BLAS實(shí)現(xiàn)以提升矩陣運(yùn)算效率,包括OpenBLAS、BLIS以及涉及GPU的BLAS實(shí)現(xiàn)(如cuBLAS、hipBLAS和CLBlast)。OpenBLAS和BLIS是優(yōu)秀的開源線性代數(shù)庫,專注于在多核處理器和向量化指令集上實(shí)現(xiàn)高效的矩陣運(yùn)算。它們提供了高性能的基本線性代數(shù)子程序(BLAS),包括矩陣乘法、矩陣-向量乘法等,能夠滿足科學(xué)計(jì)算和工程應(yīng)用中對(duì)高效數(shù)值計(jì)算的需求[9-10]。此外,它們具有跨平臺(tái)特性,可以在多種操作系統(tǒng)上部署和使用。
申威平臺(tái)的UOS系統(tǒng)支持OpenBLAS。通過以下命令安裝OpenBLAS及其相關(guān)依賴,得到OpenBLAS相關(guān)的頭文件cblas.h以及庫文件libopenblas64.so、libopenblaso64.so、libopenblasp64.so等,命令如下:
$ apt install libopenblas-base libopenblas-dev liblapack-dev
根據(jù)申威UOS系統(tǒng)中OpenBLAS頭文件、庫文件路徑,修改llama.cpp源碼中Makefile:
ifdef LLAMA_OPENBLAS
MK_CPPFLAGS += -DGGML_USE_OPENBLAS -I/usr/include -I/usr/include/openblas
MK_CFLAGS" "+= -I/usr/include -I/usr/include/openblas
MK_LDFLAGS" += -L /usr/lib -lopenblas64
endif # LLAMA_OPENBLAS
(3)編譯llama.cpp
llama.cpp是一個(gè)C++庫,可以通過Make或CMake(版本3.14以上)進(jìn)行編譯,本文使用Make編譯。編譯完成后,在llama.cpp目錄中生成主程序main以及模型量化工具quantize,命令如下:
$ LLAMA_OPENBLAS=1 make -j8
2.2 llama.cpp部署推理
llama.cpp項(xiàng)目支持多種預(yù)訓(xùn)練語言模型,這些模型可以方便地從HuggingFace社區(qū)獲取。本文選用Baichuan2模型。Baichuan2是由百川智能推出的一系列大型語言模型,其開源版本提供了7 B和13 B兩個(gè)模型。這些模型基于2.6萬
億tokens從零開始訓(xùn)練,在公開基準(zhǔn)測(cè)試(如MMLU、CMMLU、GSM8K和HumanEval)中表現(xiàn)優(yōu)異,達(dá)到或超越了其他同類開源模型的性能[11]。
llama.cpp支持將PyTorch的權(quán)重文件以及HuggingFace格式的權(quán)重文件轉(zhuǎn)換為gguf的FP16格式(.gguf)。通過這種轉(zhuǎn)換,可以將完整權(quán)重模型適配到llama.cpp框架中,從而在申威平臺(tái)上進(jìn)行高效的推理。
(1)生成gguf格式(FP16)模型,根據(jù)llama.cpp源碼目錄中的requirements.txt,安裝Python(版本3.10以上)依賴。主要依賴包括:numpygt;=1.24.4、sentencepiecegt;=0.1.98、ggufgt;=0.1.0、protobufgt;=4.21.0,lt;5.0.0。
使用llama.cpp源碼目錄中的convert.py工具轉(zhuǎn)換Baichuan2-7B-Chat模型文件為gguf FP16格式,生成FP16格式的模型文件baichuan2-7b-chat.gguf,執(zhí)行命令為:
$ python3 llama.cpp/convert.py Baichuan2-7B-Chat --outtype f16 --outfile baichuan2-7b-chat.gguf。
outtype為指定轉(zhuǎn)換輸出格式,默認(rèn)值是f16;outfile為指定轉(zhuǎn)換輸出的文件名。
(2)使用llama.cpp目錄中編譯生成主程序main加載并啟動(dòng)模型,命令為:
$ llama.cpp/main -m baichuan2-7b-chat.gguf -i -c 1024 -t 16 -n 256
輸入提示詞,并得到回復(fù):
lt;sgt;請(qǐng)簡(jiǎn)要介紹一下無錫這座城市
無錫,位于中國(guó)江蘇省南部,是江蘇省的一個(gè)地級(jí)市,地處長(zhǎng)江三角洲平原,東臨蘇州,西接常州,南瀕宜興,北依長(zhǎng)江。無錫歷史悠久,有著豐富的文化遺產(chǎn),是中國(guó)歷史文化名城之一。
......lt;/sgt;
M為指定模型文件baichuan2-7b-chat.gguf;i為以交互模式運(yùn)行;c為指定上下文長(zhǎng)度(默認(rèn)512);n為控制回復(fù)生成的最大長(zhǎng)度(默認(rèn)為128);t為線程數(shù)量(默認(rèn)為8),可根據(jù)CPU核心數(shù)調(diào)整。
3 模型量化部署
3.1 模型量化
計(jì)算密集型Python庫的優(yōu)化手段之一是使用C/C++重新實(shí)現(xiàn),這種方法可以顯著提升性能,這也是llama.cpp能夠?qū)崿F(xiàn)快速、高效推理的主要原因之一。另一個(gè)重要的優(yōu)化手段是模型量化,即通過降低模型參數(shù)的精度來換取推理速度的提升。llama.cpp提供了LLMs量化工具quantize,可以將模型參數(shù)從32位浮點(diǎn)數(shù)轉(zhuǎn)換為16位浮點(diǎn)數(shù),甚至是8位或4位整數(shù)。量化參數(shù)的命名遵循“Q”+存儲(chǔ)權(quán)重精度+特定變體的約定。以下是常用的量化方法及其適用場(chǎng)景:
Q4_0為int4量化;Q4_1表示較Q4_0更高的準(zhǔn)確性,推理速度較Q4_0慢;Q5_0表示高準(zhǔn)確度,資源消耗較大,推理速度較慢;Q5_1表示較Q5_0更高的準(zhǔn)確性,推理速度較Q5_0慢;Q4_K_S表示將Q4_K用于所有張量;Q5_K_S表示將Q5_K用于所有張量;Q6_K表示對(duì)所有張量使用Q8_K;Q8_0表示int8量化。比如,可以使用參數(shù)Q8_0,將baichuan2-7b-chat.gguf量化生成baichuan2-7b-chat.Q8_0.gguf,模型精度從16位浮點(diǎn)數(shù)降低到8位整數(shù),命
令為:
$ llama.cpp/quantize baichuan2-7b-chat.gguf baichuan2-7b-chat.Q8_0.gguf q8_0
在申威3231上,通過使用Q8_0、Q5_1、Q5_0、Q4_1以及Q4_0量化參數(shù)分別對(duì)baichuan2-7b-chat.gguf進(jìn)行量化壓縮,Q4_0參數(shù)量化后的模型大小相比FP16格式減少了近3/4,如圖1所示。
在使用純CPU且線程數(shù)相同(32線程)的情況下,分別對(duì)各個(gè)量化模型進(jìn)行推理測(cè)試。結(jié)果顯示,Q4_0參數(shù)壓縮模型的推理速度(2.85 tokens/s)相比FP16模型
(0.93 tokens/s)提升了近3倍,如圖2所示。然而,這種速度的提升是以犧牲模型精度為代價(jià)的。通過測(cè)試驗(yàn)證,在計(jì)算資源充足且對(duì)推理速度要求不高的情況下,可以使用Q8_0進(jìn)行模型量化,其效果非常接近FP16模型。
3.2 多線程推理提速
llama.cpp支持多線程并行計(jì)算,可以充分利用多核CPU的計(jì)算優(yōu)勢(shì),進(jìn)一步加速推理過程,例如在申威3231上,分別使用8核、16核、24核、32核以及48核進(jìn)行多線程推理,如圖3所示。
測(cè)試結(jié)果表明,在單個(gè)CPU上,線程數(shù)與物理核心數(shù)一致時(shí)速度最快,超過時(shí)推理速度反而有所下降。而在雙路或者多路CPU上,由于存在CPU之間的跨路損耗,并非線程數(shù)越多推理速度越快。
3.3 llama.cpp的Python調(diào)用
llama.cpp提供了一個(gè)第三方庫llama-cpp-python以實(shí)現(xiàn)llama.cpp的Python調(diào)用,方便用戶將llama.cpp整合到實(shí)際的業(yè)務(wù)中。
(1)從pypi.org上下載llama-cpp-python(版本0.2.74)的源碼包。
(2)將llama-cpp-python源碼包中的llama_cpp目錄復(fù)制到Python的第三方庫site-package中,并在llama.cpp的源碼中編譯生成libllama.so,用于Python ctypes組件訪問調(diào)用llama.cpp,編譯命令如下:
$ cd llama.cpp amp;amp; make libllama.so
(3)llama-cpp-python提供了一個(gè)High-level API,該API通過Llama類提供了簡(jiǎn)單的接口來調(diào)用llama.cpp,Python代碼如下:
import os
os.environ['LLAMA_CPP_LIB'] = '/home/uos/Documents/llama.cpp/libllama.so'
def llama_chat():
from llama_cpp import Llama
llm = Llama(model_path=\"/home/uos/Documents/llama/baichuan2-7b-chat.Q8_0.gguf\", n_threads=8, n_ctx=512)
output = llm(\"Q: 太陽系中最大的行星? A: \", max_tokens=128, stop=[\"Q:\", \"\n\"], echo=True)
print(output)
運(yùn)行Python代碼,生成與OpenAI兼容的JSON格式的回復(fù):
{'id': 'cmpl-81495aca-b334-4995-9dfa-0d7a3af5bf56', 'object': 'text_completion', 'created': 1715733917, 'model': '/home/uos/Documents/llama/baichuan2-7b-chat.Q8_0.gguf', 'choices': [{'text': 'Q: 太陽系中最大的行星? A: 木星是太陽系中最大的行星。', 'index': 0, 'logprobs': None, 'finish_reason': 'stop'}], 'usage': {'prompt_tokens': 13, 'completion_tokens': 9, 'total_tokens': 22}}
4 結(jié) 語
隨著大型語言模型的普及,人們對(duì)其私有化部署的關(guān)注逐漸增加。llama.cpp正是在這一背景下,以純C/C++的方式實(shí)現(xiàn)了在本地環(huán)境下高性能的大型語言模型推理能力。與ChatGPT系列通過API調(diào)用的大模型相比,本地化部署更加注重?cái)?shù)據(jù)的隱私和安全性,能夠以更可控、更靈活的方式部署應(yīng)用。本文介紹了當(dāng)前主流的模型壓縮方法,并展示了llama.cpp推理框架在申威CPU上實(shí)現(xiàn)大型語言模型部署的應(yīng)用案例。同時(shí),文章總結(jié)歸納了編譯、量化以及推理提速的相關(guān)策略和技巧,為大型語言模型在申威平臺(tái)上的實(shí)際落地應(yīng)用提供了實(shí)用指導(dǎo)。
參考文獻(xiàn)
[1]羅文,王厚峰.大語言模型評(píng)測(cè)綜述[J].中文信息學(xué)報(bào),2024,38(1):1-23.
[2]舒文韜,李睿瀟,孫天祥,等.大型語言模型:原理、實(shí)現(xiàn)與發(fā)展[J].計(jì)算機(jī)研究與發(fā)展,2024,61(2):351-361.
[3]張乾君. AI大模型發(fā)展綜述[J].通信技術(shù),2023,56(3):255-262.
[4] REN X, ZHOU P, MENG X, et al. PanGu-Σ: towards trillion parameter language model with sparse heterogeneous computing [J]. arXiv preprint arXiv: 2303.10845.
[5]楊春,張睿堯,黃瀧,等.深度神經(jīng)網(wǎng)絡(luò)模型量化方法綜述[J].工程科學(xué)學(xué)報(bào),2023,45(10):1613-1629.
[6]高晗,田育龍,許封元,等.深度學(xué)習(xí)模型壓縮與加速綜述[J].軟件學(xué)報(bào),2021,32(1):68-92.
[7]李江昀,趙義凱,薛卓爾,等.深度神經(jīng)網(wǎng)絡(luò)模型壓縮綜述[J].工程科學(xué)學(xué)報(bào),2019,41(10):1229-1239.
[8] KWON W, LI Z H, ZHUANG S Y, et al. Efficient memory management for large language model serving with paged attention [J]. arXiv preprint arXiv: 2309.06180.
[9]黃春,姜浩,全哲,等.面向深度學(xué)習(xí)的批處理矩陣乘法設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)學(xué)報(bào),2022,45(2):225-239.
[10]閆昊,劉芳芳,馬文靜,等.申威1621處理器上矩陣乘法優(yōu)化研究[J].軟件學(xué)報(bào),2023,34(7):3451-3463.
[11] YANG A Y, XIAO B, WANG B N, et al. Baichuan 2: open large-scale language models [J]. arXiv preprint arXiv: 2309.10305.