0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用推理服務(wù)器加速大型Transformer模型的推理

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:NVIDIA ? 2022-10-10 16:07 ? 次閱讀

這是討論 NVIDIA FasterTransformer 庫(kù)的兩部分系列的第一部分,該庫(kù)是用于對(duì)任意大小(多達(dá)數(shù)萬(wàn)億個(gè)參數(shù))的Transformer進(jìn)行分布式推理的最快庫(kù)之一。它提供了 FasterTransformer 的概述,包括使用該庫(kù)的好處。

使用 FasterTransformer 和 Triton 推理服務(wù)器部署 GPT-J 和 T5(第 2 部分)是一個(gè)指南,說(shuō)明了使用 FasterTransformer 庫(kù)和 Triton 推理服務(wù)器以具有張量并行性的最佳方式為 T5-3B 和 GPT-J 6B 模型提供服務(wù)。

Transformers 是當(dāng)今最具影響力的 AI 模型架構(gòu)之一,正在塑造未來(lái) AI 研發(fā)的方向。它們最初是作為自然語(yǔ)言處理 (NLP) 的工具而發(fā)明的,現(xiàn)在幾乎用于任何 AI 任務(wù),包括計(jì)算機(jī)視覺(jué)、自動(dòng)語(yǔ)音識(shí)別、分子結(jié)構(gòu)分類(lèi)和金融數(shù)據(jù)處理。考慮到如此廣泛使用的是注意力機(jī)制,它顯著提高了模型的計(jì)算效率、質(zhì)量和準(zhǔn)確性。

具有數(shù)千億參數(shù)的大型基于 Transformer 的模型的行為就像一個(gè)巨大的百科全書(shū)和大腦,其中包含有關(guān)它所學(xué)到的一切的信息。他們以獨(dú)特的方式對(duì)所有這些知識(shí)進(jìn)行結(jié)構(gòu)化、表示和總結(jié)。擁有具有大量先驗(yàn)知識(shí)的此類(lèi)模型使我們能夠使用新的強(qiáng)大的一次性或少量學(xué)習(xí)技術(shù)來(lái)解決許多 NLP 任務(wù)。

由于它們的計(jì)算效率,Transformer可以很好地?cái)U(kuò)展——通過(guò)增加網(wǎng)絡(luò)的規(guī)模和訓(xùn)練數(shù)據(jù)的數(shù)量,研究人員可以改善觀察并提高準(zhǔn)確性。

然而,訓(xùn)練如此大的模型并非易事。這些模型可能需要比一個(gè) GPU 供應(yīng)更多的內(nèi)存——甚至是數(shù)百個(gè) GPU。值得慶幸的是,NVIDIA 研究人員已經(jīng)創(chuàng)建了強(qiáng)大的開(kāi)源工具,例如 NeMo Megatron,可以優(yōu)化訓(xùn)練過(guò)程。

快速和優(yōu)化的推理使企業(yè)能夠充分發(fā)揮這些大型模型的潛力。最新研究表明,增加模型和數(shù)據(jù)集的大小可以提高這種模型在不同領(lǐng)域(NLP、CV 等)下游任務(wù)上的質(zhì)量。

同時(shí),數(shù)據(jù)表明這種技術(shù)也適用于多域任務(wù)。 (例如,參見(jiàn) OpenAI 的 DALLE-2 和 Google 的 Imagen 等關(guān)于文本到圖像生成的研究論文。)依賴于大型模型的“凍結(jié)”拷貝的 p-tuning 等研究方向甚至增加了擁有穩(wěn)定且優(yōu)化的推理流程。此類(lèi)大型模型的優(yōu)化推理需要分布式多 GPU 多節(jié)點(diǎn)解決方案。

用于加速推斷大型Transformer的庫(kù)

NVIDIA FasterTransformer (FT) 是一個(gè)庫(kù),用于實(shí)現(xiàn)基于Transformer的神經(jīng)網(wǎng)絡(luò)推理的加速引擎,特別強(qiáng)調(diào)大型模型,以分布式方式跨越許多 GPU 和節(jié)點(diǎn)。

