精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何加速生成2 PyTorch擴散模型

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

產生性人工智能的近期進展大部分來自去除傳播模型,這些模型能夠從文本提示中產生高質量的圖像和視頻。 這個家族包括圖像、 DALLE、 延遲傳播等。 但是,這個家族的所有模型都有一個共同的缺點: 生成速度相當緩慢, 因為生成圖像的取樣過程具有迭接性。 這使得優化取樣圈內運行的代碼非常重要 。

我們以開放源實施流行文本到圖像傳播模式作為起點,利用PyTorrch 2:編集和快速關注實施中的兩種優化方法加快其生成速度,同時對代碼進行少量的記憶處理改進,這些優化使原實施速度比原實施速度加快49%。舊前和 39% 的推論比方使用舊前的原始代碼(不包括編譯時間)的速度加快,這取決于 GPU 架構和批量大小。重要的是,加速不需要安裝 舊前 或其他任何額外依賴關系。

下表顯示從安裝了舊前的最初實施到我們以PyTorch集成內存高效關注(最初為PyTorch集成內存有效關注開發并在舊前圖書館)和PyTorrch匯編,不包括匯編時間。

與原x格式相比,運行時間改善%%

見“基準設定和成果摘要”一節中的絕對運行時間數字。

GPU 批量大小 1 批量大小 2 批量大小 4
p100 p100 (p100)(沒有匯編) -3.8 -3.8 0.44 5.47 5.47
T4 2.12 2.2.12 10.51 婦女 10.51 14.2 女14.2
A10 -2.34 8.99 10.57 10.57
v100 (v100) 18.63 6.39 10.43
a100 (a100) 38.5 20.33 12.17 12.17

人們可以注意到以下情況:

對于a100 (a100)和v100 (v100)等強大的GPU等強大的GPU來說,這些改進是顯著的。 對于這些GPU來說,第1批的改進最為顯著。

對于功率較小的GPUs,我們觀察到較弱的GPUs,我們觀察到較小的超速超速(或兩種情況下略有倒退 ) 。 這里的批量規模趨勢被逆轉:較大批量的改進更大

在以下各節中,我們介紹應用優化,并提供詳細的基準數據,將生成時間與不同最佳運行/關閉功能進行比較。

具體而言,我們以5個配置基準和下面的地塊為基準,比較其不同GPU和批量大小的絕對性性能,這些配置的定義見“基準設置和結果”一節。

wKgaomTwAvqANZG8AACFDpLr4Uk747.png

wKgZomTwAxeAOiftAACHuSxnO4Q979.png

wKgaomTwAzOADmKJAACJI6p9MIQ930.png

優化優化

這里我們將更詳細地介紹在模式代碼中引入的優化。 這些優化依賴于最近發布的PyTorrch 2.0的特征。

優化關注

我們優化的代碼的一部分就是對點產品的關注比例。人們知道,注意是一個繁重的操作:天真地執行會影響關注矩陣,導致時間和記憶的復雜二次序列長度。擴散模型使用關注是常見的( 通常使用關注的 ) ( ) 。相互注意))作為U-Net多個部分的變換元塊的一部分。由于U-Net運行在每個取樣步驟,這成為優化的關鍵點。多頭目,PyTorrch 2 中優化了關注執行的功能, 并被納入其中。 這種優化的示意圖可歸結為以下偽代碼 :

類交叉注意( nn. module): def __ initt_( 自 己, ) :

替換為

類交叉注意(nn.Module): def __initt_( 本身, ......): 自我. mmha = nn. Multihead 注意 (...) def 前進( 自己, x, 上下文): 返回自我. mmha (x, 上下文, 上下文)

