在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

有關batch size的設置范圍

OpenCV學堂 ? 來源:機器之心 ? 作者:機器之心 ? 2022-07-12 10:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有關 batch size 的設置范圍,其實不必那么拘謹。

我們知道,batch size 決定了深度學習訓練過程中,完成每個 epoch 所需的時間和每次迭代(iteration)之間梯度的平滑程度。batch size 越大,訓練速度則越快,內存占用更大,但收斂變慢。

又有一些理論說,GPU 對 2 的冪次的 batch 可以發揮更好性能,因此設置成 16、32、64、128 … 時,往往要比設置為其他倍數時表現更優。

后者是否是一種玄學?似乎很少有人驗證過。最近,威斯康星大學麥迪遜分校助理教授,著名機器學習博主 Sebastian Raschka 對此進行了一番認真的討論。

Sebastian Raschka

關于神經網絡訓練,我認為我們都犯了這樣的錯誤:我們選擇批量大小為 2 的冪,即 64、128、256、512、1024 等等。(這里,batch size 是指當我們通過基于隨機梯度下降的優化算法訓練具有反向傳播的神經網絡時,每個 minibatch 中的訓練示例數。)

據稱,我們這樣做是出于習慣,因為這是一個標準慣例。這是因為我們曾經被告知,將批量大小選擇為 2 的冪有助于從計算角度提高訓練效率。

這有一些有效的理論依據,但它在實踐中是如何實現的呢?在過去的幾天里,我們對此進行了一些討論,在這里我想寫下一些要點,以便將來參考。我希望你也會發現這很有幫助!

理論背景

在看實際基準測試結果之前,讓我們簡要回顧一下將批大小選擇為 2 的冪的主要思想。以下兩個小節將簡要強調兩個主要論點:內存對齊和浮點效率。

內存對齊

選擇批大小為 2 的冪的主要論據之一是 CPU 和 GPU 內存架構是以 2 的冪進行組織的。或者更準確地說,存在內存頁的概念,它本質上是一個連續的內存塊。如果你使用的是 macOS 或 Linux,就可以通過在終端中執行 getconf PAGESIZE 來檢查頁面大小,它應該會返回一個 2 的冪的數字。

0aded8f6-0125-11ed-ba43-dac502259ad0.png

這個想法是將一個或多個批次整齊地放在一個頁面上,以幫助 GPU 并行處理。或者換句話說,我們選擇批大小為 2 以獲得更好的內存對齊。這與在視頻游戲開發和圖形設計中使用 OpenGL 和 DirectX 時選擇二次冪紋理類似。

矩陣乘法和 Tensor Core

再詳細一點,英偉達有一個矩陣乘法背景用戶指南,解釋了矩陣尺寸和圖形處理單元 GPU 計算效率之間的關系。因此,本文建議不要將矩陣維度選擇為 2 的冪,而是將矩陣維度選擇為 8 的倍數,以便在具有 Tensor Core 的 GPU 上進行混合精度訓練。不過,當然這兩者之間存在重疊:

0aed43d2-0125-11ed-ba43-dac502259ad0.png

為什么會是 8 的倍數?這與矩陣乘法有關。假設我們在矩陣 A 和 B 之間有以下矩陣乘法:

0afbc4e8-0125-11ed-ba43-dac502259ad0.png

將兩個矩陣 A 和 B 相乘的一種方法,是計算矩陣 A 的行向量和矩陣 B 的列向量之間的點積。如下所示,這些是 k 元素向量對的點積:

0b0dd5e8-0125-11ed-ba43-dac502259ad0.png

每個點積由一個「加」和一個「乘」操作組成,我們有 M×N 個這樣的點積。因此,共有 2×M×N×K 次浮點運算(FLOPS)。不過需要知道的是:現在矩陣在 GPU 上的乘法并不完全如此,GPU 上的矩陣乘法涉及平鋪。

如果我們使用帶有 Tensor Cores 的 GPU,例如英偉達 V100,當矩陣維度 (M、N 和 K)與 16 字節的倍數對齊(根據 Nvidia 的本指南)后,在 FP16 混合精度訓練的情況下,8 的倍數對于效率來說是最佳的。

通常,維度 K 和 N 由神經網絡架構決定(盡管如果我們自己設計還會有一些回旋余地),但批大小(此處為 M)通常是我們可以完全控制的。

因此,假設批大小為 8 的倍數在理論上對于具有 Tensor Core 和 FP16 混合精度訓練的 GPU 來說是最有效的,讓我們研究一下在實踐中可見的差異有多大。

簡單的 Benchmark