FasterTransformer 包含Transformer塊的高度優(yōu)化版本的實(shí)現(xiàn),其中包含編碼器和解碼器部分。

使用此模塊,您可以運(yùn)行完整的編碼器-解碼器架構(gòu)(如 T5)以及僅編碼器模型(如 BERT)或僅解碼器模型(如 GPT)的推理。 它是用 C++/CUDA 編寫(xiě)的,依賴于高度優(yōu)化的 cuBLAS、cuBLASLt 和 cuSPARSELt 庫(kù)。 這使您可以在 GPU 上構(gòu)建最快的Transformer推理流程。

poYBAGND0tWABj_bAAIVF-j4j-o828.png

圖 1.使用張量并行(張量 MP 分區(qū))和管道并行(管道 MP 分區(qū)),在四個(gè) GPU 之間分布了幾個(gè) transformer / attention 塊

與 NVIDIA TensorRT 等其他編譯器相比,F(xiàn)T 的顯著特點(diǎn)是它支持以分布式方式推斷大型Transformer模型。

上圖顯示了如何使用張量并行 (TP) 和流水線并行 (PP) 技術(shù)將具有多個(gè)經(jīng)典transformer/attention的神經(jīng)網(wǎng)絡(luò)拆分到多個(gè) GPU 和節(jié)點(diǎn)上。

當(dāng)每個(gè)張量被分成多個(gè)塊時(shí),就會(huì)發(fā)生張量并行性,并且張量的每個(gè)塊都可以放置在單獨(dú)的 GPU 上。在計(jì)算過(guò)程中,每個(gè)塊在不同的 GPU 上單獨(dú)并行處理,并且可以通過(guò)組合來(lái)自多個(gè) GPU 的結(jié)果來(lái)計(jì)算結(jié)果(最終張量)。

當(dāng)模型被深度拆分并將不同的完整層放置到不同的 GPU/節(jié)點(diǎn)上時(shí),就會(huì)發(fā)生流水線并行。

在底層,啟用節(jié)點(diǎn)間/節(jié)點(diǎn)內(nèi)通信依賴于 MPI 和 NVIDIA NCCL。使用此軟件堆棧,您可以在多個(gè) GPU 上以張量并行模式運(yùn)行大型Transformer,以減少計(jì)算延遲。

同時(shí),TP 和 PP 可以結(jié)合在一起,在多 GPU 和多節(jié)點(diǎn)環(huán)境中運(yùn)行具有數(shù)十億和數(shù)萬(wàn)億個(gè)參數(shù)(相當(dāng)于 TB 級(jí)權(quán)重)的大型 Transformer 模型。

除了 C 中的源代碼,F(xiàn)asterTransformer 還提供 TensorFlow 集成(使用 TensorFlow 操作)、PyTorch 集成(使用 PyTorch 操作)和 Triton 集成作為后端。

目前,TensorFlow op 僅支持單 GPU,而 PyTorch op 和 Triton 后端都支持多 GPU 和多節(jié)點(diǎn)。

為了避免為模型并行性而拆分模型的額外工作,F(xiàn)asterTransformer 還提供了一個(gè)工具,用于將模型從不同格式拆分和轉(zhuǎn)換為 FasterTransformer 二進(jìn)制文件格式。然后 FasterTransformer 可以直接以二進(jìn)制格式加載模型。

目前,F(xiàn)T 支持 Megatron-LM GPT-3、GPT-J、BERT、ViT、Swin Transformer、Longformer、T5 和 XLNet 等模型。您可以在 GitHub 上的 FasterTransformer 存儲(chǔ)庫(kù)中查看最新的支持矩陣。

FT 適用于計(jì)算能力 》= 7.0 的 GPU,例如 V100、A10、A100 等。

pYYBAGND0teAR_taAADePpX0NAY101.png

圖 2.GPT-J 6B 模型推斷和加速比較

