偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

深度學(xué)習(xí)的Batchsize必須是2的n次方嗎?

發(fā)布于 2024-12-19 12:08
瀏覽
0收藏

大家或多或少都已經(jīng)默認(rèn)了,batchsize一般都是2,8,36,64,128...因?yàn)榛旧纤姓撐亩际沁@么設(shè)置默認(rèn)超參數(shù),大家久而久之就習(xí)慣了,至少這樣設(shè)置總不會(huì)錯(cuò)吧。

其實(shí)我也有這么一個(gè)迷思,如果不設(shè)置為2的n次方會(huì)怎么樣?效果變差?效率變低?還是...

基本理論

一般而言,選擇batchsize為2的冪背后的主要思想來自于:內(nèi)存對(duì)齊和浮點(diǎn)效率。

內(nèi)存對(duì)齊

將batchsize選擇為2的冪的主要論點(diǎn)之一是CPU和GPU內(nèi)存架構(gòu)是以2的冪組織的。有一個(gè)內(nèi)存頁的概念,它本質(zhì)上是一個(gè)連續(xù)的內(nèi)存塊。如果使用的是macOS或Linux,可以通過在終端中執(zhí)行g(shù)etconf PAGESIZE來檢查頁面大小,這應(yīng)該返回一個(gè)2的冪。

深度學(xué)習(xí)的Batchsize必須是2的n次方嗎?-AI.x社區(qū)

這個(gè)想法是將一個(gè)或多個(gè)批次整齊地放在一個(gè)頁面上,幫助GPU中的并行處理。或者換句話說,選擇批量大小為2,以獲得更好的內(nèi)存對(duì)齊。這與在視頻游戲開發(fā)和圖形設(shè)計(jì)中使用OpenGL和DirectX時(shí)選擇2的冪次紋理類似(并且可能受到啟發(fā))。

浮點(diǎn)效率

Nvidia有一個(gè)矩陣乘法背景指南,解釋了矩陣維數(shù)和圖形處理單元(GPU)計(jì)算效率之間的關(guān)系。建議將矩陣維數(shù)選擇為8的倍數(shù),在有Tensor Core的GPU上進(jìn)行混合精度訓(xùn)練更有效率。

將兩個(gè)矩陣A和B相乘的一種方式是通過計(jì)算矩陣A的行向量與矩陣B的列向量之間的點(diǎn)積。如下所示,這些是k元素向量對(duì)的點(diǎn)積:

深度學(xué)習(xí)的Batchsize必須是2的n次方嗎?-AI.x社區(qū)

每個(gè)點(diǎn)積由一個(gè)“加”和一個(gè)“乘”操作組成,我們有 M×N 個(gè)這樣的點(diǎn)積。因此,總的來說,我們有 2×M×N×K 浮點(diǎn)運(yùn)算(FLOPS)。如果這時(shí)候使用GPU例如V100,當(dāng)矩陣維度( MM , NN 和 KK )對(duì)齊為16字節(jié)的倍數(shù)時(shí),計(jì)算效率會(huì)更好(根據(jù)Nvidia的指南)。具體來說,在FP16混合精度訓(xùn)練的情況下,8的倍數(shù)是效率的最佳選擇。

實(shí)驗(yàn)驗(yàn)證

以下驗(yàn)證都是基于在CIFAR-10上訓(xùn)練MobileNetV3模型測試。

小Batchsize驗(yàn)證

看起來,將批量大小減少1(127)或?qū)⑴看笮≡黾?(129)確實(shí)會(huì)導(dǎo)致訓(xùn)練性能稍慢。這里的差異幾乎不明顯,可以忽略不計(jì)。

深度學(xué)習(xí)的Batchsize必須是2的n次方嗎?-AI.x社區(qū)

大Batchsize驗(yàn)證

批量大小為2的冪(或8的倍數(shù))確實(shí)會(huì)產(chǎn)生很小但幾乎不明顯的差異。

深度學(xué)習(xí)的Batchsize必須是2的n次方嗎?-AI.x社區(qū)

多GPU下Batchsize驗(yàn)證

這一次,2的冪和8的倍數(shù)的批量大小(256)沒有快于257,所以其實(shí)實(shí)際上稍微改變Batchsize,在現(xiàn)實(shí)中影響并沒有那么明顯。

深度學(xué)習(xí)的Batchsize必須是2的n次方嗎?-AI.x社區(qū)

結(jié)論

如果按實(shí)踐指南來說,建議還是以2的n次方來設(shè)置batchsize比較穩(wěn)妥,一個(gè)是有理論基礎(chǔ),另外一個(gè)是誰也不想因?yàn)锽atchsize的個(gè)性化導(dǎo)致漫長的訓(xùn)練過程變得更漫長。但從實(shí)際簡單的測試來看,好像影響又不是很明顯,但總體來說,Batchsize一般設(shè)置在16-256之間,是比較有效且穩(wěn)妥的做法,可供參考。

https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#gpu-imple

??https://sebastianraschka.com/blog/2022/batch-size-2.html??

本文轉(zhuǎn)載自 ??沐白AI筆記??,作者: 楊沐白

收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