<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MosaicML Composer 煉丹技巧14條

          共 12391字,需瀏覽 25分鐘

           ·

          2021-12-10 16:59

          GiantPandaCV 導(dǎo)語:本文的主要內(nèi)容是介紹 MosaicML Composer 庫中包含的一些煉丹調(diào)優(yōu)技巧

          Github 鏈接:https://github.com/mosaicml/composer

          一、ALiBi (Attention with Linear Biases)

          參考文獻(xiàn):Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation, https://arxiv.org/abs/2108.12409

          核心思想

          對(duì)于 transformer 模型還有一個(gè)開放性的問題仍然未解決(how to achieve extrapolation at inference time),也就是如果遇到推理階段的序列長(zhǎng)度,長(zhǎng)于訓(xùn)練階段的序列長(zhǎng)度的時(shí)候該如何處理。

          論文中提出了一種嘗試解決該問題的方法,首先去掉 transformer 輸入的位置編碼,接著在計(jì)算 self-attention 的時(shí)候,給計(jì)算出來的 qk attension 分?jǐn)?shù)加上一個(gè)偏置項(xiàng),偏置項(xiàng)的大小正比于 q 和 k 的距離。

          論文在一個(gè) 13 億參數(shù)量的模型上做了實(shí)驗(yàn),使用 ALiBi 方法,在訓(xùn)練階段序列長(zhǎng)度是 1024 推理階段增加到 2048,和訓(xùn)練與預(yù)測(cè)階段序列長(zhǎng)度都是 2048 且用了位置編碼的設(shè)置相比,具有同樣的 perplexity 指標(biāo),且速度上快 11% 同時(shí)也能節(jié)省 11% 的內(nèi)存。

          方法介紹

          上圖中左邊是計(jì)算出來的其中一個(gè) Head 的 qk attention 分?jǐn)?shù)矩陣,右邊是一個(gè)常量矩陣,矩陣中每個(gè)位置的值對(duì)應(yīng) qk 對(duì)在序列中的距離,距離越遠(yuǎn)值越小,然后該矩陣再乘以一個(gè) m 常量,該常量與 Head 相關(guān),其計(jì)算公式如下:

          H 表示 multi-head attention 層中 Head 的個(gè)數(shù),h 則表示 Head 的索引。

          實(shí)驗(yàn)結(jié)果

          實(shí)驗(yàn)設(shè)置:

          采用 GPT2 模型在 OpenWebText 數(shù)據(jù)集上做實(shí)驗(yàn)。GPT2-52m baseline 表示訓(xùn)練序列長(zhǎng)度 1024 且輸入加上可學(xué)習(xí)的位置編碼,GPT2-52m ALiBi 0.25x 則表示去除輸入位置編碼且qk attention 加上偏置的方式, 0.25x 表示訓(xùn)練序列長(zhǎng)度 256 推理階段序列長(zhǎng)度 1024。

          實(shí)驗(yàn)結(jié)果如下表所示:

          NamePerplexityPerplexity DifferenceWall Clock Train Time (s)Train Time (ALiBi/Baseline)GPU Memory Allocated (%)GPU Allocated (ALiBi/Baseline)
          GPT2-52m baseline30.779±0.06
          9801±1
          92.91
          GPT2-52m ALiBi 0.25x30.542±0.030.248411±50.8679.920.86
          GPT2-83m baseline26.569
          17412
          97.04
          GPT2-83m ALiBi 0.25x26.19±0.020.3814733±30.8580.970.83
          GPT2-125m baseline24.114
          30176
          95.96
          GPT2-125m ALiBi 0.25x23.4870.63252800.8474.830.78

          從實(shí)驗(yàn)結(jié)果表明,采用 AliBi 方法可以獲得更低的 Perplexity 指標(biāo),且訓(xùn)練階段耗時(shí)和內(nèi)存占用都更低。不過實(shí)驗(yàn)中也觀察到一個(gè)現(xiàn)象就是當(dāng)訓(xùn)練階段序列長(zhǎng)度小于 128 的時(shí)候,推理階段拓展到更長(zhǎng)的序列,AliBi 方法的性能下降嚴(yán)重。所以建議采用 AliBi 方法訓(xùn)練模型的時(shí)候,訓(xùn)練序列長(zhǎng)度應(yīng)大于 256 或者訓(xùn)練階段序列長(zhǎng)度應(yīng)該不小于推理階段序列長(zhǎng)度的 0.03125 倍。

          二、AugMix

          參考文獻(xiàn):AugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty,https://arxiv.org/abs/1912.02781

          核心思想

          目前基于深度神經(jīng)網(wǎng)絡(luò)的圖像分類模型普遍都具有的問題是,當(dāng)訓(xùn)練和測(cè)試集是獨(dú)立同分布的情況下,模型在測(cè)試集上的精確度會(huì)很高反之則很低,而在實(shí)際場(chǎng)景中訓(xùn)練和測(cè)試集獨(dú)立同分布的概率非常低。

          目前已有的一些技術(shù)旨在,提升模型魯棒性和改善在部署的時(shí)候可能遇到的數(shù)據(jù)分布不同的問題。而在該論文中提出了 AugMix 數(shù)據(jù)預(yù)處理方法,實(shí)驗(yàn)結(jié)果表明該方法能很大程度提升圖像分類模型的魯棒性。

          方法介紹

          上圖就是 AugMix 數(shù)據(jù)預(yù)處理的流程示意圖。

          簡(jiǎn)單來說 AugMix 方法流程如下,總體會(huì)做 k 次并行的串聯(lián) data augmentation,比如上圖中 k=3。

          所謂串聯(lián)的 data augmentation 就是首先有一個(gè) data augmentation 的操作候選集合(translate_x, translate_y, shear_x, shear_y, rotate, solarize, equalize, posterize, autocontrast, color, brightness, contrast, sharpness 等)。

          每次串聯(lián) augmentation 會(huì)從中隨機(jī)采樣一個(gè)組合,比如上圖中第一個(gè)串聯(lián)就是 translate + shear。接著按順序以隨機(jī)強(qiáng)度應(yīng)用 augmentation 的到前一個(gè) augmentaion 的結(jié)果圖片上。

          做完 k 次串聯(lián)操作之后,接著從迪利克雷分布采樣出 k 個(gè)權(quán)值 w,它們之和為1。然后將并行的 k 個(gè)串聯(lián) data augmentation 的結(jié)果加權(quán)求和得到圖中的 Xaug 。最后再和原始圖片 Xorg 再做一次加權(quán)求和得到 AugMix 的輸出(權(quán)值 m 從貝塔分布中采樣得到)。

          三、BlurPool

          參考文獻(xiàn):Making Convolutional Networks Shift-Invariant Again,https://proceedings.mlr.press/v97/zhang19a.html

          官方代碼:https://github.com/adobe/antialiased-cnns

          核心思想

          目前深度卷積神經(jīng)網(wǎng)絡(luò)普遍存在一個(gè)問題,就是當(dāng)對(duì)輸入做輕微的平移的時(shí)候,網(wǎng)絡(luò)的輸出相對(duì)于原輸入的輸出會(huì)有非常大的變動(dòng)。網(wǎng)絡(luò)中常用的比如最大池化、平均池化和帶步長(zhǎng)的卷積等常用的下采樣方法,是導(dǎo)致這個(gè)問題的主要原因。

          在信號(hào)處理領(lǐng)域,通常采用抗鋸齒(anti-aliasing)來處理下采樣可能帶來的問題,簡(jiǎn)單來說就是在下采樣之前應(yīng)用低通濾波。

          但是對(duì)于深度神經(jīng)網(wǎng)絡(luò)又不能隨便加這個(gè)模塊,很容易會(huì)導(dǎo)致性能下降,所以應(yīng)用的很少。而這篇文章的貢獻(xiàn)點(diǎn)就在于發(fā)現(xiàn)了在哪些位置適合插入這個(gè)低通濾波,能夠很好和和目前的架構(gòu)融合到一起,比如最大池化和帶步長(zhǎng)卷積。

          同時(shí)實(shí)驗(yàn)結(jié)果表明對(duì)于常用的網(wǎng)絡(luò)比如 ResNet、DenseNet 和 MobileNet 應(yīng)用了這個(gè)技術(shù)之后,在 ImageNet 分類任務(wù)上的性能都有了提升,同時(shí)網(wǎng)絡(luò)的泛化能力和魯棒性都有了改善。

          方法介紹

          上圖展示的是原始的 MaxPool 操作 ,可以看出來 MaxPool 不具有平移不變性(當(dāng)輸入有偏移結(jié)果可能和之前有很大的不同)。而原始的 MaxPool 可以等價(jià)于右邊的操作,首先是步長(zhǎng)為1的 MaxPool 然后再接一個(gè)下采樣操作。

          上圖是論文中提出的看鋸齒 MaxBlurPool,首先是一個(gè)步長(zhǎng)為1的 MaxPool,然后接一個(gè)高斯濾波,然后再接一個(gè)下采樣。官方代碼實(shí)現(xiàn)是將后兩步驟合并為一個(gè) BlurPool (https://github.com/adobe/antialiased-cnns/blob/master/antialiased_cnns/blurpool.py) 操作,就是一個(gè)步長(zhǎng)為 2 的 depthwise 卷積,手動(dòng)初始化卷積核為高斯核。

          上圖展示了網(wǎng)絡(luò)中原始的下采樣模塊如何被替換為抗鋸齒的版本。

          詳細(xì)分析

          論文中舉了一個(gè)簡(jiǎn)單信號(hào)處理的例子來分析為何 MaxBlurPool 會(huì)優(yōu)于 MaxPool。

          比如對(duì)于一個(gè)一維信號(hào) [0, 0, 1, 1, 0, 0, 1, 1], 看到上圖中左邊的哪幅圖表,圖中灰色的8原點(diǎn)就對(duì)應(yīng)著輸入,接著對(duì)輸入應(yīng)用一個(gè) kernel=2, stride=2 的 MaxPool ,就得到藍(lán)色方框的結(jié)果 [0, 1, 0, 1],這時(shí)候如果對(duì)輸入進(jìn)行向右循環(huán)移1位,就得到新的輸入 [1, 0, 0, 1, 1, 0, 0, 1],這時(shí)候 maxpool 的結(jié)果就對(duì)應(yīng)圖中的紅色菱形 [1, 1, 1, 1]

          而之前分析可知,原始的 maxpool 操作等價(jià)于步長(zhǎng)為 1 的 maxpool + 下采樣操作,步長(zhǎng)為 1 的 maxpool 具有平移相似的性質(zhì),但是下采樣則破壞了這個(gè)性質(zhì)。上圖右邊的圖表中,黑色空心圓點(diǎn)就代表原始信號(hào) ?[0, 0, 1, 1, 0, 0, 1, 1] 做步長(zhǎng)為 1 的 maxpool 之后的結(jié)果 [0, 1, 1, 1, 0, 1, 1, 1]。

          右圖中灰色虛線表示 步長(zhǎng)為 1 的 maxpool + 高斯濾波的結(jié)果,可以看到曲線相對(duì)于黑色實(shí)線更平滑了,而綠色和粉紅色三角則表示對(duì)原始信號(hào)應(yīng)用 MaxBlurPool 和 將輸入信號(hào)進(jìn)行向右循環(huán)移1位之后再做 MaxBlurPool 的結(jié)果,分別是 [0.5, 1, 0.5, 1][0.75, 0.75, 0.75, 0.75] 兩個(gè)結(jié)果相對(duì)于原始 MaxPool 更加的接近。

          四、Channels Last (NHWC Data Format)

          參考文獻(xiàn):

          Volta Tensor Core GPU Achieves New AI Performance Milestones,https://developer.nvidia.com/blog/tensor-core-ai-performance-milestones/

          Inside Volta: The World’s Most Advanced Data Center GPU,https://developer.nvidia.com/blog/inside-volta/

          核心思想

          Tensor Core 是一種新型處理核心,適用于深度學(xué)習(xí)和某些類型的高性能計(jì)算任務(wù)。Tesla V100 GPU 包含 640 個(gè) Tensor Cores, 每個(gè) SM 包含8個(gè)。每個(gè) Tensor Core 在每個(gè)時(shí)鐘周期都能進(jìn)行一次 4x4x4 矩陣乘法操作。如上圖所示,A,B,C和 D 都是 4x4 矩陣。A和B都是 fp16 類型,累加結(jié)果 D 可能是 fp16 或者 fp32。

          對(duì)于支持 Tensor Core 的顯卡,在啟用了 fp16 之后, cuDNN 會(huì)自動(dòng)啟用 Tensor Core 加速計(jì)算速度,但是數(shù)據(jù)格式必須是 NHWC 格式,否則首先會(huì)做次 transpose 操作轉(zhuǎn)為 HNWC 計(jì)算完成之后再轉(zhuǎn)回原始格式,如上圖所示。所以這個(gè)transpose也會(huì)帶來額外的開銷,而如果網(wǎng)絡(luò)一開始就是 NHWC 格式則可以省略掉這些格式轉(zhuǎn)換的開銷。

          五、Cutout

          參考文獻(xiàn):Improved Regularization of Convolutional Neural Networks with Cutout,https://arxiv.org/abs/1708.04552

          官方代碼:https://github.com/uoguelph-mlrg/Cutout

          核心思想

          針對(duì)卷積神經(jīng)網(wǎng)絡(luò)容易出現(xiàn)的過擬合問題,這篇論文中提出了一種 data augmentation 方法 Cutout,能夠有效提升模型的分類性能和泛化能力。Cutout 其實(shí)是受視覺任務(wù)(檢測(cè),跟蹤,人體姿態(tài)估計(jì)等)中常見的物體遮擋問題所啟發(fā),通過人為生成被遮擋的圖片,讓模型在學(xué)習(xí)分類的時(shí)候更加關(guān)注圖片中的上下文信息。Cutout 不僅很容易實(shí)現(xiàn)而且也可以很好的和其他 data augmentation 方法結(jié)合來提升模型的性能,在數(shù)據(jù)集 ?CIFAR10, CIFAR-100 和 SVHN 上都刷新了測(cè)試集的指標(biāo)。

          方法介紹

          Cutout 實(shí)現(xiàn)很簡(jiǎn)單,就是對(duì)于輸入圖片隨機(jī)選擇圖中一個(gè)火多個(gè)矩形區(qū)域,將該區(qū)域內(nèi)的像素值替換為整個(gè)數(shù)據(jù)集的像素均值,或者直接替換為0。而且如果對(duì)整個(gè) batch 的同一個(gè)區(qū)域應(yīng)用 Cutout 則更加的高效,可以充分利用GPU。

          六、Label Smoothing

          參考文獻(xiàn):

          Rethinking the Inception Architecture for Computer Vision,https://arxiv.org/abs/1512.00567

          When Does Label Smoothing Help?,https://arxiv.org/abs/1906.02629

          方法介紹

          將原始的分類 target (也就是label) 修改為 ,原來是1 的改為 1 - alpha,原來是 0 的改為 alpha / (K-1) 其中 K 為類別數(shù), alpha 通常取 0.1 。

          七、MixUp

          參考文獻(xiàn):mixup: Beyond Empirical Risk Minimization,https://arxiv.org/abs/1710.09412

          核心思想

          大型的深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能力很強(qiáng),但是往往存在容易過擬合還有容易受對(duì)抗樣本的干擾。該論文提出了一個(gè) data augmentaion 方法 MixUp 來改善整個(gè)問題。簡(jiǎn)單來說 MixUp 就是將一對(duì)樣本以及它們的進(jìn)行加權(quán)融合。實(shí)驗(yàn)結(jié)果表明在 ImageNet-2012, CIFAR-10, CIFAR-100, Google commands 和 UCI 數(shù)據(jù)集上, MixUp 都能提高目前最新模型的泛化能力,同時(shí)能更好的防御對(duì)抗樣本。

          方法介紹

          上圖展示了鳥和青蛙圖片融合的樣例。

          MixUp 計(jì)算過程很簡(jiǎn)單,首先從數(shù)據(jù)集中采樣一對(duì)樣本 (Xi, Xj),它們的標(biāo)簽為 (Yi, Yj),接著從 Beta 分布采樣一個(gè)權(quán)值 lambda ?范圍 [0, 1],新的圖片和標(biāo)簽的計(jì)算公式為:

          Xnew?=?lambda?*?Xi?+?(1?-?lambda)?*?Xj
          Ynew?=?lambda?*?Yi?+?(1?-?lambda)?*?Yj

          八、Ghost BatchNorm

          參考文獻(xiàn):

          Train longer, generalize better: closing the generalization gap in large batch training of neural networks,https://arxiv.org/abs/1705.08741

          A New Look at Ghost Normalization,https://arxiv.org/abs/2007.08554

          核心思想

          深度學(xué)習(xí)模型一般都是采用隨機(jī)梯度下降法或其變種來訓(xùn)練,這些方法都是根據(jù)從一小批訓(xùn)練數(shù)據(jù)中得到的梯度來更新權(quán)值。而之前的實(shí)驗(yàn)觀察到一個(gè)現(xiàn)象就是,當(dāng)采用大 batch size 來訓(xùn)練模型的時(shí)候,模型的泛化能力會(huì)下降,這個(gè)現(xiàn)象被稱為 generalization gap ,如何縮小這個(gè) gap 這個(gè)仍然是開放性的問題。

          該論文針對(duì)大 batch size 這個(gè)問題提出了 BatchNorm 的改進(jìn)版本 GhostBatchNorm。該方法能夠不需要通過增加訓(xùn)練迭代次數(shù)也能縮小這個(gè) generalization gap。

          方法介紹

          上圖展示了 GhostNorm, BatchNorm, InstanceNorm, LayerNorm 和 GroupNorm 的區(qū)別,圖中字母分別代表:F 表示特征空間維度大小如果是二維圖像則是 F=N*W,C 表示通道數(shù),M 表示 batch 維度,GM 表示 GhostNorm 方法中 batch 維度上的分組大小,GC 表示 GroupNorm 方法中通道上的分組大小。

          GhostBatchNorm 方法簡(jiǎn)單來說就是對(duì)一個(gè)大的 batch 的輸入,在 batch 維度上進(jìn)行分組每組內(nèi)獨(dú)立計(jì)算 BatchNorm 。

          上圖展示了 GhostBatchNorm 的算法流程,首先對(duì)于一個(gè)大 batch_size=BL,設(shè)定每組 batch_size=BS,然后就得到 l 組,每組內(nèi)單獨(dú)計(jì)算 BatchNorm,接著將每個(gè)組內(nèi)計(jì)算得到的 mean 和 var 都通過一個(gè)公式加權(quán)求和累加到統(tǒng)計(jì)量 running_meanrunning_var 上,不過我覺得上面公式中搞錯(cuò)了,加權(quán)不同分組內(nèi)的均值和方差求和下表應(yīng)該是 l 而不是 i。還有最后推理階段的公式 running_mean 多了個(gè)上標(biāo) l。

          實(shí)際實(shí)驗(yàn)結(jié)果

          原論文中說應(yīng)用了 GhostBatchNorm 方法在小規(guī)模數(shù)據(jù)集上會(huì)帶來 0-3% ?的性能提升。但是實(shí)際實(shí)驗(yàn)結(jié)果表明,在 ImageNet 數(shù)據(jù)集上用 ResNet50 做實(shí)驗(yàn)會(huì)觀察到 Top-1 精確度會(huì)在 -0.3% - +0.3% 區(qū)間內(nèi)波動(dòng),同時(shí)吞吐率會(huì)下降 5% 左右。

          九、Progressive Image Resizing

          參考文獻(xiàn):Training a State-of-the-Art Model,https://github.com/fastai/fastbook/blob/780b76bef3127ce5b64f8230fce60e915a7e0735/07_sizing_and_tta.ipynb

          方法介紹

          該方法簡(jiǎn)單來說就是訓(xùn)練初始階段,將圖片以一定比例縮小,然后隨著訓(xùn)練的進(jìn)行,逐漸增大圖片大小到訓(xùn)練后期恢復(fù)到原始大小。該方法在訓(xùn)練初期能有效降低所需資源,同時(shí)網(wǎng)絡(luò)也能同時(shí)學(xué)到粗粒度和細(xì)粒度的特征。不過該方法只適用于能夠適應(yīng)不同輸入大小的網(wǎng)絡(luò)模型。

          在 ImageNet 上用 ResNet 系列實(shí)驗(yàn)結(jié)果表明,該方法能提升訓(xùn)練速度的同時(shí)不會(huì)對(duì)驗(yàn)證集精度有大的影響。

          實(shí)現(xiàn)細(xì)節(jié)

          對(duì)于縮小圖片的方式有兩種:

          • crop

            通過從原始圖片中裁剪出目標(biāo)大小的一個(gè)區(qū)域,這種方法適用于哪些對(duì)于圖像中物體尺度大小很重要的數(shù)據(jù)集,比如 Cifar-10,圖像的分辨率分來就很小了。

          • resize

            通過雙線性下采樣原圖的方式來得到目標(biāo)大小,這種方法適合那種包含多種不同尺度大小物體的數(shù)據(jù)集,圖像中的內(nèi)容全部都需要可見,又或者原始圖像的分辨率高。比如在 ImageNet 數(shù)據(jù)集上 resnet50 采用這種方法就比較好。

          十、RandAugment

          參考文獻(xiàn):Randaugment: Practical Automated Data Augmentation With a Reduced Search Space,https://openaccess.thecvf.com/content_CVPRW_2020/html/w40/Cubuk_Randaugment_Practical_Automated_Data_Augmentation_With_a_Reduced_Search_Space_CVPRW_2020_paper.html

          核心思想

          最近又不少關(guān)于自動(dòng) data augmentation 的工作,在圖像分類和物體檢測(cè)任務(wù)上都獲得了刷新了指標(biāo)。但是這些方法由于策略搜索的開銷比較大所以應(yīng)該用并不廣泛。

          這邊文章提出了 RandAugment 方法,該方法不僅簡(jiǎn)單,而且在 CIFAR-10/100, SVHN, ImageNet 和 COCO 等數(shù)據(jù)集上都能獲得和自動(dòng) augmentation 等方法差不多的精度。

          方法介紹

          上圖展示的是 RandAugment 對(duì)原始圖片的處理過程,對(duì)于每一張?jiān)紙D片,首先從一個(gè) augmentations 集合(translate_x, translate_y, shear_x, shear_y, rotate, solarize, posterize, equalize, autocontrast, color, contrast, brightness, sharpness)中采樣 depth 個(gè)操作。接著按順序以一定的強(qiáng)度(從正態(tài)分布采樣)應(yīng)用這些操作。RandAugment 通常是放在圖片縮放和裁剪操作之后,而在 normalization 操作之前。

          示例代碼:

          實(shí)驗(yàn)結(jié)果

          上圖展示的是 ImageNet 上的分類精度對(duì)比結(jié)果,F(xiàn)ast AA 和 AA 都表示自動(dòng) data augmentation 的方法,RA則是 RandAugment ,可以看到 RA 能獲得和 AA 方法同等甚至更優(yōu)的精度。

          十一、Selective Backprop

          參考文獻(xiàn):Accelerating Deep Learning by Focusing on the Biggest Losers,https://arxiv.org/abs/1910.00762

          核心思想

          該論文提出了 Selective-Backprop,是一種加速訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的技術(shù)。該方法在每次迭代反向回傳的時(shí)候,會(huì)有很大概率選擇哪些 loss 高的樣本回傳,而那些 loss 低的樣本有大概率會(huì)跳過,這樣能加速訓(xùn)練的同時(shí)也不會(huì)怎么影響模型的泛化性。

          實(shí)現(xiàn)細(xì)節(jié)

          上圖展示的是 Selective-Backprop 在 CIFAR10 訓(xùn)練過程中選擇或扔掉的樣本,左邊就是選擇頻率很低的樣本,右邊則是選擇頻率很高的樣本。

          Selective-Backprop 算法流程:

          實(shí)驗(yàn)結(jié)果

          但是從實(shí)驗(yàn)結(jié)果上看,提速也沒多少。

          其實(shí)個(gè)人感覺 Selective-Backprop 很像 hard-negative mining 那類方法,一開始網(wǎng)絡(luò)基本所以樣本都是難的,而隨著訓(xùn)練的進(jìn)行,模型很快就學(xué)會(huì)識(shí)別簡(jiǎn)單樣本了,這時(shí)候通過一個(gè)閾值過濾掉簡(jiǎn)單樣本,因?yàn)檫@些樣本loss很小,對(duì)梯度的貢獻(xiàn)也很小可以忽略,從而讓網(wǎng)絡(luò)關(guān)注于那些更難得樣本上。當(dāng)然這個(gè)方法著重點(diǎn)在于加速訓(xùn)練。

          十二、Squeeze-and-Excitation

          參考文獻(xiàn):Squeeze-and-Excitation Networks,https://arxiv.org/abs/1709.01507

          官方代碼:https://github.com/hujie-frank/SENet

          方法介紹

          Squeeze-and-Excitation 本質(zhì)就是在原來網(wǎng)絡(luò)結(jié)構(gòu)中插入了一個(gè)通道級(jí)別的注意力操作,每個(gè)通道的注意力系數(shù)通過一個(gè)可訓(xùn)練的 MLP 來生成。

          上圖展示的是如何在殘差模塊中加入 SE 模塊。

          十三、Stochastic Weight Averaging

          參考文獻(xiàn):Averaging Weights Leads to Wider Optima and Better Generalization,https://arxiv.org/abs/1803.05407

          官方代碼:https://github.com/timgaripov/swa

          方法介紹

          這個(gè)方法簡(jiǎn)單來說就是,會(huì)初始化兩份一樣的網(wǎng)絡(luò),在訓(xùn)練的時(shí)候只訓(xùn)練其中一個(gè)網(wǎng)絡(luò),然后在每個(gè)epoch結(jié)束的時(shí)候?qū)⒂?xùn)練網(wǎng)絡(luò)的權(quán)值通過移動(dòng)平均加權(quán)的方式累加到不訓(xùn)練網(wǎng)路的權(quán)值上。而不訓(xùn)練網(wǎng)絡(luò)的bn的 running_mean 和 running_var 則是最后訓(xùn)練完成之后,過一遍訓(xùn)練集得到。

          實(shí)驗(yàn)結(jié)果

          十四、Sequence Length Warmup

          參考文獻(xiàn):Curriculum Learning: A Regularization Method for Efficient and Stable Billion-Scale GPT Model Pre-Training,https://arxiv.org/abs/2108.06084

          核心思想

          近年來大型的自回歸語言模型(GPT,GPT-2,GPT-3)雖然在文本生成上可以取得很好的生成效果,但是普遍會(huì)遇到訓(xùn)練平穩(wěn)性的問題。在 GPT-2 (117M and 1.5B parameters)模型上的實(shí)驗(yàn)結(jié)果表明,當(dāng)增大模型大小,訓(xùn)練的序列長(zhǎng)度,batch size 和 學(xué)習(xí)率的時(shí)候,訓(xùn)練的平穩(wěn)性就越差。為了避免這個(gè)問題,一般會(huì)采用小的batch size和學(xué)習(xí)率,但是又會(huì)導(dǎo)致訓(xùn)練效率很低,需要更長(zhǎng)的訓(xùn)練時(shí)間。

          針對(duì)這個(gè)問題,該論文提出了基于課程學(xué)習(xí)的方法 Sequence Length Warmup,該方法可以改善自回歸語言模型的預(yù)訓(xùn)練收斂速度。實(shí)驗(yàn)結(jié)果表明,采用課程學(xué)習(xí)的設(shè)置可以在訓(xùn)練 GPT-2 的時(shí)候采用更大的 batch size (可以比原來大 8 倍)和更大的學(xué)習(xí)率(比原來大 4倍)。

          方法介紹

          這個(gè)方法簡(jiǎn)單來說就是,類似上面提到的圖像分類任務(wù)中的 Progressive Image Resizing,不過這里是初始訓(xùn)練從一個(gè)小的序列長(zhǎng)度開始,隨著訓(xùn)練迭代的進(jìn)行,逐漸增加序列長(zhǎng)度最后到最大的長(zhǎng)度。Sequence Length Warmup 通常都能夠減少 1.5 倍的訓(xùn)練時(shí)間同時(shí)能夠達(dá)到和 baseline 差不多的 loss 級(jí)別。

          image-20211130131842090

          實(shí)現(xiàn)細(xì)節(jié)

          對(duì)于 warmup 過程中如何生成指定長(zhǎng)度序列,有兩種方式:

          • 直接截?cái)嗑渥拥街付ㄩL(zhǎng)度

            比如序列長(zhǎng)度設(shè)置為 8,原始 batch size 為 2:

            We?choose?to?go?to?the?moon.?We?choose?to?go?to?the?moon?in?this?decade?and?do?the?other?things,?not?because?they?are?easy,?but?because?they?are?hard,?because?that?goal?will?serve?to?organize?and?measure?the?best?of?our?energies?and?skills.

            It?is?for?these?reasons?that?I?regard?the?decision?last?year?to?shift?our?efforts?in?space?from?low?to?high?gear?as?among?the?most?important?decisions?that?will?be?made?during?my?incumbency?in?the?office?of?the?Presidency.

            則會(huì)被截?cái)酁椋?/p>

            We?choose?to?go?to?the?moon.

            It?is?for?these?reasons?that?I?regard
          • 如果句子長(zhǎng)于指定長(zhǎng)度,則將超過長(zhǎng)度的部分截取出來拼接到 batch 維度上

            比如序列長(zhǎng)度設(shè)置為 8,原始 batch size 為 2:

            We?choose?to?go?to?the?moon.?We?choose?to?go?to?the?moon?in?this?decade?and?do?the?other?things,?not?because?they?are?easy,?but?because?they?are?hard,?because?that?goal?will?serve?to?organize?and?measure?the?best?of?our?energies?and?skills,?because?that?challenge

            It?is?for?these?reasons?that?I?regard?the?decision?last?year?to?shift?our?efforts?in?space?from?low?to?high?gear?as?among?the?most?important?decisions?that?will?be?made?during?my?incumbency?in?the?office?of?the?Presidency.

            則會(huì)變成 batch size 14:

            We?choose?to?go?to?the?moon.
            We?choose?to?go?to?the?moon?in
            this?decade?and?do?the?other?things
            not?because?they?are?easy,?but?because
            they?are?hard,?because?that?goal?will
            serve?to?organize?and?measure?the?best?of
            our?energies?and?skills,?because?that?challenge

            It?is?for?these?reasons?that?I?regard
            the?decision?last?year?to?shift?our?efforts
            in?space?from?low?to?high?gear?as
            among?the?most?important?decisions?that?will?be
            made?during?my?incumbency?in?the?office
            of?the?Presidency.?In?the?last?24
            hours?we?have?seen?facilities?now?being?created

          避免潛在的 Out-Of-Memory 錯(cuò)誤

          因?yàn)樾蛄虚L(zhǎng)度是逐漸增大的,所以框架比如 Pytorch 可能會(huì)不斷的擴(kuò)展其內(nèi)存。所以一個(gè)方法是一開始就按照最大的序列長(zhǎng)度來申請(qǐng)顯存,但是把大于 warmup 序列長(zhǎng)度的部分的梯度置0。


          瀏覽 79
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天操屄日日操屄 | 亚洲无码AV电影 | 一级一级a爰片免费看在线 | 99热影院在线观看 | 无码_免费在线视频网站入口_第1页 |