FasterTransformer 中的優(yōu)化

深度學(xué)習(xí)訓(xùn)練的通用框架相比,F(xiàn)T 使您能夠獲得更快的推理管道,并且基于 Transformer 的 NN 具有更低的延遲和更高的吞吐量。

允許 FT 對(duì) GPT-3 和其他大型Transformer模型進(jìn)行最快推理的一些優(yōu)化技術(shù)包括:

層融合——預(yù)處理階段的一組技術(shù),將多層神經(jīng)網(wǎng)絡(luò)組合成一個(gè)單一的神經(jīng)網(wǎng)絡(luò),將使用一個(gè)單一的內(nèi)核進(jìn)行計(jì)算。 這種技術(shù)減少了數(shù)據(jù)傳輸并增加了數(shù)學(xué)密度,從而加速了推理階段的計(jì)算。 例如, multi-head attention 塊中的所有操作都可以合并到一個(gè)內(nèi)核中。

poYBAGND0tiAMAQJAADrPGJUrj0885.png

圖 3. NVIDIA Faster transformer 庫(kù)中緩存機(jī)制的演示

自回歸模型/激活緩存的推理優(yōu)化

為了防止通過(guò)Transformer重新計(jì)算每個(gè)新token 生成器的先前鍵和值,F(xiàn)T 分配一個(gè)緩沖區(qū)來(lái)在每一步存儲(chǔ)它們。

雖然需要一些額外的內(nèi)存使用,但 FT 可以節(jié)省重新計(jì)算的成本、在每一步分配緩沖區(qū)以及連接的成本。該過(guò)程的方案上圖 所示。相同的緩存機(jī)制用于 NN 的多個(gè)部分。

內(nèi)存優(yōu)化

與 BERT 等傳統(tǒng)模型不同,大型 Transformer 模型具有多達(dá)數(shù)萬(wàn)億個(gè)參數(shù),占用數(shù)百 GB 存儲(chǔ)空間。即使我們以半精度存儲(chǔ)模型,GPT-3 175b 也需要 350 GB。因此有必要減少其他部分的內(nèi)存使用。

例如,在 FasterTransformer 中,我們?cè)诓煌慕獯a器層重用了激活/輸出的內(nèi)存緩沖區(qū)。由于 GPT-3 中的層數(shù)為 96,因此我們只需要 1/96 的內(nèi)存量用于激活。

使用 MPI 和 NCCL 實(shí)現(xiàn)節(jié)點(diǎn)間/節(jié)點(diǎn)內(nèi)通信并支持模型并行性

在 GPT 模型中,F(xiàn)asterTransormer 同時(shí)提供張量并行和流水線并行。 對(duì)于張量并行性,F(xiàn)asterTransformer 遵循了 Megatron 的思想。 對(duì)于自注意力塊和前饋網(wǎng)絡(luò)塊,F(xiàn)T 按行拆分第一個(gè)矩陣的權(quán)重,并按列拆分第二個(gè)矩陣的權(quán)重。 通過(guò)優(yōu)化,F(xiàn)T 可以將每個(gè) Transformer 塊的歸約操作減少到兩倍。

對(duì)于流程并行性,F(xiàn)asterTransformer 將整批請(qǐng)求拆分為多個(gè)微批,隱藏了通信的泡沫。 FasterTransformer 會(huì)針對(duì)不同情況自動(dòng)調(diào)整微批量大小。

MatMul 內(nèi)核自動(dòng)調(diào)整(GEMM 自動(dòng)調(diào)整)

矩陣乘法是基于Transformer的神經(jīng)網(wǎng)絡(luò)中主要和最繁重的操作。 FT 使用來(lái)自 CuBLAS 和 CuTLASS 庫(kù)的功能來(lái)執(zhí)行這些類(lèi)型的操作。 重要的是要知道 MatMul 操作可以在“硬件”級(jí)別使用不同的低級(jí)算法以數(shù)十種不同的方式執(zhí)行。

