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

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

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

如何使用加速PyTorrch2.0變異器

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-09-04 16:15 ? 次閱讀

如何使用加速PyTorrch2.0變異器和新推出的變異器irch. combile 。以下列示例為例加速大語言模型的方法納米gptGPT模式在Andrej Karpropt的 Andrej Karpathy 中采用,采用新的規(guī)?;?dot 產(chǎn)品關(guān)注量操作員通過加速PT2變換器,我們選擇閃光點(diǎn)定制內(nèi)核,并實(shí)現(xiàn)每個(gè)批次(用Nvidia A100 GPUs測(cè)量)更快的培訓(xùn)時(shí)間,從~143ms/批量基線到~113ms/批量基準(zhǔn),此外,利用SDPA操作員加強(qiáng)實(shí)施提供更好的數(shù)字穩(wěn)定性。最后,利用加插投入進(jìn)一步優(yōu)化,如果加插投入與加插關(guān)注相結(jié)合,導(dǎo)致~87ms/批量。

最近,在日常生活中大量采用大型語言模式(LLMs)和創(chuàng)性AI,在時(shí)間和硬件利用方面,與這些不斷增長(zhǎng)的模式緊密結(jié)合,培訓(xùn)成本不斷增加。加速變壓器(以前稱為“更好的變換器”)和JIT 匯編PyTorch 2.0 點(diǎn)火2.0.

在博客文章中,我們探索了利用SDPA的定制內(nèi)核實(shí)施(也稱“縮放點(diǎn)產(chǎn)品關(guān)注”)獲得的培訓(xùn)優(yōu)化,這是變壓器模型中的一個(gè)關(guān)鍵層。SDPA的定制內(nèi)核用一個(gè)全球優(yōu)化的內(nèi)核取代了若干獨(dú)立的連續(xù)操作,避免分配大量的CUDA中間內(nèi)存。這個(gè)方法提供了許多優(yōu)勢(shì),包括但不限于:通過減少記憶帶寬瓶頸,減少記憶足跡以支持較大批量尺寸,提高SDPA的性能計(jì)算,減少記憶足跡以支持較大批量尺寸,以及最終通過預(yù)先縮放輸入壓強(qiáng)器增加數(shù)字穩(wěn)定性。 這些優(yōu)化在NameGPT上展示,這是Andrej Karpath公司對(duì)GPT的開放源實(shí)施。

背景

擴(kuò)大對(duì)點(diǎn)產(chǎn)品的關(guān)注是多頭公司關(guān)注的基本構(gòu)件,正如在2002年“注意是你們所需要的一切”并在LLM和產(chǎn)生性AI模型中廣泛應(yīng)用。

wKgaomTv__SAasDHAALmRvZpA1k001.png

圖1:以“注意是你們所需要的一切”使用新的PyTorrch SDPA操作員,多點(diǎn)關(guān)注由投射線層、SDPA操作員和投射線層有效實(shí)施。

使用新的縮放的多位元產(chǎn)品注意操作器,多頭關(guān)注可以僅僅在三個(gè)步驟中進(jìn)行:投射線性層、SDPA和投射線性層。

PyTorrch 2. 支持為特定用途案例優(yōu)化的多個(gè)不同內(nèi)核,并有具體要求。內(nèi)核拾取器為特定輸入參數(shù)組合選擇最佳內(nèi)核。如果不為特定輸入?yún)?shù)組合優(yōu)化“自定義內(nèi)核 ” , 內(nèi)核拾取器將選擇一個(gè)能夠處理所有輸入組合的普通內(nèi)核。

PyTorch 2.0 點(diǎn)火2.0號(hào)發(fā)射裝置為SDPA操作員安裝了3個(gè)裝置:

用于執(zhí)行函數(shù)中SDPA的數(shù)學(xué)方程式的通用內(nèi)核sdpa_math 地圖 ()

基于文件的優(yōu)化內(nèi)核“閃電注意”支持對(duì)SDPA進(jìn)行評(píng)價(jià),在計(jì)算SM80結(jié)構(gòu)(A100)時(shí)采用16位浮點(diǎn)數(shù)據(jù)類型。

基于文件的優(yōu)化內(nèi)核“不需要O(n%2) 內(nèi)存執(zhí)行,并落實(shí):舊前,它支持了范圍更廣的建筑結(jié)構(gòu)(SM40和以后的SM40)上的32和16位浮數(shù)據(jù)類型。效率( mem) 效率( P)內(nèi)核

