91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

百度智算峰會精彩回顧:視覺大模型訓(xùn)練與推理優(yōu)化

NVIDIA英偉達(dá) ? 來源:未知 ? 2022-12-29 00:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在昨日舉行的 “2022 百度云智峰會·智算峰會” 上,百度智能云發(fā)布國內(nèi)首個全棧自研的 AI 基礎(chǔ)設(shè)施 “百度 AI 大底座”,引發(fā)行業(yè)的廣泛關(guān)注。其中,百度百舸·AI 異構(gòu)計算平臺作為 AI IaaS 層的重要構(gòu)成,是 AI 大底座堅實的基礎(chǔ)設(shè)施。百度百舸·AI 異構(gòu)計算平臺整合了百度自研的 AI 芯片 “昆侖芯”,在 AI 計算、存儲、加速、容器方面進(jìn)行系統(tǒng)優(yōu)化,發(fā)揮算力的最佳性能和效率。

在本次峰會上,NVIDIA GPU 計算專家陳庾分享了以 “視覺大模型訓(xùn)練與推理優(yōu)化” 為題的演講,以 Swin Transformer 模型為例,介紹了 NVIDIA 在視覺大模型訓(xùn)練與推理優(yōu)化上的探索和實踐經(jīng)驗,包括在 Swin Transformer 的訓(xùn)練和推理上采用到的加速技巧以及對應(yīng)的加速效果。這些加速方法目前已經(jīng)應(yīng)用到百度百舸·AI 異構(gòu)計算平臺的 AIAK 加速功能中,助力各行業(yè)客戶的 AI 業(yè)務(wù)加速落地。

以下為演講內(nèi)容概要。

視覺大模型簡介:Swim Transformer

32acaef2-86c8-11ed-bfe3-dac502259ad0.png

在介紹 Swin Transformer 之前,我們可以先回顧一下 Vision Transformer (ViT) 的模型結(jié)構(gòu)。如左圖所示,ViT 會將一個圖像分割成一系列的圖像塊(patch),然后通過基于 Transformer 的編碼器對這一系列圖像塊進(jìn)行編碼,最后得到可用于分類等任務(wù)的特征。

而 Swin Transformer,它引入了 window attention 的概念,不同于 ViT 對整個圖像進(jìn)行注意力計算(attention)。Swin Transformer 會先將圖像劃分成若干個窗口(window),然后僅對窗口內(nèi)部的圖像塊進(jìn)行對應(yīng)的注意力計算,從而減少計算量。為了彌補(bǔ)窗口帶來的邊界問題,Swin Transformer 進(jìn)一步引入 window shift 的操作。同時為了使得模型有更豐富的位置信息,Swin Transformer 還在注意力計算時引入了 relative position bias。

在 Swin Transformer 的網(wǎng)絡(luò)結(jié)構(gòu)中,我們也可以看到, Swin Transformer 被劃分為多個階段(stage),其中每個階段的分辨率是不一樣的,從而形成了一個分辨率金字塔,這樣也使得每個階段的計算復(fù)雜程度也逐漸降低。每個階段中對應(yīng)若干個 transformer block。

接下來,我們從具體操作的角度來對 Swin Transformer 進(jìn)行算子的劃分。可以看到,一個 transformer block 中涉及到三大部分,第一部分是如 window shift、partition、reverse 的一些窗口相關(guān)的操作,第二部分是注意力計算,第三部分是 FFN 計算。而 attention 和 FFN 部分又可以進(jìn)一步細(xì)分為若個算子,最終如圖所示,我們可以將整個模型細(xì)分為幾十個算子的組合。這樣的算子劃分,對于我們進(jìn)行性能分析,定位性能瓶頸以及開展加速優(yōu)化而言,都是非常重要的。

32e27ab4-86c8-11ed-bfe3-dac502259ad0.png

視覺大模型 Swim Transformer 的訓(xùn)練加速

接下來,介紹 NVIDIA 在 Swim Transformer 模型訓(xùn)練加速上進(jìn)行的優(yōu)化工作。對于 Swin Transformer 而言,我們一般采用數(shù)據(jù)并行的方式進(jìn)行多 GPU 訓(xùn)練,我們發(fā)現(xiàn)卡間通訊的開銷占比會相對較少,所以在這里,我們優(yōu)先對單 GPU 上的計算瓶頸進(jìn)行優(yōu)化。

32f7f90c-86c8-11ed-bfe3-dac502259ad0.png

首先,我們通過 nsight system 性能分析工具來看一下整個 baseline 的性能表現(xiàn)。左圖所示的是 FP32 的 baseline,可以看到它的 GPU 利用率是很高的,而其中占比最高的是矩陣乘法相關(guān)的 kernel。

