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

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

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

Github上放出了只需4-8塊GPU就能訓(xùn)練的“改進版”BigGAN模型代碼

DPVg_AI_era ? 來源:lp ? 2019-03-29 11:23 ? 次閱讀

機器學(xué)習(xí)模型訓(xùn)練成本往往令普通人倍感頭疼,動輒幾十上百塊泰坦,別說買,就是租都肉疼。近日,BigGAN作者之一在Github上放出了只需4-8塊GPU就能訓(xùn)練的“改進版”BigGAN模型代碼,可以說是窮人的福音。新模型使用PyTorch實現(xiàn)。

機器學(xué)習(xí)模型訓(xùn)練是一個耗時費力的過程,而且隨著人們對模型性能要求的提升,訓(xùn)練模型需要的計算力正以驚人的速度增長,堆疊高性能GPU進行數(shù)據(jù)訓(xùn)練幾乎是唯一選擇,動輒幾十塊上百塊的泰坦,搞的地主家也沒有余糧。

BigGAN效果拔群,但訓(xùn)練成本同樣讓人望而卻步,想自己搞?先摸摸錢包再說。

現(xiàn)在,BigGAN原作者之一Andrew Brock在Github上放出了只需4-8塊GPU就能訓(xùn)練的新版BigGAN,想窮人之所想,急窮人之所急,可以說是非常親民了。新模型使用的是PyTorch,而不是TF。

下面一起看看這個新模型的具體介紹,以下內(nèi)容來自Github上的簡介。

本資源包含由Andrew Brock,JeffDonahue和Karen Simonyan進行的大規(guī)模GAN高保真自然圖像合成訓(xùn)練的BigGAN,只需4-8塊 GPU的訓(xùn)練代碼。

本段代碼由Andy Brock和Alex Andonian編寫。

運行環(huán)境和條件

PyTorch 1.0.1

tqdm,numpy,scipy和h5py

ImageNet訓(xùn)練集

首先,可以選擇準(zhǔn)備目標(biāo)數(shù)據(jù)集的預(yù)處理HDF5版本,以實現(xiàn)更快的輸入輸出。之后需要計算FID所需的Inception時刻。這些都可以通過修改和運行以下代碼來完成

shscripts / utils / prepare_data.sh

默認(rèn)情況下,ImageNet訓(xùn)練集被下載到此目錄中的根文件夾中,并將以128x128像素分辨率準(zhǔn)備緩存的HDF5。

在scripts文件夾中,有多個bash腳本可以訓(xùn)練具有不同批量大小的BigGAN。假設(shè)您無法訪問完整的TPU pod,因此通過梯度累積(在多個小批量下進行梯度平均,并且僅在N次累積后執(zhí)行優(yōu)化程序步驟),以此形式表示大批量。

默認(rèn)情況下,可以使用launch_BigGAN_bs256x8.sh腳本訓(xùn)練一個全尺寸的BigGAN模型,批大小為256和8個梯度累積,總批量為2048。在8張V100上進行全精度訓(xùn)練(無張量),訓(xùn)練需要15天,期間共進行約150k次迭代。

首先需要確定設(shè)置可以支持的最大批量大小。這里提供的預(yù)訓(xùn)練模型是在8個V100上(每個顯存16GB )上訓(xùn)練的,這個配置可以支持比默認(rèn)使用的B1S256稍多一些的載荷。一旦確定了這一點,就應(yīng)該修改腳本,使批大小乘以梯度累積的數(shù)量等于所需的總批量大?。˙igGAN默認(rèn)為2048)。

另外,此腳本使用--load_in_memarg,將整個(最大支持64GB)的I128.hdf5文件加載到RAM中,以加快數(shù)據(jù)的加載速度。如果沒有足夠的RAM做硬件支持(可能需要96GB以上的RAM),請刪除此參數(shù)

度量標(biāo)準(zhǔn)和抽樣