請(qǐng)注意,兩個(gè)優(yōu)化的內(nèi)核(上面列出兩個(gè)和三個(gè))都支持一個(gè)鍵嵌入面罩,并將支持的注意面罩限制為因果注意。 今天加速的 PyTorch 2.0 點(diǎn)火2.0 變換器只在指定使用因 - 因 - 因 - 因 - 原因當(dāng)指定掩罩時(shí),將選擇通用內(nèi)核,因?yàn)榉治鏊峁┭谡值膬?nèi)容太昂貴,無法確定它是否為因果遮罩。PT2 加速變換器博客.

使用納米GPPT的快速加速變換器

SDPA操作員是GPT模型的關(guān)鍵組成部分,我們確定開放源碼納米GPT模型是展示PyTorch 2.0 點(diǎn)火2.0加速變異器實(shí)施方便和效益的絕佳候選者。 以下展示了加速變異器在NAMGPT上啟用的確切過程。

這一過程主要圍繞取代現(xiàn)有的SDPA實(shí)施程序,由新加入的F.scald_dot_product_product_access 運(yùn)營(yíng)商取代。功能.py。這個(gè)程序可以很容易地調(diào)整,使操作員能夠進(jìn)入許多其他LLMs?;蛘?用戶可以選擇調(diào)用 F. multi_head_attention_forward () 或酌情直接使用 nn. Multi HeadAtention 模塊。以下代碼片斷從 Karpathy 的 N納米GPT 倉庫中修改。

第1步:確定現(xiàn)有的SDPA執(zhí)行情況

就納米GPT而言,SDPA是在模型中實(shí)施的。以因果自 心類別。在撰寫本報(bào)告時(shí),為該員額對(duì)最初執(zhí)行部分作如下調(diào)整。

wKgZomTwACqAeGBXAAjpKEgW_tQ137.png

第2步:用火炬取代縮放_(tái) dot_ product_ 注意

目前,我們可以注意到以下幾點(diǎn):

第36至42行界定我們正在取代的SDPA的數(shù)學(xué)實(shí)施

39號(hào)線上應(yīng)用的面具不再相關(guān),因?yàn)槲覀兪褂玫氖强s放_(tái)dot_product_product_product_acceptions因 - 因 - 因 - 因 - 原因旗幟。

第41行使用的輟學(xué)層現(xiàn)在也沒有必要。

換掉SDPA 的火炬( 縮放為_ dot_ product_ product_ attention), 并刪除多余的代碼, 產(chǎn)生以下效果 。

wKgaomTwAMCAZAZAAAcayJe5cBE128.png

或者,也可以將原始面罩傳遞到attn-mask 縮略圖然而,由于上述內(nèi)核限制,將執(zhí)行限制在只支持通用sdpa_math 地圖內(nèi)核

第3步(邦斯):用墊板更快的墊板

除了SDPA的性能改善之外,我們的分析還取得了良好的附帶勝利。 在Andrej的“迄今為止對(duì)納米GPT(~25%的加速率)最戲劇化的優(yōu)化 ” , 就是簡(jiǎn)單地將鱷魚的體積從50257個(gè)增加到50304個(gè)(接近64個(gè)的倍數(shù) ) 。 ”

vocab 大小決定了 GPT 輸出層的 matmuls 尺寸, 這些尺寸太大, 以至于它們正在使用占多數(shù)整個(gè)訓(xùn)練循環(huán)的時(shí)間點(diǎn)。 我們發(fā)現(xiàn),他們的表現(xiàn)大大低于A100GPU上可以達(dá)到的最高量。NVIDIA的制表文件64 元素對(duì)齊將產(chǎn)生更好的效果。 事實(shí)上, 掛貼這些配制板可以實(shí)現(xiàn)近3x加速 。 根本原因是不對(duì)齊的內(nèi)存存存取大大降低了效率。 更深入的分析可見于此推特線索.

通過這種優(yōu)化,我們進(jìn)一步縮短了每批培訓(xùn)時(shí)間,從~113毫斯(利用閃光關(guān)注)減少到~87毫斯。

結(jié)果結(jié)果結(jié)果 結(jié)果 結(jié)果

下圖顯示了利用Pytorch定制內(nèi)核取得的性能。

基準(zhǔn)線(執(zhí)行NanoGPT):~14 300米

sdpa_math 地圖( generic): ~ 134ms (6. 71% 更快)

效率( mem) 效率( P)內(nèi)核:~119米(快20.16%)

閃閃注意內(nèi)核:~113米(26.54%更快)

閃光- 注意加插 vocab:~ 8700米(64.37%更快)

所有代碼都運(yùn)行在80GB HBM[A100 SXM4 80GB]的8x NVIDIA Corporation A100服務(wù)器上,為試驗(yàn)?zāi)康?將這一輟學(xué)率設(shè)為0。