那么對于矩陣乘法而言,我們的一個優(yōu)化手段,就是充分利用 tensor core 進(jìn)行加速,可以考慮直接采用 tf32 tensor core 或者在混合精度下采用 fp16 tensor core。在這里,我們采用了混合精度的方案,可以看到右圖中,矩陣乘法的 kernel 由于采用了 fp16 tensor core,其耗時占比有了明顯下降。此外,采用混合精度的方式,我們也可以在 kernel io 上取得一定的收益。整體而言,在 Swin-Large 模型上,通過混合精度的方式,我們可以取得了 1.63 倍的吞吐提升。

下一個優(yōu)化方案是算子融合。算子融合一般而言可以為我們帶來兩個好處:一個是減少 kernel launch 的開銷。如左圖所示,兩個 cuda kernel 的執(zhí)行需要兩次 launch,那樣可能會導(dǎo)致 kernel 之間存在一定的空隙,使得 GPU 空閑。

如果我們將兩個 cuda kernel 融合成一個 cuda kernel,一方面節(jié)省了一次 launch,同時也可以避免 gap 的產(chǎn)生。另外一個好處是減少了 global memory 的訪問,因為 global memory 的訪問是非常耗時的。而兩個獨(dú)立的 cuda kernel 之間要進(jìn)行結(jié)果傳遞,都需要通過 global memory,將兩個 cuda kernel 融合成一個 kernel,我們就可以在寄存器或者 shared memory 上進(jìn)行結(jié)果傳遞,從而避免了一次 global memory 寫和讀,從而提升性能。

對于算子融合,我們第一步,是采用現(xiàn)成的 apex 庫來進(jìn)行 Layernorm 和 Adam 中操作的融合。可以看通過簡單的指令替換,我們可以使能 apex 的 fused layernorm 和 fused Adam,從而使得加速效果從 1.63 倍提升至 2.11 倍。

除了利用現(xiàn)有的 apex 庫,NVIDIA 也進(jìn)行了手工的融合算子開發(fā)。這里展示的是,我們針對 Swin Transformer 特有的 window 相關(guān)操作,如 window partition、shift、merge 等進(jìn)行的融合算子開發(fā)。可以看到,通過引入我們的定制化融合算子,可以將加速比進(jìn)一步提升至 2.19 倍。

接下來展示的是,NVIDIA 對 mha 部分的融合工作。Mha 部分是 transformer 模型中一個占比很大的模塊,因此對它的優(yōu)化往往可以帶來較大的加速效果。從圖中可以看到,在沒有進(jìn)行算子融合之前,mha 部分的操作占比為 37.69%,其中包括了不少 elementwise 的 kernel。我們通過將相關(guān)操作融合成一個獨(dú)立的 fmha kernel,從而將加速比進(jìn)一步提升 2.85 倍。

上述是我們在單卡上取得的訓(xùn)練加速效果。我們再來看一下單機(jī) 8 卡的訓(xùn)練情況,可以看到,通過上述優(yōu)化,我們可以將訓(xùn)練吞吐從 1,612 提升至 3,733,取得 2.32 倍的加速。

3316be6e-86c8-11ed-bfe3-dac502259ad0.png

視覺大模型 Swim Transformer 的推理加速

接下來,介紹 NVIDIA 在 Swim Transformer 模型推理加速上進(jìn)行的優(yōu)化工作。

跟訓(xùn)練一樣,推理的加速離不開算子融合這一方案。不過相對于訓(xùn)練而言,在推理上進(jìn)行算子融合有兩個好處:一,推理上的算子融合不需要考慮反向,所以 kernel 開發(fā)過程中不需要考慮保存計算梯度所需要的中間結(jié)果;二,推理過程允許預(yù)處理,我們可以對一些只需要一次計算便可重復(fù)使用的操作,提前算好,保留結(jié)果,每次推理時直接調(diào)用從而避免重復(fù)計算。

在推理側(cè),NVIDIA 進(jìn)行了不少算子融合,在這里挑選了兩個加速效果比較明顯的算子進(jìn)行介紹。

首先是 mha 部分的算子融合,我們將 position bias lookup 這一操作提前到預(yù)處理部分,從而避免每次推理時都進(jìn)行 lookup,然后將 batch gemm、softmax、batch gemm 融合成一個獨(dú)立的 fmha kernel??梢钥吹?,融合后,該部分取得了 10 倍的加速,而端到端也取得了 1.58 倍的加速。

