精品欧美一区二区三区在线观看 _久久久久国色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修改
收藏
回復
舉報
回復
相關推薦
免费高清不卡av| 女同久久另类99精品国产| 亚洲精品午夜久久久| 国产福利久久| 草久久免费视频| 精品国产a一区二区三区v免费| 欧美视频一区二| 男人的天堂视频在线| 四虎影视2018在线播放alocalhost| 国产欧美日韩一级| 日日狠狠久久偷偷四色综合免费 | 人妻体内射精一区二区| 国产成人久久精品麻豆二区| 亚洲一区二区美女| 手机看片福利永久国产日韩| 精品人妻无码一区二区| 裸体素人女欧美日韩| 欧美成人免费播放| 国产伦理片在线观看| 岛国精品一区| 欧美色区777第一页| 欧美视频免费看欧美视频| 1区2区3区在线观看| 99视频热这里只有精品免费| 成人免费自拍视频| www.日韩一区| 亚洲高清激情| 操人视频在线观看欧美| 乐播av一区二区三区| 都市激情亚洲| 这里是久久伊人| 手机视频在线观看| 福利在线免费视频| 亚洲在线视频免费观看| 中文字幕乱码一区二区三区 | 91视视频在线直接观看在线看网页在线看 | 欧美丰满美乳xxx高潮www| 国产午夜伦鲁鲁| 免费av不卡在线观看| 国产精品盗摄一区二区三区| 日韩av不卡在线播放| 天天躁日日躁狠狠躁伊人| 国产福利一区二区三区视频在线| 国产精品一区久久久| 国产成人自拍视频在线| 欧美色综合网| 久久不射热爱视频精品| 夜夜春很很躁夜夜躁| 国产日韩欧美一区二区三区| 日韩精品视频免费| 国产老熟女伦老熟妇露脸| 国产 日韩 欧美 综合 一区| 欧美岛国在线观看| 熟妇女人妻丰满少妇中文字幕| 99久久999| 91精品视频网| 色综合久久久无码中文字幕波多| 电影中文字幕一区二区| 91精品一区二区三区久久久久久| 91在线第一页| 国产激情精品一区二区三区| 69堂成人精品免费视频| 久久精品无码一区二区三区毛片| 亚洲三级在线| 欧美日韩视频在线第一区| 五月天av在线播放| 高清不卡一区| 日韩精品中文字幕一区二区三区 | 国产xxxx孕妇| 国产福利电影一区二区三区| 国产传媒欧美日韩| 五月婷婷狠狠干| 国产欧美日本一区二区三区| 亚洲人成网站在线观看播放| 黄网站app在线观看| 亚洲美女一区二区三区| 日韩精品视频在线观看视频 | 国产对白叫床清晰在线播放| 国产精品私人自拍| 国产av第一区| 美女露胸视频在线观看| 色老汉一区二区三区| 亚洲欧美自拍另类日韩| 欧美经典影片视频网站| 日韩成人在线视频| 亚洲ⅴ国产v天堂a无码二区| 欧美一区免费| 欧美夜福利tv在线| 一级特黄特色的免费大片视频| 国产激情一区二区三区四区| 久久爱av电影| 中文字幕日本在线观看| 亚洲在线一区二区三区| 任你操这里只有精品| 伊人久久一区| 日韩av网站大全| 老司机深夜福利网站| 黄色成人精品网站| 国产精品视频免费在线| 丁香花免费高清完整在线播放 | 日韩欧美在线一区二区三区| 国产精品久久不卡| 91精品综合久久久久久久久久久 | 欧美另类激情| 日韩成人在线视频观看| 波多野结衣亚洲一区二区| 很黄很黄激情成人| 国产精品综合网站| 天堂网在线资源| 亚洲天堂福利av| 熟女人妇 成熟妇女系列视频| 免费精品一区| 伊人成人开心激情综合网| 久久精品国产亚洲av香蕉| 青青草视频一区| 精品国产乱码久久久久久蜜柚| 日本蜜桃在线观看| 欧美日韩中文字幕在线| www.桃色.com| 日韩成人综合| 国产成人福利网站| 人妻偷人精品一区二区三区| ●精品国产综合乱码久久久久| 日韩a在线播放| 国产精品xxxav免费视频| 久久久成人的性感天堂| 波多野结衣视频观看| av在线这里只有精品| 97av中文字幕| 亚洲福利影视| 中文字幕日韩视频| 四虎成人在线观看| 99热99精品| 999久久欧美人妻一区二区| 亚洲国产天堂| www国产精品com| 最近中文字幕免费在线观看| 91美女视频网站| 久激情内射婷内射蜜桃| jizz久久精品永久免费| 欧美激情精品久久久久久| 国产精品一区二区av白丝下载| 国产精品热久久久久夜色精品三区 | 欧美综合视频在线观看| 午夜时刻免费入口| 久久午夜精品| 日本一区二区三区四区高清视频| 最近高清中文在线字幕在线观看1| 亚洲第一免费网站| 日本在线小视频| 成人av电影在线网| 人妻久久久一区二区三区| 久久99国产精品久久99大师| 午夜精品久久久久久久99热| 天堂在线视频免费| 疯狂做受xxxx高潮欧美日本| 少妇大叫太粗太大爽一区二区| 性色一区二区三区| 欧美日韩综合久久| 国精产品一区一区三区四川| 中文字幕在线日韩| 91亚洲精品国偷拍自产在线观看 | **国产精品| 久久亚洲综合国产精品99麻豆精品福利| 国产又粗又猛又爽又黄的| 综合av第一页| 极品白嫩的小少妇| 亚洲免费网址| 午夜精品一区二区三区四区| 成人av在线播放| 久久久久这里只有精品| 亚洲色图另类小说| 欧美性淫爽ww久久久久无| 国产91在线播放九色| 国产在线视频一区二区三区| 日韩极品视频在线观看| 秋霞蜜臀av久久电影网免费| 国产精品wwww| 国产伦精品免费视频| 91欧美在线视频| 91精品国产综合久久久久久漫画| 强行糟蹋人妻hd中文| caoporm超碰国产精品| 无码人妻丰满熟妇区毛片18| 日韩在线观看一区| 国产传媒一区二区| 肉色欧美久久久久久久免费看| 爽爽爽爽爽爽爽成人免费观看| 精品人妻一区二区三区麻豆91| 五月婷婷综合在线| 国产农村妇女精品一区| 国产不卡视频在线观看| 国产精彩免费视频| 91精品国产自产拍在线观看蜜| 国产精品美女xx| 成人日韩在线观看| 欧美国产日韩xxxxx| 你懂的在线网址| 欧美一区二区二区| 日韩 国产 欧美| 亚洲视频你懂的| 日本中文字幕精品| 日韩精品1区2区3区| 日韩国产小视频| 日韩精品dvd| 国产在线资源一区| 国产专区精品| 国产精品日韩一区| 国产黄大片在线观看| www.久久色.com| 国产综合视频一区二区三区免费| 欧美一级日韩不卡播放免费| 欧美成人一区二区三区四区| 亚洲一区中文日韩| 波兰性xxxxx极品hd| 91天堂素人约啪| 精品人妻在线视频| 国内精品国产三级国产a久久| 国产成人精品无码播放| 在线看片成人| 天堂а√在线中文在线| 欧美激情电影| 图片区小说区区亚洲五月| 伦理一区二区| 高清视频一区二区三区| а天堂中文最新一区二区三区| 国产成人综合久久| 中文在线8资源库| 91黄色8090| av在线不卡免费| 久久99国产综合精品女同| 黄色小网站在线观看| 在线精品91av| 国产精品久久一区二区三区不卡| 亚洲国产成人精品久久| 性少妇videosexfreexxx片| 欧美日本一区二区| 亚洲一区二区影视| 欧美日韩国产首页| 中文在线a天堂| 欧美亚洲愉拍一区二区| 日韩精品一区二区亚洲av观看| 欧美午夜影院在线视频| 日韩欧美国产亚洲| 午夜av电影一区| 国产又爽又黄的视频| 午夜成人免费视频| 日韩美女视频网站| 婷婷国产在线综合| 天天干天天干天天| 日韩欧美亚洲国产一区| 一级成人黄色片| 色婷婷精品大视频在线蜜桃视频| 国产又粗又爽视频| 91国产免费观看| 国产精品xxxxxx| 欧美男男青年gay1069videost| 亚洲一区二区激情| 日韩欧美亚洲一区二区| 免费观看毛片网站| 精品一区二区亚洲| 国产黄在线观看免费观看不卡| 在线看日韩欧美| 日本www在线观看视频| 久久九九国产精品怡红院| av观看在线| 亚洲 日韩 国产第一| 亚洲深夜视频| 国产精品美女久久久免费| 欧美成人三级| 国产高清精品一区二区| 欧美a级网站| 亚洲春色在线| 亚洲乱码电影| 女人和拘做爰正片视频| 视频一区中文字幕| 91日韩精品视频| 成人av先锋影音| 欧美福利第一页| **爰片久久毛片| 欧美一卡在线观看| 亚洲高清精品视频| 亚洲免费一级电影| 伊人在线视频| 久久久久久久一区二区三区| 桃花岛tv亚洲品质| 97超级碰碰| 国产在线日韩精品| 菠萝蜜视频在线观看入口| 性欧美xxxx大乳国产app| 青青草精品在线| 久久久亚洲综合| 国产探花在线播放| 色婷婷精品久久二区二区蜜臀av | 欧美综合影院| 国产传媒一区二区三区| 日韩欧美精品| 国产精品自拍片| 麻豆传媒一区二区三区| xxxwww国产| 成人免费一区二区三区在线观看| 欧美三日本三级少妇99| 91麻豆精品国产自产在线| 免费黄色片在线观看| 欧美激情国产精品| 韩日精品一区| 精品免费国产| 欧美激情五月| 色www免费视频| 久久看人人爽人人| 久久久久亚洲AV| 欧美精品一级二级三级| 欧美捆绑视频| 韩国美女主播一区| 精品久久亚洲| 亚洲一卡二卡区| 亚洲影院一区| 久久久久久婷婷| 亚洲精品成人精品456| a片在线免费观看| 日本午夜精品久久久| 成人国产1314www色视频| 欧美色图一区| 欧洲av无码放荡人妇网站| 成人美女视频在线观看18| 无码人妻精品中文字幕| 在线一区二区视频| 免费黄色在线视频网站| 91成人在线播放| 亚洲一区二区三区四区电影| 中文字幕精品一区日韩| 蜜臀va亚洲va欧美va天堂 | 香蕉视频禁止18| 久久这里只有精品6| 国产精品免费av一区二区| 精品奇米国产一区二区三区| 18视频在线观看| 亚洲一区美女视频在线观看免费| 四虎国产精品免费观看| 色一情一区二区| 日韩毛片视频在线看| ,一级淫片a看免费| 久久精品视频导航| 国产高清日韩| 妞干网在线播放| 成年人网站91| 懂色av.com| 日韩高清av一区二区三区| 高清在线视频不卡| 久久久一本精品99久久精品66| 国产欧美日韩亚洲一区二区三区| 野花社区视频在线观看| 欧美日韩激情网| 毛片在线播放网站| 国产精品入口免费视频一| 日韩欧美字幕| 少妇丰满尤物大尺度写真| 一个色综合网站| 亚洲欧美丝袜中文综合| 奇米成人av国产一区二区三区| 国产麻豆一区二区三区精品视频| 久久久久久香蕉| 《视频一区视频二区| 国产激情久久久久久熟女老人av| 欧美极品少妇xxxxx| 欧美一区 二区| 国产97色在线 | 日韩| 国产精品女人毛片| 国产色在线视频| 国内精品伊人久久| 国产探花在线精品| 九一精品久久久| 日本欧美视频| 国产欧美中文字幕| 国产精品二区不卡| 动漫av在线免费观看| 欧美色另类天堂2015| av在线电影院| 91国产在线免费观看| 国产日韩欧美一区在线| 夫妇露脸对白88av| 精品国产一区二区三区久久影院| 涩涩涩视频在线观看| 一道精品一区二区三区| 国产成人综合亚洲91猫咪| wwwxxx亚洲| 久久精品亚洲国产| 久久精品国产亚洲5555| 久久亚洲精品人成综合网| 国产欧美日韩高清| av丝袜在线| 日韩一区二区电影在线观看| 韩国欧美国产一区| 韩国av免费观看| 中文字幕亚洲在线| 欧美日韩一本| 99re6在线观看| 欧美午夜性色大片在线观看| 动漫一区在线| 日本10禁啪啪无遮挡免费一区二区|