PyTorrch 1.13中已經提供了最佳的注意落實(見在這里和廣泛通過(例如,見A/CN.9/WG.III/WP.Huggging 紙面變壓器庫示例特別是,它吸收了《公約》和《公約》的記憶有效關注。舊前和閃閃著的注意http://arxiv.org/abs/2205.14135PyTorrch 2.0將這一功能擴大到更多的關注功能,如交叉關注和為進一步加速而定制的內核,使之適用于擴散模型。

在計算能力為SM 7.5或SM 8.x的GPU上可提供閃光關注,例如,在T4、A10和a100 (a100)上可提供閃光關注,這些都包括在我們的基準中(你可以檢查每個NVIDIA GPU的計算能力)。在這里然而,在我們對a100 (a100)a100 (a100)的測試中,由于關注頭和小批量數量少,因此對擴散模型特定案例的記憶有效關注比對傳播模型的閃光關注效果的注意效果好于對傳播模型的具體案例的閃光關注效果。在這里為了充分控制注意力后端(模擬有效關注、閃光關注、“香草數學”或任何未來數學),電力用戶可以在上下文管理員的幫助下手動啟用和禁用這些后端。后端... cudda. sdp_ 內核.

compilation

匯編是PyTorrch 2. 0 的新特性,從而能夠以非常簡單的用戶經驗實現巨大的超速。要援引默認行為,只需將一個 PyTorch 模塊或函數包成I. 火炬燃燒器:

模型 = 火炬. combile( 模型)

PyTorrch 編譯器然后將 Python 代碼轉換成一套指令, 可以在沒有 Python 管理費的情況下高效執行。 該編譯器在代碼首次被執行時動態發生。 在默認行為下, 在使用的 PyTorrch 頭罩下核電廠匯編代碼和火焚化器以進一步優化它。此教義以獲取更多細節。

雖然上面的單班條足以進行編譯, 但對代碼的某些修改可以壓縮更大的速度。 特別是, 人們應該避免所謂的圖形分解, 即PyTorrch無法編譯的代碼中的位置。 與先前的 PyTorrch 編譯方法( 如 火炬Script ) 相比, PyTorrch 2 編譯器在此情況下不會中斷。 相反, 它會回到急切的執行中 - 所以代碼運行, 但性能下降 。 我們對模式代碼做了一些小小改動, 以刪除圖形分解器 。 這包括刪除編譯器不支持的圖書館的功能, 比如 。檢查職能和電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電離電。 看看這個doc學習更多關于圖表分解和如何消除這些分解的信息

從理論上講,可以適用I. 火炬燃燒器然而,在實踐中,僅僅匯編U-Net就足夠了。I. 火炬燃燒器還沒有環形分析器,因此將重新拼湊取樣循環的每一次迭代的代碼。 此外,已編譯的樣本代碼可能會生成圖形折斷符 — — 因此,如果人們想從已編譯的版本中獲得良好的性能,就需要調整它。

注意該匯編requires GPU compute capability >= SM 7.0以非傾向模式運行。這涵蓋了我們基準中的所有 GPU ----T4, v100 (v100), A10, a100 (a100) - p100 p100 (p100) 除外(見完整列表).

其他優化

此外,我們通過消除一些常見的陷阱提高了GPU內存操作的效率,例如直接在GPU上創建高壓GPU,而不是直接在CPU上創建高壓GPU,然后轉移到GPU,因此我們提高了GPU內存操作的效率。火焰圖.

制定基準和成果摘要

我們有兩種版本的代碼可以比較:原原件和優化優化除此以外,還可以打開/關閉若干優化功能(舊前、PyTorrch內存高效關注、編譯)。

沒有 舊前 的原始代碼

舊前 的原始代碼

與香草數學關注后端和無編譯的 香草數學關注優化代碼

最優化代碼, 包含內存高效關注后端, 沒有編譯

具有內存高效注意后端和編譯功能的優化代碼

作為原文原版我們采用了使用PyTorrch 1. 12的代碼版本,并按慣例執行了關注標準。優化版用途nn. 多頭目內相互注意PyTerch 2.0.0.dev20230111 cu117。 在與PyTerch有關的代碼中,它還有其他一些微小的優化。

下表顯示每個版本代碼的運行時間以秒計,與舊前原版相比的百分比改進百分比。 _ 匯編時間不包括在內。

1. 括號 -- -- " 原件與 x Formers " 行相對改進

配置配置配置 p100 p100 (p100) T4 A10 v100 (v100) a100 (a100)
沒有格式的原件 30.4s (19.3%) 29.8s(-77.3%) 13.0(-83.9%) 10.9s(-33.1%) 8.0s (19.3%)
原件與 舊前 25.5秒(0%) 16.8s (0.00%) 7.1s 7.1s 7.1s 7.1s(0%) 8.2s(0.00%) 6.7s(0.00%)
最優化的香草數學關注, 沒有編譯 27.3s (--7.0%) 19.9s (18.7%) 13.2% (87.2%) 7.5s(8.7%) 5.7s(15.1%)
高效率的注意,沒有匯編。 26.5%(-3.8%) 16.8s (0.2%) 7.1s 7.1s 7.1s 7.1s(-0.8%) 6.9s (16.0%) 5.3s(20.6%)
高效關注和匯編 - 帶 16.4.4s 16.4.4s(2.1%) 7.2(-2.3%) 6.6.6s(18.6%) 4.1s 4.1s(38.5%)

批量規模 2 的運行時間

配置配置配置 p100 p100 (p100) T4 A10 v100 (v100) a100 (a100)
沒有格式的原件 58.0s (21.6%) 57.6歲(84.0%) 24.4s (95.2%) 18.6秒 (-63.0%) 12.0s (-50.6%)
原件與 舊前 47.7s(0.00%) 31.3s (0.00%) 12.5s (0.00%) 11.4秒 (0.00%) 8.0s(0.00%)
最優化的香草數學關注, 沒有編譯 49.3%(-3.5%) 37.9s (-21.0%) 17.8s (-4.2.2%) 12.7s (10.7%) 7.8s(1.8%)
高效率的注意,沒有匯編。 47.5s 47.5s(0.4%) 31.2% (0.5%) 12.2% (2.6%) 11.5%(-0.7%) 7.0s (12.6%)
高效關注和匯編 - 帶 28.0秒(10.5%) 11.4秒(9.0%) 10.7s 10.7s(6.4%) 6.4.4s(20.3%)

批量大小 4 的批量運行時間

配置配置配置 p100 p100 (p100) T4 A10 v100 (v100) a100 (a100)
沒有格式的原件 117.9s(-20.00%) 112.4s (-81.8%) 47.2s (-101.7 %) 35.8s (-71.9%) 22.8s (-78.9%)
原件與 舊前 98.3s(0.00%) 61.8s(0.00%) 23.4s(0.00%) 20.8s (0.00%) 12.7s (0.00%)
最優化的香草數學關注, 沒有編譯 101.1s (-2.9%) 73.0s(1.8.0%) 28.3s (-21.0%) 23.3s(11.9%) 14.5s (13.9%)
高效率的注意,沒有匯編。 92.9秒(5.5%) 61.1s(1.2%) 23.9s(-1.9%) 20.8s (-0.1%) 12.8s (-0.9%)
高效關注和匯編 - 帶 53.1s 53.1s(14.2%) 20.9秒(10.6%) 18.6秒(10.4%) 11.2. 11.2(12.2%)

為了盡量減少對基準代碼性能的波動和外部影響,我們逐個運行了代碼的每個版本,然后又重復了10次這個序列:A、B、C、D、E、A、B.......因此典型運行的結果將看起來像下面的圖片。請注意,人們不應該依賴對不同圖表之間絕對運行時間的比較,但是對內部運行時間的比較是相當可靠的,這要歸功于我們的基準設置。

wKgaomTwBAqAArnYAADtahskYM8523.png

每卷文字到圖像生成腳本都產生幾批數,其數量受CLI參數管制--niter --niter。在我們使用的基準中n標準=2,但引入了額外的“暖化”迭代,這對運行時間沒有幫助。 這對編譯運行是必要的,因為編譯發生在代碼運行的第一次,因此第一次迭代的時間比后來的都要長。 為了比較公平,我們還將這種額外的“暖化”迭代引入了所有其他運行。

上表中的數字是迭代數2(加上“暖熱一號”),即時“A”照片,種子1,PLMS取樣器,自動打開。

基準使用p100 p100 (p100)、v100 (v100)、a100 (a100)、A10和T4GPUs完成,T4基準在Google Colab Pro完成,A10基準在G5.4xmall AWS實例中與1GPU完成。

結論和下一步步驟

我們已經表明,PyTorrch 2 - 編譯者和優化關注實施的新特點 -- -- 使性能改進超過或與以前要求安裝的外部依賴(舊前)的功能相仿;PyTorrch特別通過將舊前的內存有效關注納入代碼庫來實現這一點,這是對用戶經驗的重大改進,因為舊前是一家最先進的圖書館,在許多情形中,需要定制的安裝過程和長期建筑。

這項工作可以繼續往幾個自然方向發展:

我們在這里所實施和描述的優化只是為迄今為止的文字到圖像的推斷基準,有興趣了解它們如何影響培訓績效。 PyTorch匯編可以直接應用于培訓;PyTorch優化關注的扶持培訓正在路線圖中。

我們有意盡量減少對原示范守則的修改。 進一步的定性和優化可能帶來更多的改進。

目前,匯編工作只適用于取樣器內部的U-Net模型。由于在U-Net之外發生了很多事情(例如,在取樣環中直接作業),匯編整個取樣器將是有益的。然而,這需要對匯編過程進行分析,以避免在每一取樣步驟中進行重新匯編。

當前代碼僅在PLMS取樣器內應用編譯程序,但將其擴展至其他取樣器則微不足道。

除了文字到圖像生成外,還應用推廣模型來進行其他任務 -- -- 圖像到圖像和油漆。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模型
    +關注

    關注

    1

    文章

    3173

    瀏覽量

    48715
  • 代碼
    +關注

    關注

    30

    文章

    4750

    瀏覽量

    68357
  • 編譯程序
    +關注

    關注

    0

    文章

    12

    瀏覽量

    4129
  • pytorch
    +關注

    關注

    2

    文章

    803

    瀏覽量

    13149
收藏 人收藏

    評論

    相關推薦

    基于擴散模型的圖像生成過程

    近年來,擴散模型在文本到圖像生成方面取得了巨大的成功,實現了更高圖像生成質量,提高了推理性能,也可以激發擴展創作靈感。 不過僅憑文本來控制圖像的生成
    的頭像 發表于 07-17 11:00 ?2659次閱讀
    基于<b class='flag-5'>擴散</b><b class='flag-5'>模型</b>的圖像<b class='flag-5'>生成</b>過程

    如何在PyTorch中使用擴散模型生成圖像

    除了頂尖的圖像質量,擴散模型還帶來了許多其他好處,包括不需要對抗性訓練。對抗訓練的困難是有據可查的。在訓練效率的話題上,擴散模型還具有可伸縮性和并行性的額外好處。
    發表于 11-22 15:51 ?483次閱讀
    如何在<b class='flag-5'>PyTorch</b>中使用<b class='flag-5'>擴散</b><b class='flag-5'>模型</b><b class='flag-5'>生成</b>圖像

    Pytorch模型訓練實用PDF教程【中文】

    模型部分?還是優化器?只有這樣不斷的通過可視化診斷你的模型,不斷的對癥下藥,才能訓練出一個較滿意的模型。本教程內容及結構:本教程內容主要為在 PyTorch 中訓練一個
    發表于 12-21 09:18

    怎樣去解決pytorch模型一直無法加載的問題呢

    rknn的模型轉換過程是如何實現的?怎樣去解決pytorch模型一直無法加載的問題呢?
    發表于 02-11 06:03

    pytorch模型轉化為onxx模型的步驟有哪些

    YoloV3模型pytorch權重文件轉化為onxx然后使用圖形化界面進行轉化,只要安裝了rknn模塊就會有圖形化界面python3 -m rknn.bin.visualization量化成功生成成功原作者:雨淺聽風吟
    發表于 05-09 16:36

    怎樣使用PyTorch Hub去加載YOLOv5模型

    在Python>=3.7.0環境中安裝requirements.txt,包括PyTorch>=1.7。模型和數據集從最新的 YOLOv5版本自動下載。簡單示例此示例從
    發表于 07-22 16:02

    通過Cortex來非常方便的部署PyTorch模型

    ,Hugging Face 生成的廣泛流行的自然語言處理(NLP)庫,是建立在 PyTorch 上的。Selene,生物前沿 ML 庫,建在 PyTorch 上。CrypTen,這個熱門的、新的、關注隱私
    發表于 11-01 15:25

    Pytorch模型轉換為DeepViewRT模型時出錯怎么解決?

    我正在尋求您的幫助以解決以下問題.. 我在 Windows 10 上安裝了 eIQ Toolkit 1.7.3,我想將我的 Pytorch 模型轉換為 DeepViewRT (.rtm) 模型,這樣
    發表于 06-09 06:42

    pytorch模型轉換需要注意的事項有哪些?

    什么是JIT(torch.jit)? 答:JIT(Just-In-Time)是一組編譯工具,用于彌合PyTorch研究與生產之間的差距。它允許創建可以在不依賴Python解釋器的情況下運行的模型
    發表于 09-18 08:05

    擴散模型在視頻領域表現如何?

    在視頻生成領域,研究的一個重要里程碑是生成時間相干的高保真視頻。來自谷歌的研究者通過提出一個視頻生成擴散模型來實現這一里程碑,顯示出非常有希
    的頭像 發表于 04-13 10:04 ?1626次閱讀

    如何改進和加速擴散模型采樣的方法1

      盡管擴散模型實現了較高的樣本質量和多樣性,但不幸的是,它們在采樣速度方面存在不足。這限制了擴散模型在實際應用中的廣泛采用,并導致了從這些模型
    的頭像 發表于 05-07 14:25 ?2269次閱讀
    如何改進和<b class='flag-5'>加速</b><b class='flag-5'>擴散</b><b class='flag-5'>模型</b>采樣的方法1

    如何改進和加速擴散模型采樣的方法2

      事實上,擴散模型已經在深層生成性學習方面取得了重大進展。我們預計,它們可能會在圖像和視頻處理、 3D 內容生成和數字藝術以及語音和語言建模等領域得到實際應用。它們還將用于藥物發現和
    的頭像 發表于 05-07 14:38 ?3156次閱讀
    如何改進和<b class='flag-5'>加速</b><b class='flag-5'>擴散</b><b class='flag-5'>模型</b>采樣的方法<b class='flag-5'>2</b>

    蒸餾無分類器指導擴散模型的方法

    去噪擴散概率模型(DDPM)在圖像生成、音頻合成、分子生成和似然估計領域都已經實現了 SOTA 性能。同時無分類器(classifier-free)指導進一步提升了
    的頭像 發表于 10-13 10:35 ?1172次閱讀

    使用PyTorch加速圖像分割

    使用PyTorch加速圖像分割
    的頭像 發表于 08-31 14:27 ?799次閱讀
    使用<b class='flag-5'>PyTorch</b><b class='flag-5'>加速</b>圖像分割

    PyTorch GPU 加速訓練模型方法

    在深度學習領域,GPU加速訓練模型已經成為提高訓練效率和縮短訓練時間的重要手段。PyTorch作為一個流行的深度學習框架,提供了豐富的工具和方法來利用GPU進行模型訓練。 1. 了解G
    的頭像 發表于 11-05 17:43 ?450次閱讀