另一個算子融合是 QKV gemm + bias 的融合,gemm 和 bias 的融合是一個十分常見的融合手段。在這里為了配合我們前面提到的 fmha kernel,我們需要對 weight 和 bias 提前進(jìn)行格式上的變換,這種提前變換也體現(xiàn)了上文提到的,推理上進(jìn)行算子融合的靈活性。最后,通過 QKV gemm+bias 的融合,我們可以進(jìn)一步取得 1.1 倍的端到端加速。

除算子融合以外,我們使用了矩陣乘法 padding 的優(yōu)化手段。在 Swin Transformer 的計算中,有時候我們會遇到主維為奇數(shù)的矩陣乘法,這時候并不利于我們的矩陣乘法 kernel 進(jìn)行向量化讀寫,從而使得 kernel 的運(yùn)行效率變低。這時候我們可以考慮對參與運(yùn)算的矩陣主維進(jìn)行 padding 操作,使其變?yōu)?8 的倍數(shù),這樣一來,矩陣乘法 kernel 就可以以 alignment=8,一次讀寫 8 個元素的方式來進(jìn)行向量化讀寫,提升性能。

如下表所示,我們將 n 從 49 padding 到 56 后,矩陣乘法的 latency 從 60.54us(微秒) 下降為 40.38us,取得了 1.5 倍的加速比。

33317920-86c8-11ed-bfe3-dac502259ad0.png

下一個優(yōu)化手段,是巧用 half2 或者 char4 這樣的數(shù)據(jù)類型。

以 half2 為例,可以帶來以下三個好處:

一,向量化讀寫可以提升顯存的帶寬利用率并降低訪存指令數(shù)。如右圖所示,通過 half2 的使用,訪存指令減少了一半,同時 memory 的 SOL 也有顯著提升。

二, 結(jié)合 half2 專有的高吞吐的數(shù)學(xué)指令,可以減低 kernel 的時延。

三,在進(jìn)行 reduction 時,采用 half2 數(shù)據(jù)類型意味著一個 cuda 線程同時處理兩個元素,可以有效減少空閑的線程數(shù)。最終通過使用 half2,我們可以觀察到圖示的 addBiasResidual 這一個 kernel,latency 從 20.96us 下降為 10.78us,加速 1.94 倍。

下一個優(yōu)化手段,是巧用寄存器數(shù)組。在我們進(jìn)行 layernorm 或者 softmax 等 Transformer 模型常見的算子優(yōu)化時,我們經(jīng)常需要在一個 kernel 中多次使用同一個輸入數(shù)據(jù),那么相對于每次都從 global memory 讀取,我們可以采用寄存器數(shù)組來緩存數(shù)據(jù),從而避免重復(fù)讀取 global memory。

由于寄存器是每個 cuda 線程獨(dú)占的,所以在進(jìn)行 kernel 設(shè)計時,我們需要提前設(shè)定好每個 cuda 線程所需要緩存的元素個數(shù),從而開辟對應(yīng)大小的寄存器數(shù)組,并且在分配每個 cuda 線程所負(fù)責(zé)元素時,需要確保我們可以做到合并訪問。

如右圖所示,當(dāng)我們有 8 個線程時,0 號線程可以處理 0 號元素,當(dāng)我們有 4 個線程是,0 號線程則處理 0 號和 4 號元素,如此類推。我們一般建議可以采用模板函數(shù)的方式,通過模板參數(shù)來控制每個 cuda 線程的寄存器數(shù)組大小。

33517478-86c8-11ed-bfe3-dac502259ad0.png

此外,在使用寄存器數(shù)組時,需要保證我們的下標(biāo)是常量,如果是循環(huán)變量作為下標(biāo),我們應(yīng)該盡量保證可以進(jìn)行循環(huán)展開,這樣可以避免編譯器將數(shù)據(jù)放到了時延很高的 local memory 中,如圖所示,我們在循環(huán)條件中添加限制,通過 ncu 報告可以看到,避免了 local memory 的使用。

最后一個我想介紹優(yōu)化手段是 INT8 量化。INT8 量化是推理加速非常重要的加速手段,對于 Transformer based 的模型而言,INT8 量化往往可以帶來不錯的加速效果。

而對于 Swin Transformer 來說,通過結(jié)合合適的 PTQ 或 QAT 量化方案,可以在取得良好加速效果的同時,保證量化精度。通過 QAT,我們可以保證精度損失在千分之 5 以內(nèi)。

而在 PTQ 那一列,我們可以看到 swin large 的掉點(diǎn)比較嚴(yán)重。我們可以通過禁用 FC2 和 PatchMerge 中的部分量化結(jié)點(diǎn),來進(jìn)一步提升量化精度,這其實就是一個性能和精度的 tr 平衡了。