GemmBatchedEx 函數(shù)實(shí)現(xiàn) MatMul 操作,并以“cublasGemmAlgo_t”作為輸入?yún)?shù)。 使用此參數(shù),您可以選擇不同的底層算法進(jìn)行操作。

FasterTransformer 庫(kù)使用此參數(shù)對(duì)所有底層算法進(jìn)行實(shí)時(shí)基準(zhǔn)測(cè)試,并為模型的參數(shù)和您的輸入數(shù)據(jù)(注意層的大小、注意頭的數(shù)量、隱藏層的大?。┻x擇最佳的一個(gè)。 此外,F(xiàn)T 對(duì)網(wǎng)絡(luò)的某些部分使用硬件加速的底層函數(shù),例如 __expf、__shfl_xor_sync。

精度較低的推理

FT 的內(nèi)核支持使用 fp16 和 int8 中的低精度輸入數(shù)據(jù)進(jìn)行推理。 由于較少的數(shù)據(jù)傳輸量和所需的內(nèi)存,這兩種機(jī)制都允許加速。 同時(shí),int8 和 fp16 計(jì)算可以在特殊硬件上執(zhí)行,例如張Tensor Core(適用于從 Volta 開(kāi)始的所有 GPU 架構(gòu)),以及即將推出的 Hopper GPU 中的Transformer引擎。

更多

快速的 C++ BeamSearch 實(shí)現(xiàn)

針對(duì) TensorParallelism 8 模式優(yōu)化 all-reduce 當(dāng)模型的權(quán)重部分在 8 個(gè) GPU 之間拆分時(shí)

具有 FasterTransformer 后端的 NVIDIA Triton 推理服務(wù)器

NVIDIA Triton 推理服務(wù)器是一款開(kāi)源推理服務(wù)軟件,有助于標(biāo)準(zhǔn)化模型部署和執(zhí)行,在生產(chǎn)中提供快速且可擴(kuò)展的 AI。 Triton 穩(wěn)定且快速,允許您使用準(zhǔn)備好的 Docker 容器以簡(jiǎn)單的方式運(yùn)行 ML/DL 模型的推理,該容器僅使用一行代碼和簡(jiǎn)單的類(lèi)似 JSON 的配置。

Triton 支持使用多個(gè)后端的模型,例如 PyTorch、TorchScript、Tensorflow、ONNXRuntime 和 OpenVINO。 Triton 采用您在其中一個(gè)框架中訓(xùn)練的導(dǎo)出模型,并使用相應(yīng)的后端為您透明地運(yùn)行該模型進(jìn)行推理。 它也可以使用自定義后端進(jìn)行擴(kuò)展。 Triton 使用 HTTP/gRPC API 包裝您的模型,并為多種語(yǔ)言提供客戶端庫(kù)。

pYYBAGND0tiAaNMfAAHJE4z-L4k003.png

圖 4. Triton 推理服務(wù)器,具有多個(gè)后端,用于對(duì)使用不同框架訓(xùn)練的模型進(jìn)行推理

Triton 包含 FasterTransformer 庫(kù)作為后端(圖 4),該庫(kù)支持使用 TP 和 PP 運(yùn)行大型Transformer模型的分布式多 GPU、多節(jié)點(diǎn)推理。 今天,帶有 FasterTransformer 后端的 Triton 支持 GPT-J、GPT-Megatron 和 T5 模型。

關(guān)于作者

Denis Timonin 是一名深度學(xué)習(xí)解決方案架構(gòu)師和工程師,目前在 NVIDIA 從事世界上最大的神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和推理,并在計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理和自動(dòng)語(yǔ)音識(shí)別領(lǐng)域構(gòu)建人工智能解決方案。在此之前,丹尼斯在華為研究了移動(dòng)設(shè)備的小型精確神經(jīng)網(wǎng)絡(luò),并構(gòu)建了復(fù)雜的人工智能管道,用于金融數(shù)據(jù)分類(lèi)、醫(yī)學(xué)圖像分割、目標(biāo)檢測(cè)和跟蹤。

Bo Yang Hsueh 是 FasterTransformer 的領(lǐng)導(dǎo)者和主要開(kāi)發(fā)人員。三年前他參加了 transformer 加速賽。最近,他專(zhuān)注于大型 NLP 模型加速,包括 T5 和 GPT-J 等公共模型。楊波獲得國(guó)立交通大學(xué)計(jì)算機(jī)科學(xué)碩士學(xué)位。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    27

    文章

    4590

    瀏覽量

    128133
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8700

    瀏覽量

    84528
  • 深度學(xué)習(xí)
    +關(guān)注

    關(guān)注

    73

    文章

    5422

    瀏覽量

    120587
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    壓縮模型會(huì)加速推理嗎?

    位壓縮和“無(wú)”配置下都運(yùn)行了 115 毫秒,盡管精度有所下降。我認(rèn)為將 float 網(wǎng)絡(luò)參數(shù)壓縮為 uint8_t 不僅可以節(jié)省內(nèi)存,還可以加快推理速度。那么,壓縮模型是否應(yīng)該加速推理
    發(fā)表于 01-29 06:24

    使用rk3588多npu推理模型,模型推理時(shí)間還增加了,這怎么解釋

    使用rk3588多npu推理模型,模型推理時(shí)間還增加了,這怎么解釋
    發(fā)表于 11-05 18:22

    HarmonyOS:使用MindSpore Lite引擎進(jìn)行模型推理

    場(chǎng)景介紹 MindSpore Lite 是一款 AI 引擎,它提供了面向不同硬件設(shè)備 AI 模型推理的功能,目前已經(jīng)在圖像分類(lèi)、目標(biāo)識(shí)別、人臉識(shí)別、文字識(shí)別等應(yīng)用中廣泛使用。 本文介紹
    發(fā)表于 12-14 11:41

    NVIDIA Triton推理服務(wù)器幫助Teams使用認(rèn)知服務(wù)優(yōu)化語(yǔ)音識(shí)別模型

    Microsoft Teams借助AI生成的實(shí)時(shí)字幕和轉(zhuǎn)錄功能,幫助全球?qū)W生和職場(chǎng)人士順利進(jìn)行在線會(huì)議。用于訓(xùn)練的NVIDIA AI計(jì)算技術(shù)和用于推理語(yǔ)音識(shí)別模型的NVIDIA Triton推理
    的頭像 發(fā)表于 01-04 17:45 ?1635次閱讀

    使用MIG和Kubernetes部署Triton推理服務(wù)器

      NVIDIA Triton 推理服務(wù)器是一款開(kāi)源人工智能模型服務(wù)軟件,可簡(jiǎn)化在生產(chǎn)中大規(guī)模部署經(jīng)過(guò)培訓(xùn)的人工智能模型。對(duì)于
    的頭像 發(fā)表于 04-07 09:54 ?3223次閱讀

    利用NVIDIA Triton推理服務(wù)器加速語(yǔ)音識(shí)別的速度

    網(wǎng)易互娛 AI Lab 的研發(fā)人員,基于 Wenet 語(yǔ)音識(shí)別工具進(jìn)行優(yōu)化和創(chuàng)新,利用 NVIDIA Triton 推理服務(wù)器的 GPU Batch Inference 機(jī)制加速了語(yǔ)音識(shí)別的速度,并且降低了成本。
    的頭像 發(fā)表于 05-13 10:40 ?1716次閱讀

    如何對(duì)推理加速器進(jìn)行基準(zhǔn)測(cè)試

      客戶對(duì)基準(zhǔn)推理學(xué)習(xí)曲線的最后階段是開(kāi)發(fā)自己的模型,使用通常來(lái)自 Nvidia 或數(shù)據(jù)中心的訓(xùn)練硬件/軟件,然后在可能的目標(biāo)推理加速器上對(duì)該模型
    的頭像 發(fā)表于 06-06 16:02 ?1208次閱讀

    騰訊云TI平臺(tái)利用NVIDIA Triton推理服務(wù)器構(gòu)造不同AI應(yīng)用場(chǎng)景需求

    騰訊云 TI 平臺(tái) TI-ONE 利用 NVIDIA Triton 推理服務(wù)器構(gòu)造高性能推理服務(wù)部署平臺(tái),使用戶能夠非常便捷地部署包括 TNN 模型
    的頭像 發(fā)表于 09-05 15:33 ?1763次閱讀

    NVIDIA Triton推理服務(wù)器的功能與架構(gòu)簡(jiǎn)介

    前面文章介紹微軟 Teams 會(huì)議系統(tǒng)、微信軟件與騰訊 PCG 服務(wù)三個(gè) Triton 推理服務(wù)器的成功案例,讓大家對(duì) Triton 有初步的認(rèn)知,但別誤以為這個(gè)軟件只適合在大型
    的頭像 發(fā)表于 11-02 10:44 ?2327次閱讀

    基于Transformer大型語(yǔ)言模型(LLM)的內(nèi)部機(jī)制

    本文旨在更好地理解基于 Transformer大型語(yǔ)言模型(LLM)的內(nèi)部機(jī)制,以提高它們的可靠性和可解釋性。 隨著大型語(yǔ)言模型(LLM
    的頭像 發(fā)表于 06-25 15:08 ?1300次閱讀
    基于<b class='flag-5'>Transformer</b>的<b class='flag-5'>大型</b>語(yǔ)言<b class='flag-5'>模型</b>(LLM)的內(nèi)部機(jī)制

    如何使用NVIDIA Triton 推理服務(wù)器來(lái)運(yùn)行推理管道

    使用集成模型在 NVIDIA Triton 推理服務(wù)器上為 ML 模型管道提供服務(wù)
    的頭像 發(fā)表于 07-05 16:30 ?1298次閱讀
    如何使用NVIDIA Triton <b class='flag-5'>推理</b><b class='flag-5'>服務(wù)器</b>來(lái)運(yùn)行<b class='flag-5'>推理</b>管道

    周四研討會(huì)預(yù)告 | 注冊(cè)報(bào)名 NVIDIA AI Inference Day - 大模型推理線上研討會(huì)

    由 CSDN 舉辦的 NVIDIA AI Inference Day - 大模型推理線上研討會(huì),將幫助您了解 NVIDIA 開(kāi)源大型語(yǔ)言模型(LLM)
    的頭像 發(fā)表于 10-26 09:05 ?283次閱讀

    使用NVIDIA Triton推理服務(wù)器來(lái)加速AI預(yù)測(cè)

    這家云計(jì)算巨頭的計(jì)算機(jī)視覺(jué)和數(shù)據(jù)科學(xué)服務(wù)使用 NVIDIA Triton 推理服務(wù)器來(lái)加速 AI 預(yù)測(cè)。
    的頭像 發(fā)表于 02-29 14:04 ?457次閱讀

    LLM大模型推理加速的關(guān)鍵技術(shù)

    LLM(大型語(yǔ)言模型)大模型推理加速是當(dāng)前人工智能領(lǐng)域的一個(gè)研究熱點(diǎn),旨在提高模型在處理復(fù)雜任務(wù)
    的頭像 發(fā)表于 07-24 11:38 ?493次閱讀

    AMD助力HyperAccel開(kāi)發(fā)全新AI推理服務(wù)器

    提高成本效率。HyperAccel 針對(duì)新興的生成式 AI 應(yīng)用提供超級(jí)加速的芯片 IP/解決方案。HyperAccel 已經(jīng)打造出一個(gè)快速、高效且低成本的推理系統(tǒng),加速了基于轉(zhuǎn)換
    的頭像 發(fā)表于 09-18 09:37 ?160次閱讀
    AMD助力HyperAccel開(kāi)發(fā)全新AI<b class='flag-5'>推理</b><b class='flag-5'>服務(wù)器</b>