在訓(xùn)練期間,腳本將輸出帶有訓(xùn)練指標(biāo)和測試指標(biāo)的日志,同時保存模型權(quán)重和優(yōu)化程序參數(shù)的多個副本(前者保存最近的2個,后者保存5個最高得分),并且每次保存權(quán)重時將生成樣本和插值。 logs文件夾包含處理這些日志的腳本,并使用MATLAB繪制結(jié)果。

訓(xùn)練之后,可以使用sample.py生成其他樣本和插值,使用不同的截斷值,批量大小,站立統(tǒng)計累積次數(shù)等進行測試。有關(guān)示例,請參閱sample_BigGAN_bs256x8.sh腳本。

默認(rèn)情況下,所有內(nèi)容都保存在weights/samples/logs/data文件夾中,這些文件夾設(shè)置與此repo位于同一文件夾中??梢允褂?-base_root參數(shù)將所有這些指向不同的基本文件夾,或者使用各自的參數(shù)(例如--logs_root)選擇每個基礎(chǔ)文件夾的特定位置。

此代碼中包含了運行BigGAN-deep的腳本,但還沒有完全訓(xùn)練使用它們的模型,因此用戶可以視作這些模型尚未測試過。此外,我代碼中還包括在CIFAR上運行模型的腳本,以及在ImageNet上運行SA-GAN(包括EMA)和SN-GAN的腳本。

SA-GAN代碼假設(shè)用戶配置在4張TitanX(或等同于該配置的GPU RAM),并且將以批量大小為128以及2個梯度累積運行。

關(guān)于初始度量標(biāo)準(zhǔn)的重要說明

本資源使用PyTorch內(nèi)置的初始網(wǎng)絡(luò)來計算IS和FID分?jǐn)?shù)。這些分?jǐn)?shù)與使用Tensorflow官方初始代碼獲得的分?jǐn)?shù)不同,僅用于監(jiān)控目的。使用--sample_npz參數(shù)在模型上運行sample.py,然后運行inception_tf13來計算實際的TensorFlow IS。請注意,需要安裝TensorFlow 1.3或更早版本,因為1.4或更高版本會破壞原始的IS代碼。

預(yù)訓(xùn)練模型

PyTorch初始分?jǐn)?shù)和FID分?jǐn)?shù)

我們引入了兩個預(yù)訓(xùn)練模型檢查點(使用G,D,G的EMA副本,優(yōu)化器和狀態(tài)dict):

主要檢查點是在 128x128 ImageNet 圖像上訓(xùn)練的 BigGAN,該模型使用 BS256 和 8 梯度累積,并在崩潰前實現(xiàn),其 TF Inception Score 為 97.35 +/- 1.79,

詳見:

https://drive.google.com/open?id=1nAle7FCVFZdix2—ks0r5JBkFnKw8ctW

第一個模型(100k G iters)的早期檢查點,性能更高,在崩潰之前實現(xiàn),可能更容易微調(diào)。

詳見:

https://drive.google.com/open?id=1dmZrcVJUAWkPBGza_XgswSuT-UODXZcO。

另外,使用Places-365數(shù)據(jù)集的預(yù)訓(xùn)練模型即將推出。

此repo還包含用于將原始TF HubBigGAN 生成器權(quán)重的PyTorch的移植腳本。有關(guān)更多詳細(xì)信息,請參閱TFHub文件夾中的腳本。

使用自己的數(shù)據(jù)集或創(chuàng)建新的訓(xùn)練函數(shù)微調(diào)模型

如果想恢復(fù)中斷訓(xùn)練或微調(diào)預(yù)訓(xùn)練模型,請在運行相同的啟動腳本,添加--resume參數(shù)。實驗名稱是由訓(xùn)練配置自動生成的,但如果希望使用修改后的優(yōu)化器設(shè)置微調(diào)模型,可以使用--experiment_namearg進行文件名的覆蓋。