接下來介紹 NVIDIA 在推理側(cè)取得的加速效果。

337cd258-86c8-11ed-bfe3-dac502259ad0.png

左上圖優(yōu)化后 跟 pytorch 的時延對比,右下圖為優(yōu)化后 FP16 下跟 pytorch 以及 INT8 優(yōu)化跟 FP16 優(yōu)化的加速比??梢钥吹?,通過優(yōu)化,在 FP16 精度上,我們可以取得,相對于 pytorch 2.82x~7.34x 的加速,結(jié)合 INT8 量化,我們可以在此基礎(chǔ)上進(jìn)一步取得 1.2x~1.5x 的加速。

總結(jié):視覺大模型 Swim Transformer 訓(xùn)練與推理加速技巧

本次分享中我們介紹了一系列訓(xùn)練與推理加速技巧,其中包括 :

一,混合精度訓(xùn)練、低精度推理,使用更高性能的 Tensor Core 進(jìn)行計算矩陣乘法或卷積計算;

二、算子融合;

三、cuda kernel 優(yōu)化技巧 :如矩陣補(bǔ)零,向量化讀寫,巧用寄存器數(shù)組等。

結(jié)合上述優(yōu)化技巧,加速效果:

在訓(xùn)練上,以 Swin-Large 模型為例,取得了單卡 ~2.85x 的加速比,8 卡 2.32x 的加速比;

在推理上,以 Swin-tiny 模型為例,在 FP16 精度下取得了 2.82x - 7.34x 的加速比,結(jié)合 INT8 量化,進(jìn)一步取得 1.2x - 1.5x 的加速比。

上述介紹的視覺大模型訓(xùn)練與推理的加速方法,已經(jīng)在百度百舸·AI 異構(gòu)計算平臺的 AIAK 加速功能中實現(xiàn)。


原文標(biāo)題:百度智算峰會精彩回顧:視覺大模型訓(xùn)練與推理優(yōu)化

文章出處:【微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

    關(guān)注

    23

    文章

    4090

    瀏覽量

    99237
  • 大模型
    +關(guān)注

    關(guān)注

    2

    文章

    3653

    瀏覽量

    5196

原文標(biāo)題:百度智算峰會精彩回顧:視覺大模型訓(xùn)練與推理優(yōu)化