為了解不同的批大小如何影響實踐中的訓練,我運行了一個簡單的基準測試,在 CIFAR-10 上訓練 MobileNetV3 模型 10 個 epoch—— 圖像大小調整為 224×224 以達到適當的 GPU 利用率。在這里,我使用 16 位原生自動混合精度訓練在英偉達 V100 卡上運行訓練,它更有效地使用了 GPU 的張量核心。

如果想自己運行它,代碼可在此 GitHub 存儲庫中找到:https://github.com/rasbt/b3-basic-batchsize-benchmark

小 Batch Size 基準

我們從批大小為 128 的小基準開始。「訓練時間」對應于在 CIFAR-10 上訓練 MobileNetV3 的 10 個 epoch。推理時間意味著在測試集中的 10k 圖像上評估模型。

0b20d9ae-0125-11ed-ba43-dac502259ad0.jpg

查看上表,讓我們將批大小 128 作為參考點。似乎將批量大小減少一 (127) 或將批量大小增加一 (129) 確實會導致訓練性能減慢。但這里的差異看來很小,我認為可以忽略不計。

將批大小減少 28 (100) 會導致性能明顯下降。這可能是因為模型現在需要處理比以前更多的批次(50,000 / 100 = 500 對比 50,000 / 100 = 390)。可能出于類似的原因,當我們將批大小增加 28 (156) 時就可以觀察到更快的訓練時間。

最大 Batch Size 基準

鑒于 MobileNetV3 架構和輸入圖像大小,上一節中的批尺寸相對較小,因此 GPU 利用率約為 70%。為了研究 GPU 滿負荷時的訓練時間差異,我將批量大小增加到 512,以使 GPU 顯示出接近 100% 的計算利用率:

0b2b2d14-0125-11ed-ba43-dac502259ad0.jpg

由于 GPU 內存限制,批大小不可能超過 515。

同樣,正如我們之前看到的,作為 2 的冪(或 8 的倍數)的批大小確實會產生很小但幾乎不明顯的差異。

多 GPU 訓練

之前的基準測試評估了單塊 GPU 上的訓練性能。不過如今在多 GPU 上訓練深度神經網絡更為常見。所以讓我們看看下面的多 GPU 訓練的數字比較:

0b39c0cc-0125-11ed-ba43-dac502259ad0.jpg

請注意,推理速度被省略了,因為在實踐中我們通常仍會使用單個 GPU 進行推理。此外,由于 GPU 的內存限制,我無法運行批處理大小為 512 的基準測試,因此在這里降低到 256。

正如我們所看到的,這一次 2 的冪和 8 的倍數批量大小 (256) 并不比 257 快。在這里,我使用 DistributedDataParallel (DDP) 作為默認的多 GPU 訓練策略。你也可以使用不同的多 GPU 訓練策略重復實驗。GitHub 上的代碼支持 —strategy ddp_sharded (fairscale)、ddp_spawn、deepspeed 等。

基準測試注意事項

這里需要強調的是上述所有基準測試都有注意事項。例如我只運行每個配置一次。理想情況下,我們希望多次重復這些運行并報告平均值和標準偏差。(但這可能不會影響我們的結論,即性能沒有實質性差異)

此外,雖然我在同一臺機器上運行了所有基準測試,但我以連續的順序運行它們,運行之間沒有很長的等待時間。因此這可能意味著基本 GPU 溫度在運行之間可能有所不同,并且可能會對計時產生輕微影響。

我運行基準測試來模仿真實世界的用例,即在 PyTorch 中訓練具有相對常見設置的現成架構。然而,正如 Piotr Bialecki 正確指出的那樣,通過設置 torch.backends.cudnn.benchmark = True 可以稍微提高訓練速度。

其他資源和討論

正如 Ross Wightman 所提到的,他也不認為選擇批量大小作為 2 的冪會產生明顯的差異。但選擇 8 的倍數對于某些矩陣維度可能很重要。此外 Wightman 指出,在使用 TPU 時批量大小至關重要。(不幸的是,我無法輕松訪問 TPU,也沒有任何基準比較)

如果你對其他 GPU 基準測試感興趣,請在此處查看 Thomas Bierhance 的優秀文章:https://wandb.ai/datenzauberai/Batch-Size-Testing/reports/Do-Batch-Sizes-Actually-Need-to-be-Powers-of-2---VmlldzoyMDkwNDQx

特別是你想要比較:

顯卡是否有 Tensor Core;

顯卡是否支持混合精度訓練;

在像 DeiT 這樣的無卷積視覺轉換器

