云原生 AI 工程化實(shí)踐之 FasterTransformer 加速 LLM 推理

01?背景
OpenAI 在 3 月 15 日發(fā)布了備受矚目的 GPT4,它在司法考試和程序編程領(lǐng)域的驚人表現(xiàn)讓大家對大語言模型的熱情達(dá)到了頂點(diǎn)。人們紛紛議論我們是否已經(jīng)跨入通用人工智能的時(shí)代。與此同時(shí),基于大語言模型的應(yīng)用也如雨后春筍般出現(xiàn),為我們帶來了協(xié)同辦公、客服對話、語言翻譯、內(nèi)容生成等方面前所未有的暢快體驗(yàn)。
然而,當(dāng)我們享受著大語言模型帶來的普惠 AI 能力時(shí),它也給開發(fā)者們帶來了前所未有的挑戰(zhàn)。隨著模型不斷增大,計(jì)算量也達(dá)到了空前的高度,直接導(dǎo)致推理時(shí)間變長。為了解決大語言模型推理的延遲問題,業(yè)界已經(jīng)提供了一些解決方案,比如 Tensorrt、FasterTransformer 和 vllm。為了幫助用戶解決云原生系統(tǒng)中的大語言模型推理加速問題,云原生 AI 套件引入了 FasterTransformer 推理加速方案。
本文將在 ACK 容器服務(wù)上,以 Bloom7B1 模型為例展示如何使用 FasterTransformer 進(jìn)行推理加速。本例中會(huì)使用以下組件:
Arena
Arena 是基于 Kubernetes 的機(jī)器學(xué)習(xí)輕量級(jí)解決方案,支持?jǐn)?shù)據(jù)準(zhǔn)備、模型開發(fā),模型訓(xùn)練、模型預(yù)測的完整生命周期,提升數(shù)據(jù)科學(xué)家工作效率。同時(shí)和阿里云的基礎(chǔ)云服務(wù)深度集成,支持 GPU 共享、CPFS 等服務(wù),可以運(yùn)行阿里云優(yōu)化的深度學(xué)習(xí)框架,最大化使用阿里云異構(gòu)設(shè)備的性能和成本的效益。更多 arena 信息,可以參考云原生 AI 套件開發(fā)者使用指南。
Triton Server
Triton Server為Nvidia 提供了機(jī)器學(xué)習(xí)推理引擎,可以支持 Tensorflow、Pytorch、Tensorrt 和 Fastertransformer 多種 backend。云原生 AI 套件已經(jīng)將 Triton Server 加入到 Arena 中,用戶可以通過簡單的命令行或 SDK 來在云原生系統(tǒng)中完成 Triton Server 服務(wù)的拉起、運(yùn)維和監(jiān)控。更多 AI 套件中使用 Triton Server 信息,可以參考部署 PyTorch 模型推理服務(wù)。
FasterTransformer
FasterTransformer 是真對于 Transofrmer 類型模型(也包括 encoder-only、decoder-only)的推理加速方案,其提供了 Kernel Fuse、Memory reuse、kv cache、量化等多種優(yōu)化方案,同時(shí)也提供了 Tensor Parallel 和 Pipeline Parallel 兩種分布式推理方案。本文將介紹如何在云原生 AI 套件中使用 FasterTransformer 進(jìn)行模型的推理加速。
02?環(huán)境準(zhǔn)備
環(huán)境準(zhǔn)備分為兩個(gè)部分,第一個(gè)部分是創(chuàng)建包含 GPU 的 Kubernetes 集群和安裝云原生 AI 套件,第二個(gè)部分是從 huggingface 官網(wǎng)下載 bloom-7b1 模型。
模型的下載命令如下:
通過上面的命令,可以將 huggingface repo 中的文件下載到本地:

下載完成后,我們將 bloom-71 文件夾上傳到 OSS 中,作為推理時(shí)的共享存儲(chǔ),OSS 的使用可以參考開始使用 OSS。
上傳到 OSS 之后,分別創(chuàng)建名稱為 bloom7b1-pv 和 bloom7b1-pvc 的 PV 和 PVC,以用于推理服務(wù)的容器掛載。具體操作,請參見使用 OSS 靜態(tài)存儲(chǔ)卷。
03?模型轉(zhuǎn)換
FasterTransformer 本質(zhì)上是對模型的重寫,它通過 CUDA、cuDNN 和 cuBLAS 重寫了 Transformer 模型結(jié)構(gòu),因此其具有自己的模型結(jié)構(gòu)和模型參數(shù)的描述方式。而我們的模型一般是通過 Pytorch、Tesorflow、Megatron 或 huggingface 這樣的訓(xùn)練框架產(chǎn)出,其往往又具有自己單獨(dú)的一套模型結(jié)構(gòu)和參數(shù)的表達(dá),因此在使用FasterTransformer時(shí),就需要將模型原有的 checkpoint 轉(zhuǎn)換為 FasterTransformer 的結(jié)構(gòu)。
FasterTransformer 中已經(jīng)支持了多種類型的轉(zhuǎn)換腳本,這里我們使用 FasterTransofrmer 提供的 examples/pytorch/gpt/utils/huggingface_bloom_convert.py。
云原生 AI 套件已經(jīng)接入了上述的轉(zhuǎn)換邏輯,因此,通過如下腳本即可完成一次模型的轉(zhuǎn)換。
通過 arena log 來觀察轉(zhuǎn)換的日志:
通過 arena list 命令查看轉(zhuǎn)換是否執(zhí)行結(jié)束:
轉(zhuǎn)換完成后,會(huì)在 OSS 上創(chuàng)建一個(gè) model/arena/bloom-7b1-ft-fp16 文件夾,文件中會(huì)存儲(chǔ) FasterTransofrmer 所對應(yīng)的 checkpoint。
04?性能對比
此時(shí),我們的 OSS 上已經(jīng)有兩份 bloom-7b1 checkpoint,一份是 bloom-7b 文件夾存儲(chǔ)了 huggingface 原生的 checkpoint,另一份是 bloom-7b-ft-fp16 文件夾存儲(chǔ)了轉(zhuǎn)換后的 FasterTransformer 的 checkpoint。我們將使用這兩份 checkpoint 進(jìn)行性能對比,看一下來 FasterTransformer 是否能夠帶來性能的提升。
性能對比使用 Fastertransformer 提供的 examples/pytorch/gpt/bloom_lambada.py,我們也已經(jīng)集成到了 AI 套件中。這里我們分別提交兩個(gè)性能評(píng)測命令。
對 Huggingface Bloom-7b1 評(píng)測的命令:
查看 HuggingFace 的結(jié)果:
對 Fastertransformer Blooom-7b 評(píng)測的命令:
查看 FasterTransformer 的結(jié)果,可以看見帶來了 2.5 倍的性能提升。
通過結(jié)果對比可以看見,F(xiàn)astertransformer 與原生的 Huggingface 相比有比較明顯的性能提升。
05?模型部署
在這一小節(jié),我們使用 Triton Server 對 FasterTransformer 進(jìn)行部署,Triton Server 中原生并不支持 FasterTransformer 的 backend,需要我們配合 Nvidia 提供的 Fastertransformer backend 來使用。通過使用 FasterTransformer backend,Triton Server 不再進(jìn)行 GPU 資源的分配,F(xiàn)asterTransformer backend 會(huì)根據(jù) CUDA_VISIBLE_DEVICES 判斷當(dāng)前可用 GPU 資源,并分配給對應(yīng)的 RANK 來執(zhí)行分布式的推理。
FasterTransformer 對應(yīng)的模型 Repo 目錄如下所示:
使用功能 Arena 的如下命令來啟動(dòng) FasterTransformer:
通過 kubectl logs,我們可以看到 triton server 的部署日志,通過日志可以看到,triton server 啟動(dòng)了兩個(gè) gpu 來進(jìn)行分布式推理。
06?服務(wù)請求
啟動(dòng) forward 進(jìn)行驗(yàn)證:
這里我們使用 Triton Server 提供的 python SDK 所編寫的腳本來向 Triton Server 發(fā)起請求。腳本中主要完成三件事情:
發(fā)起 client 請求命令如下:
07?總結(jié)
本文我們通過 Bloom-7b1 模型展示了如何在云原生 AI 套件中使用 FasterTransformer 對大語言模型進(jìn)行加速,通過與 HuggingFace 的版本對比可以帶來 2.5 倍的性能提升。后續(xù)我們會(huì)逐步推出更多大模型相關(guān)的推理加速方案,以滿足不同的業(yè)務(wù)需求,大家敬請期待。