文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    訓(xùn)練推理:大模型力需求的新拐點(diǎn)已至

    在大模型產(chǎn)業(yè)發(fā)展的早期階段,行業(yè)焦點(diǎn)主要集中在大模型訓(xùn)練所需的力投入。一個萬億參數(shù)大模型訓(xùn)練
    的頭像 發(fā)表于 02-05 16:07 ?844次閱讀
    從<b class='flag-5'>訓(xùn)練</b>到<b class='flag-5'>推理</b>:大<b class='flag-5'>模型</b><b class='flag-5'>算</b>力需求的新拐點(diǎn)已至

    百度文心大模型5.0正式版上線

    今天,在百度文心Moment大會現(xiàn)場,文心大模型5.0正式版上線。
    的頭像 發(fā)表于 01-23 16:48 ?1320次閱讀

    百度地圖開放平臺與400萬開發(fā)者共赴智能時空新未來

    二十年星辰大海,十五載開放引航。2025年,百度地圖迎來服務(wù)用戶的二十周年,其開放平臺亦走過了與開發(fā)者并肩同行的十五個春秋。在近期舉行的“2025百度地圖開發(fā)者盛典”上,百度地圖開放平臺回顧
    的頭像 發(fā)表于 01-23 09:03 ?726次閱讀
    <b class='flag-5'>百度</b>地圖開放平臺與400萬開發(fā)者共赴智能時空新未來

    2025百度世界大會精彩回顧

    百度創(chuàng)始人李彥宏在演講時表示,“我們更關(guān)心如何讓AI跟我們要做的每一項任務(wù),都能夠進(jìn)行有機(jī)的結(jié)合,讓AI成為企業(yè)發(fā)展和個人成長的原生推動力?!?/div>
    的頭像 發(fā)表于 11-17 15:01 ?733次閱讀

    科技上線赤兔推理引擎服務(wù),創(chuàng)新解鎖FP8大模型

    模型輕量化部署方案。用戶通過遠(yuǎn)程力平臺預(yù)置的模型鏡像與AI工具,僅需50%的GPU力即可解鎖大模型
    的頭像 發(fā)表于 07-30 21:44 ?922次閱讀

    寧暢與與百度文心大模型展開深度技術(shù)合作

    近日,百度正式開源文心大模型4.5系列模型。作為文心開源合作伙伴,寧暢在模型開源首日即實現(xiàn)即刻部署,做到“開源即接入、發(fā)布即可用”。據(jù)悉,文心4.5開源系列全部基于飛槳深度學(xué)習(xí)框架進(jìn)行
    的頭像 發(fā)表于 07-07 16:26 ?883次閱讀

    模型推理顯存和計算量估計方法研究

    ,如乘法、加法等; (2)根據(jù)各層計算操作的類型和復(fù)雜,確定每層所需的計算量; (3)將各層計算量相加,得到模型總的計算量。 基于硬件加速的力估計 隨著硬件加速技術(shù)的發(fā)展,許多深度學(xué)習(xí)框架支持
    發(fā)表于 07-03 19:43

    65%央企大模型落地首選百度智能云

    今天,很榮幸地分享一個好消息,百度智能云已牽手65%的央企,共同推進(jìn)大模型產(chǎn)業(yè)落地。得益于全棧的AI能力,百度聯(lián)合眾多央國企伙伴,針對各類不同業(yè)務(wù)場景,打造了一大批可推廣、可復(fù)制的標(biāo)桿案例。
    的頭像 發(fā)表于 06-11 15:44 ?908次閱讀

    百度文心大模型X1 Turbo獲得信通院當(dāng)前大模型最高評級證書

    ,16項達(dá)5分,綜合評級獲當(dāng)前最高級“4+級”, 成為國內(nèi)首款通過該測評的大模型 。文心X1 Turbo邏輯推理、代碼推理、推理效果優(yōu)化等技
    的頭像 發(fā)表于 05-21 18:19 ?1288次閱讀
    <b class='flag-5'>百度</b>文心大<b class='flag-5'>模型</b>X1 Turbo獲得信通院當(dāng)前大<b class='flag-5'>模型</b>最高評級證書

    百度發(fā)布2025年Q1財報 蘿卜快跑一季度全球訂單超140萬

    表現(xiàn)強(qiáng)勁,營收同比增速達(dá)42%。百度智能云千帆大模型平臺升級,增加擴(kuò)展的模型庫和更全面的工具鏈,支持多模態(tài)模型和深度思考模型
    的頭像 發(fā)表于 05-21 18:17 ?2755次閱讀
    <b class='flag-5'>百度</b>發(fā)布2025年Q1財報 蘿卜快跑一季度全球訂單超140萬

    百度智能云兩大基礎(chǔ)設(shè)施再升級

    近日,在Create2025百度AI開發(fā)者大會上,沈抖分享了百度智能云在智能基礎(chǔ)設(shè)施建設(shè)方面的最新成果,并在力、模型及應(yīng)用等方面發(fā)布一系列全新產(chǎn)品。
    的頭像 發(fā)表于 04-30 10:20 ?1092次閱讀

    百度發(fā)布文心4.5 Turbo、X1 Turbo和多款A(yù)I應(yīng)用

    近日,Create2025百度AI開發(fā)者大會在武漢舉辦。百度創(chuàng)始人李彥宏發(fā)布了文心大模型4.5 Turbo及深度思考模型X1 Turbo兩大模型
    的頭像 發(fā)表于 04-30 10:16 ?1159次閱讀

    格靈深瞳與百度智能云達(dá)成戰(zhàn)略合作,共筑AI力新基建

    4月25日,在Create2025百度AI開發(fā)者大會期間,百度智能云與格靈深瞳正式簽署戰(zhàn)略合作協(xié)議。雙方將以“技術(shù)互補(bǔ)、生態(tài)共建、價值共生”為原則,聚焦大模型與行業(yè)場景深度融合,共同構(gòu)建國產(chǎn)化AI
    的頭像 發(fā)表于 04-27 10:20 ?1372次閱讀

    百度飛槳框架3.0正式版發(fā)布

    模型訓(xùn)練成本高?推理效率低?硬件適配難? 4月1日,百度發(fā)布 飛槳框架3.0正式版 !五大特性專為大模型設(shè)計。 作為大
    的頭像 發(fā)表于 04-02 19:03 ?1202次閱讀
    <b class='flag-5'>百度</b>飛槳框架3.0正式版發(fā)布

    百度發(fā)布文心大模型4.5和文心大模型X1

    文心大模型4.5是百度自主研發(fā)的新一代原生多模態(tài)基礎(chǔ)大模型,通過多個模態(tài)聯(lián)合建模實現(xiàn)協(xié)同優(yōu)化,多模態(tài)理解能力優(yōu)秀;具備更精進(jìn)的語言能力,理解、生成、邏輯、記憶能力全面提升,去幻覺、邏輯
    的頭像 發(fā)表于 03-18 16:29 ?933次閱讀