Rémi Coulom-Kayufu 的一個有趣的實驗表明,2 次方的批大小實際上很糟糕。看來對于卷積神經網絡,可以通過以下方式計算出較好的批大小:

Batch Size=int ((n×(1《《14)×SM)/(H×W×C))。

其中,n 是整數,SM 是 GPU 內核的數量(例如,V100 為 80,RTX 2080 Ti 為 68)。

結論

根據本文中共享的基準測試結果,我不認為選擇批大小作為 2 的冪或 8 的倍數在實踐中會產生明顯的差異。

然而,在任何給定的項目中,無論是研究基準還是機器學習的實際應用上,都已經有很多旋鈕需要調整。因此,將批大小選擇為 2 的冪(即 64、128、256、512、1024 等)有助于使事情變得更加簡單和易于管理。此外,如果你對發表學術研究論文感興趣,將批大小選擇為 2 的冪將使結果看起來不像是刻意挑選好結果。

雖然堅持批大小為 2 的冪有助于限制超參數搜索空間,但重要的是要強調批大小仍然是一個超參數。一些人認為較小的批尺寸有助于泛化性能,而另一些人則建議盡可能增加批大小。

個人而言,我發現最佳批大小在很大程度上取決于神經網絡架構和損失函數。例如,在最近一個使用相同 ResNet 架構的研究項目中,我發現最佳批大小可以在 16 到 256 之間,具體取決于損失函數。

因此,我建議始終考慮調整批大小作為超參數優化搜索的一部分。但是,如果因為內存限制而不能使用 512 的批大小,則不必降到 256。有限考慮 500 的批大小是完全可行的。

原文標題:一番實驗后,有關Batch Size的玄學被打破了

文章出處:【微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

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

    關注

    42

    文章

    4812

    瀏覽量

    103221
  • 存儲
    +關注

    關注

    13

    文章

    4519

    瀏覽量

    87268
  • gpu
    gpu
    +關注

    關注

    28

    文章

    4925

    瀏覽量

    130941

