日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[Pytorch]基于混和精度的模型加速

發布時間:2023/11/28 生活经验 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Pytorch]基于混和精度的模型加速 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇博客是在pytorch中基于apex使用混合精度加速的一個偏工程的描述,原理層面的解釋并不是這篇博客的目的,不過在參考部分提供了非常有價值的資料,可以進一步研究。

一個關鍵原則:“僅僅在權重更新的時候使用fp32,耗時的前向和后向運算都使用fp16”。其中的一個技巧是:在反向計算開始前,將dloss乘上一個scale,人為變大;權重更新前,除去scale,恢復正常值。目的是為了減小激活gradient下溢出的風險。

apex是nvidia的一個pytorch擴展,用于支持混合精度訓練和分布式訓練。在之前的博客中,神經網絡的Low-Memory技術梳理了一些low-memory技術,其中提到半精度,比如fp16。apex中混合精度訓練可以通過簡單的方式開啟自動化實現,組里同學交流的結果是:一般情況下,自動混合精度訓練的效果不如手動修改。分布式訓練中,有社區同學心心念念的syncbn的支持。關于syncbn,在去年做CV的時候,我們就有一些來自民間的嘗試,不過具體提升還是要考慮具體任務場景。

那么問題來了,如何在pytorch中使用fp16混合精度訓練呢?

第零:混合精度訓練相關的參數

parser.add_argument('--fp16',action='store_true',help="Whether to use 16-bit float precision instead of 32-bit")
parser.add_argument('--loss_scale',type=float, default=0,help="Loss scaling to improve fp16 numeric stability. Only used when fp16 set to True.\n""0 (default value): dynamic loss scaling.\n""Positive power of 2: static loss scaling value.\n")

第一:模型參數轉換為fp16

nn.Module中的half()方法將模型中的float32轉化為float16,實現的原理是遍歷所有tensor,而float32和float16都是tensor的屬性。也就是說,一行代碼解決,如下:

model.half()

第二:修改優化器

在pytorch下,當使用fp16時,需要修改optimizer。類似代碼如下(代碼參考這里):

# Prepare optimizerif args.do_train:param_optimizer = list(model.named_parameters())no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight']optimizer_grouped_parameters = [{'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)], 'weight_decay': 0.01},{'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)], 'weight_decay': 0.0}]if args.fp16:try:from apex.optimizers import FP16_Optimizerfrom apex.optimizers import FusedAdamexcept ImportError:raise ImportError("Please install apex from https://www.github.com/nvidia/apex to use distributed and fp16 training.")optimizer = FusedAdam(optimizer_grouped_parameters,lr=args.learning_rate,bias_correction=False,max_grad_norm=1.0)if args.loss_scale == 0:optimizer = FP16_Optimizer(optimizer, dynamic_loss_scale=True)else:optimizer = FP16_Optimizer(optimizer, static_loss_scale=args.loss_scale)warmup_linear = WarmupLinearSchedule(warmup=args.warmup_proportion,t_total=num_train_optimization_steps)else:optimizer = BertAdam(optimizer_grouped_parameters,lr=args.learning_rate,warmup=args.warmup_proportion,t_total=num_train_optimization_steps)		

第三:backward時做對應修改

 if args.fp16:optimizer.backward(loss)else:loss.backward()

第四:學習率修改

if args.fp16:# modify learning rate with special warm up BERT uses# if args.fp16 is False, BertAdam is used that handles this automaticallylr_this_step = args.learning_rate * warmup_linear.get_lr(global_step, args.warmup_proportion)for param_group in optimizer.param_groups:param_group['lr'] = lr_this_stepoptimizer.step()optimizer.zero_grad()

根據參考3,值得重述一些重要結論:

(1)深度學習訓練使用16bit表示/運算正逐漸成為主流。

(2)低精度帶來了性能、功耗優勢,但需要解決量化誤差(溢出、舍入)。