要準(zhǔn)備自己的數(shù)據(jù)集,需要將其添加到datasets.py并修改utils.py中的convenience dicts,以獲得數(shù)據(jù)集的相應(yīng)元數(shù)據(jù)。在prepare_data.sh中重復(fù)此過程(也可以選擇生成HDF5預(yù)處理副本,并計算FID的Inception Moments)。

默認(rèn)情況下,訓(xùn)練腳本將保存初始分?jǐn)?shù)最高的前5個檢查點。對于ImageNet以外的數(shù)據(jù)集,初始分?jǐn)?shù)可能是一種非常差的質(zhì)量標(biāo)準(zhǔn),可以使用--which_bestFID來代替。

要使用自己的訓(xùn)練函數(shù)(如訓(xùn)練BigVAE):修改train_fns.GAN_training_function或在if config['which_train_fn'] =='GAN'之后添加新的訓(xùn)練函數(shù)。

本模型的主要亮點

本資源庫提供完整的訓(xùn)練和指標(biāo)日志以供參考。重現(xiàn)論文過程中最困難的事情之一就是檢查訓(xùn)練早期的記錄日志是否規(guī)整,特別是在訓(xùn)練時間長達數(shù)周的情況下。希望這將有助于未來的工作。

本資源庫包括一個加速的FID計算 - 原始的scipy版本可能需要超過10分鐘來計算矩陣sqrt,此版本使用加速的PyTorch版本,計算時間不到1秒。

本資源用了一種加速、低內(nèi)存消耗的正交寄存器實現(xiàn)。默認(rèn)情況下,只計算最大奇異值(譜范數(shù)),但本段代碼通過 —num_G_SVs 參數(shù)支持了更多 SV 的計算。

本模型與原始BigGAN之間的主要區(qū)別

我們使用來自SA-GAN的優(yōu)化器設(shè)置(G_lr= 1e-4,D_lr = 4e-4,num_D_steps= 1,與BigGAN的設(shè)置不同(G_lr = 5e-5,D_lr = 2e-5,num_D_steps = 2)。雖然這樣犧牲了些許性能,但這是削減訓(xùn)練時間的第一步。

默認(rèn)情況下,本資源不使用Cross-Replica BatchNorm(又名Synced BatchNorm)。本資源嘗試的兩種變體與內(nèi)置的BatchNorm具有略微不同的梯度(盡管是相同的前向傳遞),可以滿足訓(xùn)練要求。

梯度累積意味著需要更頻繁地更新SV估計值和BN統(tǒng)計量(頻度增加了8倍)。這意味著BN統(tǒng)計數(shù)據(jù)更接近于常設(shè)統(tǒng)計數(shù)據(jù),而且奇異值估計往往更準(zhǔn)確。因此,在測試模式下默認(rèn)使用G來衡量指標(biāo)(使用BatchNorm運行統(tǒng)計估算,而不是像文件中那樣計算常設(shè)統(tǒng)計數(shù)據(jù))。

我們?nèi)匀恢С殖TO(shè)統(tǒng)計信息(具體見sample.sh腳本)。這也可能導(dǎo)致早期累積的梯度變得過時,但在實踐中這已經(jīng)不再是個問題。

目前給出的預(yù)訓(xùn)練模型未經(jīng)過正交正則化訓(xùn)練。似乎增加了模型由于截斷變得不可修復(fù)的可能性,但本資源庫中給出特定模型似乎格外好運,沒有碰到這種情況。不過,我們還是提供兩個經(jīng)過高度優(yōu)化(快速和最小內(nèi)存消耗)的正交寄存器實現(xiàn),直接計算正交寄存器梯度。

Github資源地址:

https://github.com/ajbrock/BigGAN-PyTorch

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

    關(guān)注

    27

    文章

    4591

    瀏覽量

    128168
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131848
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    461

    瀏覽量

    16237