原文標題:一番實驗后,有關Batch Size的玄學被打破了

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    變頻器控制電機需要設置哪些參數

    變頻器控制電機時需要設置的參數主要包括以下幾類: 一、基本運行參數 1. 頻率范圍:根據電機的額定頻率和工作要求,設置變頻器的頻率范圍。這決定了電機的轉速
    的頭像 發表于 04-21 07:41 ?413次閱讀

    dlp2010更新flash時,如圖Batch File 和Pattern File這兩個文件不知道輸入什么,在哪里找到?

    dlp2010更新flash時,目的是想更新開機圖片,在設置時遇到問題,如圖Batch File 和Pattern File這兩個文件不知道輸入什么,在哪里找到
    發表于 02-25 06:48

    使用DLPC3478+DLPA3005做了一款板子,修改了batch file關燈但是無效,怎么回事?

    我們現在使用DLPC3478+DLPA3005做了一款板子,使用TI官網的9.0.1的red_only固件可以驅動光機,但是光機開機會投splash,我修改了batch file關燈但是無效
    發表于 02-17 06:05

    ADS1178轉換速率是否只與MODE有關,與輸入時鐘無關?

    看了ADS1178的數據手冊,輸入時鐘CLK范圍是100kHz到27MHz之間,SCLK推薦為CLK的1、1/2等 問題: 1、轉換速率是否只與MODE有關,與輸入時鐘無關?若設置MODE為0
    發表于 01-24 07:21

    中科芯CKS32K148 MCU SCG時鐘工作頻率范圍和寄存器設置

    接第四十五期的SCG介紹,下文對SCG時鐘工作頻率范圍、寄存器設置等進行詳細闡述。
    的頭像 發表于 12-09 14:55 ?872次閱讀
    中科芯CKS32K148 MCU SCG時鐘工作頻率<b class='flag-5'>范圍</b>和寄存器<b class='flag-5'>設置</b>

    DAC81416電壓為什么達不到設定輸出范圍最大值?

    您好! 首先外部對81416的供電電壓為17.5V。(我應用需求的最大電壓為16v) 現象: 當我設置輸出范圍為0~20v時, 1、單通道設置,通道0的code值為65535時,測量通道0輸出只能
    發表于 11-15 07:35

    電流速斷保護的保護范圍與什么有關

    電流速斷保護是一種電力系統保護裝置,主要用于檢測和切斷短路故障電流,以保護電力設備和系統安全。 電流速斷保護的保護范圍與以下因素有關: 1. 保護裝置的設置 電流速斷保護裝置的設置是影
    的頭像 發表于 09-26 16:20 ?1476次閱讀

    鋸齒波同步觸發電路移相范圍與哪些參數有關

    鋸齒波同步觸發電路的移相范圍與多個參數密切相關,這些參數共同決定了電路在觸發過程中的相位調整能力。具體來說,移相范圍主要與以下幾個參數有關: 控制電壓Uct : 控制電壓是調節移相范圍
    的頭像 發表于 09-25 17:03 ?3401次閱讀

    放大電路的帶寬與什么有關

    放大電路的帶寬是一個非常重要的參數,它決定了放大電路能夠處理的頻率范圍。帶寬與多種因素有關,包括電路設計、元件選擇、電源電壓、負載條件等。 1. 電路設計 1.1 放大器類型 放大器的類型對帶寬有
    的頭像 發表于 09-23 10:55 ?2170次閱讀

    瀚海微SD NAND存儲功能描述(27)C_SIZE

    該參數用于計算用戶的數據卡容量(不包括安全保護區域),數據卡的內存容量從C_SIZE、C_SIZE MULT和READ_BL_LEN表項計算。
    的頭像 發表于 09-21 16:32 ?630次閱讀
    瀚海微SD NAND存儲功能描述(27)C_<b class='flag-5'>SIZE</b>

    有關LMH6552放大電路電阻設置的問題求解

    放大,輸出波形也很好; 所以為什么用作加法器差分轉單端時,相同參數,輸出失真呀 還有就是希望看到的人能解決下我之前發的那個有關LMH6552放大電路電阻設置的問題;
    發表于 08-29 06:07

    熱電偶的測量范圍與什么有關

    熱電偶是一種測量溫度的傳感器,其工作原理是基于塞貝克效應,即兩種不同金屬或合金在一端連接時,由于溫度差產生電勢差的現象。熱電偶廣泛應用于工業、科研、醫療等領域,具有測量范圍廣、精度高、穩定性好等優點
    的頭像 發表于 08-27 11:04 ?1728次閱讀

    電源紋波測試帶寬設置的應用

    定義 帶寬是指信號在頻率域中的寬度,通常用赫茲(Hz)或千赫茲(kHz)來表示。在電源紋波測試中,帶寬是指測試設備能夠測量的頻率范圍。 重要性 帶寬設置對電源紋波測試的準確性和可靠性具有重要影響。如果帶寬設置過窄,可能
    的頭像 發表于 08-02 09:50 ?1090次閱讀

    TLV3801遲滯電壓設置是否有范圍上限最大能設置多少?

    之后LVDS輸出會不會偏離了LVDS的標準,對后級采集比較輸出脈沖的FPGA的LVDS接收端是否有影響呢? 3.遲滯電壓設置是否有范圍上限最大能設置多少? 感謝您的回答!
    發表于 08-01 07:34

    【算能RADXA微服務器試用體驗】+ GPT語音與視覺交互:2,圖像識別

    BM1684的FP32 BModel,batch_size=1 │├── yolov8s_int8_1b.bmodel# 使用TPU-MLIR編譯,用于BM1684的INT8 BModel
    發表于 07-14 23:36
    主站蜘蛛池模板: 日本三级s级在线播放 | 韩国三级在线不卡播放 | 91婷婷色涩涩 | 一级毛片一级毛片一级毛片aa | 国产成 人 综合 亚洲网 | 黑人干亚洲 | 黄视频日本 | 日本卡一卡2卡3卡4精品卡无人区 | 亚洲国产午夜精品理论片的软件 | 天天爽夜夜爽天天做夜夜做 | 亚洲 图片 小说 欧美 另类 | 久久成人综合 | 国产又爽又黄又粗又大 | 噜噜色网 | 国产午夜精品一区二区理论影院 | 婷婷国产成人久久精品激情 | 天堂资源在线最新版 | 东方天堂网 | 最近国语剧情视频在线观看 | 色站在线| 9984四虎永久免费网站 | 又长又大又粗又硬3p免费视频 | 国产精品久久免费观看 | 国产成人三级 | 91精品福利久久久 | videofreeones性欧美另类 | 狼人 成人 综合 亚洲 | 九色综合久久综合欧美97 | 国产大片免费观看资源 | 亚州人成网在线播放 | 五月天亚洲综合 | 日本一区二区精品88 | 黄色网址视频在线播放 | 久久久精品午夜免费不卡 | 久久精品操 | 久久综合九色综合网站 | 高清一本之道加勒比在线 | 天天夜干 | 思思99re66在线精品免费观看 | 变态重口极致另类在线 | 亚洲欧美成人在线 |