(3)常見的避免量化誤差的方法:為權重保持高精度(fp32)備份;損失放大,避免梯度的下溢出;一些特殊層(如BatchNorm)仍使用fp32運算。

參考資料:

1.nv官方repo給了一些基于pytorch的apex加速的實現

實現是基于fairseq實現的,可以直接對比代碼1-apex版和代碼2-非apex版(fairseq官方版),了解是如何基于apex實現加速的。

2.nv官方關于混合精度優化的原理介紹

按圖索驥,可以get到很多更加具體地內容。

3.低精度表示用于深度學習 訓練與推斷

感謝團隊同學推薦。

總結

以上是生活随笔為你收集整理的[Pytorch]基于混和精度的模型加速的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女扒开腿让人桶爽 | 久久av不卡| 波多野结衣激情视频 | 国产黄在线免费观看 | av网站在线免费看 | 日韩精品一区二区免费视频 | 日韩成人福利视频 | 色呦呦网站入口 | 在线播放日韩 | 国产精品亚洲五月天丁香 | 中文字幕一区二区三区四区 | 97人妻精品一区二区三区 | 成年人视频在线免费看 | 国产剧情在线一区 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 中文字幕av无码一区二区三区 | 不卡的av| 少妇被躁爽到高潮 | 欧美裸体网站 | 亚洲成熟毛多妇女av毛片 | 性高潮久久久久久久 | 中文字幕第315页 | 性の欲びの女javhd | 六月婷婷综合 | 超碰人人人 | 曰本三级日本三级日本三级 | www国产com | 蜜臀久久99精品久久一区二区 | 又黄又色又爽的视频 | av在线操| 欧美乱轮视频 | 99re6在线精品视频免费播放 | av片大全 | 爽爽窝窝午夜精品一区二区 | 国产成人短视频在线观看 | 欧美日韩www| 97人人在线视频 | 日本一区二区三区视频在线观看 | 成人三级电影网站 | 欧美日韩精品一区二区在线观看 | 日韩欧美一区二区三区四区 | 13日本xxxxxⅹxxx20 | 善良的女朋友在线观看 | 午夜av在线| 无码人妻精品一区二区三区温州 | 国产精品久久久久久久午夜 | 超碰免费看 | 免费成人美女在线观看. | 国产成人免费看一级大黄 | 日韩亚洲国产欧美 | 欧美精品aa | 男男免费视频 | 青青草华人在线视频 | 国产午夜不卡 | 性xx紧缚网站 | 久久久国产精华液999999 | 国产精品久久网站 | 久久久久久久久久av | 在线一级片 | 精品无码久久久久久久久成人 | 日本xxxx裸体xxxx出水 | 99成人精品视频 | 欧美性开放视频 | 狠狠爱成人 | 日本午夜一区二区 | 五月天婷婷基地 | 亚洲成av人片在www色猫咪 | 亚洲综合小说 | 成人免费播放视频 | 日韩av综合网 | 国产1区2区3区中文字幕 | 国产一区欧美二区 | 亚洲欧美日韩在线一区二区 | 激情小说五月天 | 毛片av网址| 色欧美88888久久久久久影院 | 无码人妻丰满熟妇区毛片蜜桃精品 | 破处视频在线观看 | 91久久中文字幕 | 亚洲成人动漫在线观看 | 久久精品99北条麻妃 | 成人在线免费播放视频 | 日韩精品一线二线三线 | 西西人体做爰大胆gogo直播 | 欧美极品一区二区 | 国产淫语 | 女人天堂网 | 一区二区av电影 | 色哟哟无码精品一区二区三区 | 91porny在线| 成人午夜一区二区 | 国产精品一区二区电影 | 欧美三级韩国三级日本三斤在线观看 | 国产成人无码精品久久久性色 | 国内毛片毛片毛片毛片毛片 | 黑人巨大精品欧美一区免费视频 | 日韩不卡av在线 | 观看av| 欧美黄色小说 |