精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練 原創

發布于 2024-10-14 08:11
瀏覽
0收藏

本文將通過一個實戰案例來展示如何借助于PyTorch自動混合精度庫對ResNet50模型進行優化,然后借助少許幾行代碼即可獲得超過兩倍速度的模型訓練效率。

簡介

你是否曾希望你的深度學習模型運行得更快?

一方面,GPU很昂貴。另一方面,數據集龐大,訓練過程似乎永無止境;你可能有一百萬個實驗要進行,還有一個截止日期。所有這些需求都是期待特定形式的訓練加速的極好理由。

但是,我們該選哪一種模型呢?

??PyTorch???、??HuggingFace???和??Nvidia??已經為模型訓練的性能調優提供了很好的參考,包括異步數據加載、緩沖區檢查點、分布式數據并行化和自動混合精度等等。

在這篇文章中,我將專注介紹自動混合精度技術。首先,我將簡要介紹Nvidia的張量核設計;然后,我們一起探討發表在ICLR 2018上的開創性工作——“混合精度訓練”相關論文;最后,我將介紹一個在FashionMNIST數據集上訓練ResNet50模型的簡單示例。通過這個示例,我們來展示如何在加載雙倍批量數據的同時將訓練速度提高兩倍,而這一結果卻只需要額外編寫三行代碼。

硬件基礎——Nvidia張量核

首先,讓我們回顧一下GPU設計的一些基本原理。英偉達GPU最受歡迎的商業產品之一是Volta系列,例如基于GV100 GPU設計的V100 GPU。因此,我們將圍繞下面的GV100架構進行討論。

對于GV100架構來說,流式多處理器(SM)是計算的核心設計。每個GPU包含6個GPU處理集群(GPC)和S84 SM(或V100的80 SM)。其整體設計如下圖所示:

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

Volta GV100 GPU設計(每個GPU包含6個GPC,每個GPC包含14個SM;圖像來源:https://arxiv.org/pdf/1803.04014)

對于每個SM,它包含兩種類型的核心:CUDA核心和張量核。CUDA核心是Nvidia于2006年推出的原始設計,是CUDA平臺的重要組成部分。CUDA核心可分為三種類型:FP64核心/單元、FP32核心/單元和Int32核心/單元。每個GV100 SM包含32個FP64核心、64個FP32核心和64個Int32核心。Volta/Turing(2017)系列GPU中引入了張量核,以便與之前的Pascal(2016)系列分離。GV100上的每個SM包含8個張量核。??鏈接??處給出了V100 GPU的完整詳細信息列表。下面詳細介紹SM設計。

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

一個英偉達Tesla V100處理組就包含640個張量核(圖像來源:https://arxiv.org/pdf/1903.03640)

為什么選擇張量核?Nvidia張量核專門用于執行通用矩陣乘法(GEMM)和半精度矩陣乘法和累加(HMMA)操作。簡而言之,GEMM以A*B+C的格式執行矩陣運算,HMMA將運算轉換為半精度格式。有關這方面的更詳細的討論可以在??鏈接???處找到。由于深度學習涉及MMA;所以,張量(Tensor)核心在當今的模型訓練和加速計算中至關重要。

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

GEMM操作示例(對于HMMA,A和B通常轉換為FP16,而C和D可以是FP16或FP32),圖像來源:https://arxiv.org/pdf/1811.08309

當然,當切換到混合精度訓練時,請務必檢查你使用的GPU的規格。只有最新的GPU系列支持張量核,混合精度訓練只能在這些機器上使用。

數據格式基礎——單精度(FP32)與半精度(FP16)

現在,讓我們仔細看看FP32和FP16格式。FP32和FP16是IEEE格式,使用32位二進制存儲和16位二進制存儲表示浮點數。這兩種格式都包括三個部分:a)符號位;b)指數位;c)尾數位。FP32和FP16分配給指數和尾數的比特數不同,這導致了不同的值范圍和精度。

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

