最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

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

2023-08-07 15:35 作者:阿里云  | 我要投稿

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ù)需求,大家敬請期待。



云原生 AI 工程化實(shí)踐之 FasterTransformer 加速 LLM 推理的評(píng)論 (共 條)

分享到微博請遵守國家法律
红原县| 霞浦县| 江永县| 荣成市| 钟山县| 葵青区| 林西县| 巩义市| 彭山县| 侯马市| 时尚| 洞头县| 西昌市| 托克托县| 绥德县| 芦溪县| 泰来县| 台山市| 西充县| 大洼县| 枣阳市| 化州市| 绥德县| 安顺市| 徐州市| 黑河市| 西林县| 冷水江市| 民勤县| 昌黎县| 特克斯县| 富源县| 武宣县| 应城市| 达拉特旗| 麻阳| 道孚县| 金华市| 西林县| 青岛市| 印江|