wKgaomTwAWSAU0ClAAEIi0R4cvw244.png

圖2:使用定制內(nèi)核和火炬的量級(jí)點(diǎn)產(chǎn)品注意和定制內(nèi)核和火炬。納米gpt在此顯示 。

加強(qiáng)數(shù)字模型穩(wěn)定

除了速度更快之外,PyTorrch的實(shí)施工作通過避免許多執(zhí)行方案失去準(zhǔn)確性,提高了數(shù)字穩(wěn)定性。在這里,但基本上PyTollch 實(shí)施規(guī)模的查詢和關(guān)鍵矩陣之前由于SDPA的合并定制內(nèi)核結(jié)構(gòu),這一縮放在計(jì)算關(guān)注結(jié)果時(shí)不會(huì)增加間接費(fèi)用,相比之下,個(gè)別計(jì)算組成部分的實(shí)施需要分別進(jìn)行預(yù)先縮放,按額外費(fèi)用計(jì)算。

改進(jìn)內(nèi)存消耗

然而,使用SDPA火炬內(nèi)核的另一個(gè)大優(yōu)點(diǎn)是記憶足跡減少,從而可以使用較大的批量尺寸。下圖比較了經(jīng)過一小時(shí)的閃光關(guān)注培訓(xùn)和因果關(guān)注基線實(shí)施后的最佳驗(yàn)證損失。從可以看出,基線因果關(guān)注實(shí)施(在8x NVIDIA Corporation A100服務(wù)器上,有80GB HBM, 80 GB HBM)實(shí)現(xiàn)的最大批量規(guī)模為24個(gè),大大低于以閃光關(guān)注實(shí)現(xiàn)的最大數(shù)量,即39個(gè)。

wKgZomTwAX6AXE4LAABvecbjV64984.png

圖3:使用 " 閃電注意 " 使得能夠使用較大批量的批量,使用戶在經(jīng)過一小時(shí)培訓(xùn)后獲得較低的驗(yàn)證損失(越小越好)。

結(jié) 結(jié) 結(jié) 結(jié)

新推出的PyTorrch SDPA運(yùn)營(yíng)商為培訓(xùn)變異器模型提供了更好的性能,對(duì)昂貴的大型語言模型培訓(xùn)特別有價(jià)值。

與固定批量規(guī)模的基準(zhǔn)相比,培訓(xùn)速度加快26%以上

與基準(zhǔn)量相比,用加插詞匯表實(shí)現(xiàn)進(jìn)一步加快速度,使總優(yōu)化率達(dá)到約64%

額外數(shù)字穩(wěn)定性

附錄A:分析注意數(shù)字穩(wěn)定

我們?cè)诒竟?jié)更深入地解釋前文提到的通過預(yù)估SDPA輸入矢量而獲得的增強(qiáng)數(shù)字穩(wěn)定性。 下面是納米GPT數(shù)學(xué)應(yīng)用SDPA的簡(jiǎn)化版本。 這里需要指出的是,查詢?cè)诓豢s放的情況下進(jìn)行矩陣倍增。

# 納米gpt implementation of SDPA
# notice q (our query vector) is not scaled !
att = (q @ k.transpose(-2, -1)) * (1.0 / math.sqrt(k.size(-1)))
att = att.masked_fill(self.bias[:,:,:T,:T] == 0, float('-inf'))
att = F.softmax(att, dim=-1)

# Dropout is set to 0, so we can safely ignore this line in the implementation# att = self.attn_dropout(att) 

y_ nanogpt 識(shí)別器( y_ nanogpt) = att @ v # (B, nh, T, T) x (B, nh, T, hs) -> (B, nh, T, hs)

以下是火炬中等量的數(shù)學(xué)執(zhí)行情況??s放_(tái) dot_ product_ 注意.

調(diào)

在數(shù)學(xué)方面,兩種方法應(yīng)當(dāng)相等,然而,我們的實(shí)驗(yàn)表明,在實(shí)踐中,我們從每一種方法得到的結(jié)果不同。

使用上述方法,我們核實(shí)了y 之前的 y_ 縮數(shù)(_S)匹配使用縮放_(tái) dot_ product_ 注意方法時(shí)y_ nanogpt 識(shí)別器( y_ nanogpt)沒有。

排火炬聯(lián)盟具體地說,我們表明:

y_dpa = cherch.nn. 功能._ scald_dot_ product_atunited( q, k, v, attn-mask 縮略圖=self. bias) [, : : : , T, : T] ! = 0, diut_ p= 0.0, 需要_ attn_ weights = False, 原因=False, ) toch.allclose( y_ sdpa, y_ nanogpt)