FP16(IEEE標準)、BF16(Google Brain標準)、FP32(IEEE標準)和TF32(Nvidia標準)之間的區別(圖像來源:https://en.wikipedia.org/wiki/Bfloat16_floating-point_format)

如何將FP16和FP32轉換為真實的值呢?根據IEEE-754標準,FP32的十進制值=(-1)^(符號)×2^(十進制指數-127)×(隱式前導1+十進制尾數),其中127是有偏差的指數值。對于FP16,公式變為(-1)^(符號)×2^(十進制指數-15)×(隱式前導1+十進制尾數),其中15是相應的有偏指數值。你可以在??鏈接??處查看有偏指數值的更多詳細信息。

從這個意義上講,FP32的取值范圍約為[-212S,21283;]~[-1.7*1e38,1.7*1e38],FP16的取值范圍大約為[-2?,2'8309]=[-32768,32768]。請注意,FP32的十進制指數在0到255之間,我們排除了最大值0xFF,因為它表示NAN。這就解釋了為什么最大的十進制指數是254–127=127。當然,類似的規則也適用于FP16。

對于精度方面,請注意指數和尾數都有助于精度限制(也稱為非規范化,請參閱??鏈接???處的詳細討論)。因此,FP32可以表示高達2^(-23)*2^(-126)=2^(-149)的精度,FP16可以表示高至2^(10)*2^。

FP32和FP16表示之間的差異帶來了混合精度訓練的關鍵問題,因為深度學習模型的不同層/操作對值范圍和精度或者不敏感或者敏感,所以需要單獨解決。

混合精度訓練

前面,我們已經學習了MMA的硬件基礎知識、張量核的概念以及FP32和FP16之間的關鍵區別。接下來,我們可以進一步討論混合精度訓練的細節。

混合精度訓練的想法最早是在2018年ICLR論文??《混合精度訓練》(Mixed Precision Training)???中提出的。該論文在訓練過程中將深度學習模型轉換為半精度浮點,而不會損失模型精度或修改超參數。如上所述,由于FP32和FP16之間的關鍵區別在于值范圍和精度,該論文詳細討論了FP16為什么會導致梯度消失,以及如何通過損失縮放來解決這個問題。此外,該論文還提出了使用FP32主權重拷貝和使用FP32進行歸約和向量點積累加等特定操作的技巧。

損失縮放(Loss scaling)。本文給出了一個使用FP32精度訓練Multibox SSD探測器網絡的示例,如下所示。如果不進行任何縮放,FP16梯度的指數范圍≥2^(-24),以下所有值都將變為零,這與FP32相比是不夠的。然而,通過實驗,將梯度簡單地縮放23=8倍,可以使半精度訓練精度恢復到與FP32相匹配的水平。從這個意義上講,作者認為[2^(-27),2^(-24)]之間的額外百分之幾的梯度在訓練過程中仍然很重要,而低于2^(-27)的值并不重要。

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

在Multibox SSD訓練示例中使用FP32精度的梯度值范圍。請注意,[2^(-27),2^(-24)]之間的值超出了FP16非規范化范圍,僅占總梯度的百分之幾,但在整體訓練中仍然很重要。圖像來源:https://arxiv.org/pdf/1710.03740

解決這種規模差異的方法是借助損失縮放的辦法。根據鏈式法則,縮放損失將確保相同的量將縮放所有梯度。但是請注意,在最終權重更新之前,需要取消縮放梯度。

自動混合精度訓練

Nvidia公司首先開發了名為APEX的PyTorch擴展自動混合精度訓練,然后被PyTorch、TensorFlow、MXNet等主流框架廣泛采用。請參閱??鏈接??處的Nvidia文檔。為了簡單起見,我們只介紹PyTorch框架中的自動混合精度庫:https://pytorch.org/docs/stable/amp.html.

amp庫可以自動處理大多數混合精度訓練技術,如FP32主權重復制。開發人員只需要進行操作數自動轉換和梯度/損失縮放。

操作數自動轉換:盡管我們提到張量核可以大大提高GEMM操作的性能,但某些操作不適合半精度表示。

amp庫給出了一個符合半精度條件的??CUDA操作列表??。amp.autocast完全涵蓋了大多數矩陣乘法、卷積和線性激活運算;但是,對于歸約/求和、softmax和損失計算等,這些計算仍然在FP32中執行,因為它們對數據范圍和精度更敏感。

梯度/損失縮放:amp庫提供了??自動梯度縮放技術???;因此,用戶在訓練過程中不必手動調整縮放。??鏈接??處可以找到縮放因子的更詳細的算法。

一旦縮放了梯度,就需要在進行梯度剪裁和正則化之前將其縮小。更多細節可以在??鏈接??處找到。

FashionMNIST訓練示例

torch.amp庫相對易于使用,只需要三行代碼即可將訓練速度提高2倍。

首先,我們從一個非常簡單的任務開始,使用FP32在FashionMNIST數據集(MIT許可證)上訓練ResNet50模型;我們可以看到10個世代的訓練時間為333秒:

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

ResNet50模型在數據集FashionMNIST上的訓練

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

小于2**(-24)的梯度與總梯度之比。我們可以看到,FP16將使總梯度的近1/4變為零

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

評估結果

現在,我們使用amp庫。amp庫只需要三行額外的代碼進行混合精度訓練。我們可以看到訓練在141秒內完成,比FP32訓練快2.36倍,同時達到了相同的精確度、召回率和F1分數。

scaler = torch.cuda.amp.GradScaler()
#開始訓練的代碼
# ...
with torch.autocast(device_type="cuda"):
  #訓練代碼

#封裝損失與優化器
scaler.scale(loss).backward()
scaler.step(optimizer)

scaler.update()

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

使用amp庫進行訓練

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

訓練期間的縮放因子(縮放因子僅在第一步發生變化,保持不變。)

基于PyTorch自動混合精度庫對ResNet50模型進行優化訓練-AI.x社區

最終結果與FP32訓練結果比較

上面代碼的Github鏈接:??https://github.com/adoskk/MachineLearningBasics/blob/main/mixed_precision_training/mixed_precision_training.ipynb。???

總結

混合精度訓練是加速深度學習模型訓練的一種非常有價值的技術。它不僅加快了浮點運算的速度,還節省了GPU內存,因為訓練批次可以轉換為FP16,從而節省了一半的GPU內存。另外,借助于PyTorch框架中的amp庫,額外的代碼可以減少到僅僅三行,因為權重復制、損失縮放、操作類型轉換等計算都是由該庫內部處理的。

需要注意的是,如果模型權重大小遠大于數據批次的話,混合精度訓練并不能真正解決GPU內存問題。首先,只有模型的某些層被轉換成FP16,而其余層仍在FP32中計算;其次,權重更新需要FP32復制,這仍然需要占用大量的GPU內存;第三,Adam等優化器的參數在訓練過程中占用了大量GPU內存,而混合精度訓練使優化器參數保持不變。從這個意義上說,需要更先進的技術,如DeepSpeed的ZERO算法。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:??The Mystery Behind the PyTorch Automatic Mixed Precision Library??,作者:Mengliu Zhao

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
已于2024-10-14 08:13:35修改
收藏
回復
舉報
回復
相關推薦
国产精品欧美综合亚洲| 国产调教在线观看| sm性调教片在线观看| 不卡免费追剧大全电视剧网站| 国内精品久久久久伊人av| 成人h动漫精品一区| 国产一区一一区高清不卡| 亚洲同性同志一二三专区| 国产激情美女久久久久久吹潮| yjizz国产| 99久久夜色精品国产亚洲1000部| 欧美变态口味重另类| 青青草精品视频在线观看| 国产二区三区在线| 91亚洲精品久久久蜜桃| 国产深夜精品福利| 久久久久久少妇| 亚洲国产老妈| 一区二区三区视频观看| 少妇精品无码一区二区三区| 老司机精品视频网| 日韩欧美国产骚| 久久香蕉视频网站| 国产高清视频在线播放| 成+人+亚洲+综合天堂| 成人黄色免费片| 亚洲不卡在线视频| 亚洲黑丝一区二区| 久久精品电影网站| 欧美精品日韩在线| 天美av一区二区三区久久| 日韩一区二区在线看| 99视频精品免费| 2021天堂中文幕一二区在线观| 欧美经典一区二区| 奇米视频888战线精品播放| 免费激情视频网站| 福利电影一区二区三区| 91久久国产精品| 亚洲一区精品在线观看| 日韩精品视频网站| 日本欧美爱爱爱| 国产成人啪精品午夜在线观看| 亚洲国产日韩欧美在线| 久久久精品一区| 99自拍偷拍视频| 欧美日韩久久精品| 中文字幕欧美日韩va免费视频| 国产熟妇久久777777| 欧美色图婷婷| 日韩成人网免费视频| 大桥未久恸哭の女教师| 1204国产成人精品视频| 日韩欧美一级二级三级| 日本在线视频播放| 国产电影一区二区| 欧美一区二区三区免费在线看| 亚洲欧美视频二区| 色成人综合网| 欧美一级爆毛片| 色诱av手机版| 国产一区福利| 日韩精品免费在线视频| 在线免费观看污视频| 日本天堂一区| 亚洲色图综合久久| 毛片久久久久久| 一区二区影视| 欧美激情在线狂野欧美精品| 五月天婷婷综合网| 久久国产精品毛片| 国产精品久久久久久久9999| 一区二区三区免费在线| 国产一区二区免费看| 99久久综合狠狠综合久久止| 亚洲精品一级片| 97久久精品人人做人人爽| 免费日韩电影在线观看| 福利片在线观看| 亚洲欧美日韩久久| 亚洲国产精品成人天堂| 欧洲亚洲两性| 91.com视频| 风韵丰满熟妇啪啪区老熟熟女| 精品三级在线观看视频| 亚洲人在线视频| 天天色天天综合| 尤物在线精品| 国产精品久久久久久久久久久久| 国产精品久久免费| www.av亚洲| 先锋在线资源一区二区三区| 午夜影院免费在线| 日本韩国欧美在线| 日本r级电影在线观看| 免费日韩一区二区三区| 最近2019中文字幕在线高清| 久草视频手机在线观看| 久久三级福利| 97超碰人人看人人 | 久热这里只精品99re8久| 国产视频福利在线| 一区二区三区在线观看动漫| 亚洲精品乱码久久久久久自慰| gogo大尺度成人免费视频| 亚洲国产精品va在线看黑人动漫| 精品日韩在线视频| 激情综合视频| 成人国产精品av| 欧洲视频在线免费观看| 一区二区三区中文字幕| 色综合色综合色综合色综合| 加勒比视频一区| 日韩在线播放视频| 69xxxx国产| 成人一区二区三区中文字幕| 正在播放91九色| 在线视频超级| 亚洲精品一区二区三区四区高清| 一本在线免费视频| 久久婷婷丁香| 麻豆亚洲一区| 操人在线观看| 亚洲精品在线免费播放| 中文字幕资源站| 日本一区中文字幕| 久久精品美女| 韩国成人二区| 亚洲电影免费观看| 久久久久成人网站| 九色综合狠狠综合久久| 日本一区二区三区视频在线播放| 中文字幕成在线观看| 精品国产免费人成在线观看| 91久久国产综合| 精品一区二区三区在线视频| 奇米视频888战线精品播放| 黄视频网站在线观看| 亚洲国产精品视频在线观看| 久久久久无码国产精品不卡| 精品一区二区三区免费播放| 亚洲成人自拍视频| 最新日韩一区| 一区二区欧美在线| 国产字幕在线观看| 久久亚洲私人国产精品va媚药| 麻豆tv在线播放| 久久黄色影视| 7777免费精品视频| 五月婷中文字幕| 欧美日韩亚洲视频| 亚洲第九十七页| 免费在线亚洲欧美| 久久精品国产美女| 韩日精品一区二区| 亚洲人成电影网| 亚洲 小说区 图片区| 国产欧美一区二区三区在线看蜜臀| 可以在线看的黄色网址| 欧美特黄一级大片| 国产一区二区香蕉| 成人日批视频| 精品乱人伦小说| 天天操天天爽天天干| 久久午夜老司机| 爱情岛论坛vip永久入口| 久久亚洲国产| 亚洲综合大片69999| 日本孕妇大胆孕交无码| 亚洲精品一区二区精华| 久久青青草视频| 国产日韩亚洲欧美综合| 国产免费中文字幕| 欧美久久综合| 久久国产精品亚洲va麻豆| 澳门av一区二区三区| 日韩在线播放av| 黄色aaa毛片| 一本色道久久综合亚洲91| 色婷婷国产精品免| 国产二区国产一区在线观看| 精品国产一区三区| 欧美呦呦网站| 91探花福利精品国产自产在线| 欧美巨大xxxx做受沙滩| 亚洲免费av网址| 一级特黄色大片| 亚洲一区二区在线免费观看视频| 人妻熟女aⅴ一区二区三区汇编| 日本不卡在线视频| 国产精品免费看久久久无码| 日韩激情网站| 成人美女免费网站视频| av中文在线资源库| 日韩一区二区精品视频| 乱色精品无码一区二区国产盗| 一本色道久久综合狠狠躁的推荐| 日本一级特级毛片视频| 91美女视频网站| 污免费在线观看| 久久综合婷婷| 三级在线免费观看| 精品视频免费| 国内精品二区| 高清一区二区中文字幕| 欧美孕妇性xx| 国产在线xxx| 日韩在线一区二区三区免费视频| 天堂av资源网| 欧美一区二区福利视频| 亚洲av人无码激艳猛片服务器| 一区二区三区欧美久久| 国产一区二区三区精品在线| heyzo一本久久综合| 国产性生活一级片| 日本午夜精品视频在线观看 | 欧美波霸videosex极品| 不卡一区二区三区四区| 国产精品嫩草影视| 丝袜美腿亚洲一区| 黄页网站在线观看视频| 91精品久久久久久久蜜月| 欧美日韩国产精品一卡| 美女网站色精品尤物极品姐弟| 91传媒视频在线观看| 国产精品99| 国产精品你懂得| 桃色av一区二区| 国外成人在线直播| 伊人福利在线| 久久九九国产精品怡红院| а√天堂中文在线资源bt在线| 亚洲国产精品字幕| 成人久久精品人妻一区二区三区| 欧美男生操女生| 中文字幕一区二区久久人妻| 狠狠操狠狠色综合网| 日韩av一二三区| 亚洲电影第三页| 久久久久99精品成人片试看| 亚洲少妇屁股交4| 潘金莲一级黄色片| 国产精品色哟哟| 制服丨自拍丨欧美丨动漫丨| 国产精品久久三| 亚洲欧洲综合网| 亚洲日本成人在线观看| 在线免费日韩av| 亚洲午夜电影网| 国产无码精品在线观看| 亚洲二区视频在线| 日韩黄色精品视频| 欧美视频在线观看 亚洲欧| 日韩黄色一级大片| 欧美午夜xxx| 中文字幕手机在线视频| 欧美午夜精品免费| 一级特黄aaa大片在线观看| 欧美日韩卡一卡二| 国产麻豆精品一区| 日韩精品资源二区在线| 男人天堂手机在线观看| 日韩精品视频在线观看网址| 欧洲综合视频| 日韩中文字幕在线看| 成码无人av片在线观看网站| 久久99精品国产99久久6尤物| 蜜臀av在线| 欧美亚洲国产成人精品| 日韩欧美一区二区三区免费观看| 91精品中文在线| 精品精品国产毛片在线看| 清纯唯美一区二区三区| 51精产品一区一区三区| 丁香色欲久久久久久综合网| 亚洲美女色禁图| 91淫黄看大片| 国产一区二区三区四区五区入口 | 77777少妇光屁股久久一区| 日本免费久久| 91视频国产精品| 成人动漫视频| 日本在线播放一区| 综合色一区二区| 美女av免费在线观看| 免费高清视频精品| 精品伦一区二区三区| 久久久一区二区三区捆绑**| 天堂资源在线视频| 亚洲一区视频在线| 黄色污污网站在线观看| 欧美大片免费久久精品三p| 日韩二区三区| 久热精品视频在线免费观看 | 欧美激情亚洲| 欧美激情国产精品日韩| 国产一区二区三区四区五区入口| 欧美日韩人妻精品一区在线| 欧美激情在线免费观看| 精品99在线观看| 欧美日韩中文国产| 日韩在线视频免费| 日韩视频免费在线| 成人做爰视频www网站小优视频| 亚洲在线视频福利| 成人在线免费小视频| 国产精品又粗又长| 国产一区二区三区在线观看免费| 精品国产av无码| 亚洲午夜激情av| 国产有码在线观看| 亚洲欧美制服丝袜| 麻豆免费在线| 91超碰在线电影| 久久美女视频| 久久网站免费视频| 国产mv日韩mv欧美| 可以免费看av的网址| 日本道在线观看一区二区| 手机在线不卡av| 欧美精品亚州精品| 巨大黑人极品videos精品| 日本精品二区| 国产农村妇女毛片精品久久莱园子| 91蝌蚪视频在线| 国产精品欧美久久久久无广告 | 日韩亚洲欧美中文字幕| 色噜噜狠狠成人网p站| 天堂网在线中文| 国内精品久久久久久中文字幕| 这里视频有精品| 超碰人人爱人人| 国产成人亚洲精品狼色在线| 国产伦理片在线观看| 色婷婷综合久久久久中文一区二区 | 日韩影片中文字幕| 久久久久久一区| 国产精品人人爽人人做我的可爱| 美女扒开腿免费视频| 一区二区三区在线观看动漫| 国产浮力第一页| 欧美风情在线观看| 午夜久久av| 日韩欧美精品免费| 成人午夜在线视频| 国产在线免费视频| 亚洲国产97在线精品一区| www.色在线| 久久青青草原| 日韩专区在线视频| 先锋影音av在线| 欧美日韩国产经典色站一区二区三区 | 国产亚洲亚洲国产一二区| 欧美做受777cos| 成人永久aaa| 亚洲s码欧洲m码国产av| 亚洲女成人图区| 99久久精品一区二区成人| 亚洲精品第一区二区三区| 久久精品国产精品亚洲红杏 | 水莓100在线视频| 日本一本a高清免费不卡| 精品久久不卡| 天天综合网久久| 亚洲精品你懂的| 精品国产一级片| 久久久女女女女999久久| 日韩成人一级| 超碰影院在线观看| 中文字幕欧美一区| 超碰在线人人干| 91爱视频在线| 青青草成人影院| 久久久久久久穴| 色综合久久中文字幕综合网| 三级外国片在线观看视频| 国产日韩在线一区| 激情欧美一区| 国产精品美女高潮无套| 91精品免费在线| 欧美少妇网站| 在线播放 亚洲| 91在线精品一区二区| 在线观看国产黄| 韩国v欧美v日本v亚洲| 精品美女久久久| 无码人妻一区二区三区在线视频| 香蕉加勒比综合久久 | 欧美大片大片在线播放| 欧美理论电影在线精品| 潘金莲激情呻吟欲求不满视频| 一区二区三区四区激情 | 97成人在线| 国内外免费激情视频| 亚洲精品视频在线看| 国产在线视频网| 国产精品免费看一区二区三区| 日本视频一区二区| 日本五十熟hd丰满| 最新91在线视频|