原文標(biāo)題:學(xué)生黨福音!僅4個GPU打造自己的BigGAN,PyTorch代碼已開源

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FP8模型訓(xùn)練中Debug優(yōu)化思路

    目前,市場上許多公司都積極開展基于 FP8 的大模型訓(xùn)練,以提高計算效率和性能。在此,我們整理并總結(jié)了客戶及 NVIDIA 技術(shù)團隊在 FP8 模型
    的頭像 發(fā)表于 09-06 14:36 ?130次閱讀
    FP<b class='flag-5'>8</b><b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>中Debug優(yōu)化思路

    GitHub推出GitHub Models服務(wù),賦能開發(fā)者智能選擇AI模型

    8月2日,全球領(lǐng)先的代碼托管平臺GitHub宣布了一項重大創(chuàng)新——GitHub Models服務(wù)的正式推出。該服務(wù)被定位為AI時代的工程師助手,旨在幫助全球超過1億的
    的頭像 發(fā)表于 08-02 15:39 ?387次閱讀

    llm模型訓(xùn)練一般用什么系統(tǒng)

    。 硬件系統(tǒng) 1.1 GPU(圖形處理器) 在訓(xùn)練大型語言模型時,GPU是首選的硬件設(shè)備。相比于CPU,GPU具有更高的并行處理能力,可以顯
    的頭像 發(fā)表于 07-09 10:02 ?220次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個復(fù)雜且關(guān)鍵的過程,它涉及大量的數(shù)據(jù)、計算資源和精心設(shè)計的算法。訓(xùn)練一個深度學(xué)習(xí)模型,本質(zhì)是通過優(yōu)化算法調(diào)整
    的頭像 發(fā)表于 07-01 16:13 ?493次閱讀

    【大語言模型:原理與工程實踐】大語言模型的預(yù)訓(xùn)練

    大語言模型的核心特點在于其龐大的參數(shù)量,這賦予了模型強大的學(xué)習(xí)容量,使其無需依賴微調(diào)即可適應(yīng)各種下游任務(wù),而更傾向于培養(yǎng)通用的處理能力。然而,隨著學(xué)習(xí)容量的增加,對預(yù)訓(xùn)練數(shù)據(jù)的需求也相應(yīng)
    發(fā)表于 05-07 17:10

    如何提高自動駕駛汽車感知模型訓(xùn)練效率和GPU利用率

    由于采用了多攝像頭輸入和深度卷積骨干網(wǎng)絡(luò),用于訓(xùn)練自動駕駛感知模型GPU 內(nèi)存占用很大。當(dāng)前減少內(nèi)存占用的方法往往會導(dǎo)致額外的計算開銷或工作負(fù)載的失衡。
    的頭像 發(fā)表于 04-29 09:12 ?679次閱讀
    如何提高自動駕駛汽車感知<b class='flag-5'>模型</b>的<b class='flag-5'>訓(xùn)練</b>效率和<b class='flag-5'>GPU</b>利用率

    AI訓(xùn)練,為什么需要GPU?

    隨著由ChatGPT引發(fā)的人工智能熱潮,GPU成為了AI大模型訓(xùn)練平臺的基石,甚至是決定性的算力底座。為什么GPU能力壓CPU,成為炙手可熱的主角呢?要回答這個問題,首先需要了解當(dāng)前人
    的頭像 發(fā)表于 04-24 08:05 ?1075次閱讀
    AI<b class='flag-5'>訓(xùn)練</b>,為什么需要<b class='flag-5'>GPU</b>?

    模型時代,國產(chǎn)GPU面臨哪些挑戰(zhàn)

    ,國產(chǎn)GPU在不斷成長的過程中也存在諸多挑戰(zhàn)。 ? 在大模型訓(xùn)練存在差距 ? 大語言模型是基于深度學(xué)習(xí)的技術(shù)。這些
    的頭像 發(fā)表于 04-03 01:08 ?4413次閱讀
    大<b class='flag-5'>模型</b>時代,國產(chǎn)<b class='flag-5'>GPU</b>面臨哪些挑戰(zhàn)

    國產(chǎn)GPU在AI大模型領(lǐng)域的應(yīng)用案例一覽

    不斷推出新品,產(chǎn)品也逐漸在各個領(lǐng)域取得應(yīng)用,而且在大模型訓(xùn)練和推理方面,也有所建樹。 ? 國產(chǎn)GPU在大模型的應(yīng)用進展 ? 電子發(fā)燒友此
    的頭像 發(fā)表于 04-01 09:28 ?3437次閱讀
    國產(chǎn)<b class='flag-5'>GPU</b>在AI大<b class='flag-5'>模型</b>領(lǐng)域的應(yīng)用案例一覽

    FPGA在深度學(xué)習(xí)應(yīng)用中或?qū)⑷〈?b class='flag-5'>GPU

    上漲,因為事實表明,它們的 GPU訓(xùn)練和運行 深度學(xué)習(xí)模型 方面效果明顯。實際,英偉達也已經(jīng)對自己的業(yè)務(wù)進行了轉(zhuǎn)型,之前它是一家純粹做 GPU
    發(fā)表于 03-21 15:19

    在AMD GPU如何安裝和配置triton?

    最近在整理python-based的benchmark代碼,反過來在NV的GPU又把Triton裝了一遍,發(fā)現(xiàn)Triton的github repo已經(jīng)給
    的頭像 發(fā)表于 02-22 17:04 ?1988次閱讀
    在AMD <b class='flag-5'>GPU</b><b class='flag-5'>上</b>如何安裝和配置triton?

    基于YOLOv8實現(xiàn)自定義姿態(tài)評估模型訓(xùn)練

    Hello大家好,今天給大家分享一下如何基于YOLOv8姿態(tài)評估模型,實現(xiàn)在自定義數(shù)據(jù)集,完成自定義姿態(tài)評估模型訓(xùn)練與推理。
    的頭像 發(fā)表于 12-25 11:29 ?2427次閱讀
    基于YOLOv<b class='flag-5'>8</b>實現(xiàn)自定義姿態(tài)評估<b class='flag-5'>模型</b><b class='flag-5'>訓(xùn)練</b>

    NVIDIA 為部分大型亞馬遜 Titan 基礎(chǔ)模型提供訓(xùn)練支持

    本文將介紹亞馬遜如何使用 NVIDIA NeMo 框架、GPU 以及亞馬遜云科技的 EFA 來訓(xùn)練其 最大的新一代大語言模型(LLM)。 大語言模型的一切都很龐大——巨型
    的頭像 發(fā)表于 11-29 21:15 ?457次閱讀
    NVIDIA 為部分大型亞馬遜 Titan 基礎(chǔ)<b class='flag-5'>模型</b>提供<b class='flag-5'>訓(xùn)練</b>支持

    NeurIPS 2023 | 全新的自監(jiān)督視覺預(yù)訓(xùn)練代理任務(wù):DropPos

    ://arxiv.org/pdf/2309.03576 代碼鏈接:? https://github.com/Haochen-Wang409/DropPos 今天介紹我們在 自監(jiān)督視覺預(yù)訓(xùn)練 領(lǐng)域的一篇原創(chuàng)
    的頭像 發(fā)表于 10-15 20:25 ?430次閱讀
    NeurIPS 2023 | 全新的自監(jiān)督視覺預(yù)<b class='flag-5'>訓(xùn)練</b>代理任務(wù):DropPos

    靜態(tài)代碼、構(gòu)造代碼、構(gòu)造函數(shù)及普通代碼的執(zhí)行順序

    在Java中,靜態(tài)代碼、構(gòu)造代碼、構(gòu)造函數(shù)、普通代碼的執(zhí)行順序是一個筆試的考點,通過這篇文
    的頭像 發(fā)表于 10-09 15:40 ?983次閱讀
    靜態(tài)<b class='flag-5'>代碼</b><b class='flag-5'>塊</b>、構(gòu)造<b class='flag-5'>代碼</b><b class='flag-5'>塊</b>、構(gòu)造函數(shù)及普通<b class='flag-5'>代碼</b><b class='flag-5'>塊</b>的執(zhí)行順序