附錄B:復(fù)制實(shí)驗(yàn)結(jié)果

試圖復(fù)制這些結(jié)果的研究人員應(yīng)首先從Andrej納米GPT存儲(chǔ)庫的以下承諾開始:b3c17c6c6a363357623f2223aaa4a8b1e89d0a465。在測(cè)量每批量速度改進(jìn)時(shí),這一承諾被用作基準(zhǔn)。對(duì)于包括添加詞匯優(yōu)化(按批量速度進(jìn)行最大改進(jìn))在內(nèi)的結(jié)果,使用以下承諾:77e7e04c26577846df30c1ca2d9f7cbb93ddeab。從任一取出中,選擇實(shí)驗(yàn)的內(nèi)核與使用該內(nèi)核相比是微不足道的。

可以通過上下文管理器選擇想要的內(nèi)核 :

火炬. 后端. cuda. sdp_ 內(nèi)核( 啟用_ math = False, 啟用_ flash = False, 啟用_ mem_ valid = true): 火車( 模型)

審核編輯:彭菁

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

    關(guān)注

    159

    文章

    7490

    瀏覽量

    135510
  • GPT
    GPT
    +關(guān)注

    關(guān)注

    0

    文章

    354

    瀏覽量

    15414
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13239
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    離體培養(yǎng)下的遺傳與變異

    教學(xué)目的與要求:掌握離體培養(yǎng)中體細(xì)胞變異的特點(diǎn)和規(guī)律;了解體細(xì)胞變異的細(xì)胞遺傳學(xué)和分子遺傳學(xué)基礎(chǔ);掌握體細(xì)胞變異的應(yīng)用途徑和選擇方法。細(xì)胞組織的離體培
    發(fā)表于 02-17 09:53 ?0次下載

    基于邊界變異的量子粒子群優(yōu)化算法

    將邊界變異操作引入到量子粒子群優(yōu)化算法中,提出基于邊界變異的量子粒子群優(yōu)化算法QPSOB。該算法將越界粒子隨機(jī)分布在邊界附近的可行域內(nèi),以增加種群的多樣性、提高算法的
    發(fā)表于 04-20 10:01 ?15次下載

    變異原理在入侵檢測(cè)技術(shù)中的應(yīng)用

    在對(duì)基于免疫學(xué)原理的入侵檢測(cè)技術(shù)研究的基礎(chǔ)上,借鑒免疫系統(tǒng)的變異原理及淋巴細(xì)胞的親和力成熟過程,設(shè)計(jì)一個(gè)生成記憶檢測(cè)的算法,實(shí)現(xiàn)快速識(shí)別已經(jīng)出現(xiàn)過的入侵行為
    發(fā)表于 04-22 08:37 ?16次下載

    概化理論的方差分量變異量的估計(jì)

    摘要 概化理論廣泛應(yīng)用于心理與教育測(cè)量實(shí)踐中, 方差分量估計(jì)是進(jìn)行概化理論分析的關(guān)鍵。方差分 量估計(jì)受限于抽樣, 需要對(duì)其變異量進(jìn)行探討。采用蒙特卡洛(Monte Carlo)數(shù)據(jù)模擬技術(shù), 在正態(tài)分布下討 論不同方法對(duì)基于概化理論的方差分量變異量估計(jì)的影響。
    發(fā)表于 01-13 11:51 ?47次下載

    結(jié)合變異粒子群和字典學(xué)習(xí)的遙感影像去噪

    針對(duì)在線字典學(xué)習(xí)需將所有字典原子全部更新、優(yōu)化方向難以進(jìn)行估算等原因造成精度下降的不足,提出基于變異粒子群優(yōu)化的在線字典學(xué)習(xí)算法。算法基于ODL的基礎(chǔ),在字典學(xué)習(xí)的迭代過程中對(duì)梯度下降函數(shù)進(jìn)行優(yōu)化
    發(fā)表于 11-17 14:40 ?11次下載

    基于DSEA的弱變異測(cè)試用例集生成方法

    為解決基于集合進(jìn)化算法(SEA)的弱變異測(cè)試用例集生成過程中個(gè)體規(guī)模固定和執(zhí)行開銷大的問題,提出一種基于動(dòng)態(tài)集合進(jìn)化算法( DSEA)的弱變異測(cè)試用例集生成方法。以測(cè)試用例集為個(gè)體,生成覆蓋所有變異
    發(fā)表于 11-28 16:11 ?0次下載

    基于柯西-高斯動(dòng)態(tài)消減變異的果蠅優(yōu)化算法研究

    針對(duì)果蠅優(yōu)化算法易陷入局部極值收斂速度減慢的不足,結(jié)合柯西變異和高斯變異的各自優(yōu)點(diǎn),提出了變異效能系數(shù)和柯西高斯動(dòng)態(tài)消減變異因子等概念,進(jìn)而提出了一種柯西高斯動(dòng)態(tài)消減
    發(fā)表于 11-29 16:23 ?0次下載

    基于數(shù)據(jù)競(jìng)爭(zhēng)故障的變異策略

    針對(duì)并發(fā)程序變異測(cè)試中并發(fā)變異算予觸發(fā)數(shù)據(jù)競(jìng)爭(zhēng)故障能力較低的問題,提出了基于數(shù)據(jù)競(jìng)爭(zhēng)故障的變異策略。從并發(fā)變異算子設(shè)計(jì)的角度給出了面向鎖對(duì)象的變異
    發(fā)表于 12-09 11:23 ?0次下載

    消息傳遞并行程序的變異測(cè)試

    并行程序執(zhí)行的不確定性,增加了測(cè)試的復(fù)雜性和難度.研究消息傳遞并行程序的變異測(cè)試,提出其弱變異測(cè)試轉(zhuǎn)化方法,以提高該程序變異測(cè)試的效率.首先,根據(jù)消息傳遞并行程序包含語句的類型和語句變異
    發(fā)表于 01-10 15:31 ?0次下載

    基于雙變異策略的骨架差分算法

    骨架差分進(jìn)化算法能夠較好規(guī)避差分進(jìn)化算法控制參數(shù)和變異策略選擇問題。針對(duì)基于雙變異策略的經(jīng)典骨架差分算法( MGBDE)沒有根據(jù)個(gè)體進(jìn)化差異選擇適合的變異策略和考慮早熟收斂的問題,提出一種改進(jìn)算法
    發(fā)表于 01-16 16:08 ?0次下載

    識(shí)別文字的AI也能發(fā)現(xiàn)新冠病毒變異

    MIT科學(xué)家發(fā)現(xiàn)識(shí)別文字的AI也能發(fā)現(xiàn)新冠病毒變異,變異,病毒,新冠病毒,病毒株,抗體
    發(fā)表于 03-02 17:50 ?906次閱讀

    基于數(shù)據(jù)流分析的冗余變異體識(shí)別方法

    變異測(cè)試是一種基于故障的軟件測(cè)試技術(shù),廣泛用來評(píng)估測(cè)試用例集的充分性與軟件測(cè)試技術(shù)的有效性。盡管變異測(cè)試具有較強(qiáng)的故障檢測(cè)能力,但由于數(shù)量龐大的變異體導(dǎo)致了計(jì)算開銷大的問題,阻礙了變異
    發(fā)表于 03-31 09:54 ?15次下載
    基于數(shù)據(jù)流分析的冗余<b class='flag-5'>變異</b>體識(shí)別方法

    基于數(shù)據(jù)流分析的冗余變異體識(shí)別及測(cè)試

    變異測(cè)試是一種基于故障的軟件測(cè)試技術(shù),廣泛用來評(píng)估測(cè)試用例集的充分性與軟件測(cè)試技術(shù)的有效性。盡管變異測(cè)試具有較強(qiáng)的故障檢測(cè)能力,但由于數(shù)量龐大的變異體導(dǎo)致了計(jì)算開銷大的冋題,阻礙了變異
    發(fā)表于 06-01 16:26 ?4次下載

    基于軟件的Vitis AI 2.0加速解決方案

    Vitis AI 2.0 全面發(fā)布!作為賽靈思 FPGA 和自適應(yīng) SoC 上最綜合全面的基于軟件的 AI 加速解決方案,Vitis AI 繼續(xù)為用戶的 AI 產(chǎn)品貢獻(xiàn)價(jià)值與競(jìng)爭(zhēng)力。2.0 版本
    的頭像 發(fā)表于 03-15 17:39 ?2358次閱讀

    初識(shí)變異源分析

    實(shí)施六西格瑪管理的目標(biāo)就是希望生產(chǎn)出的產(chǎn)品的特性指標(biāo)的標(biāo)準(zhǔn)差要盡可能?。ㄖ徽{(diào)節(jié)均值對(duì)中效果有限)。 讓標(biāo)準(zhǔn)差盡可能小不是件簡(jiǎn)單的事,它可能牽涉生產(chǎn)中的很多因素。生產(chǎn)中產(chǎn)生的變異這么大,到底是哪些原因
    的頭像 發(fā)表于 01-30 11:10 ?690次閱讀