国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

3行代碼提速模型訓練:這個算法讓你的GPU老樹開新花

新聞 人工智能 算法
百度和Nvidia研究院結(jié)合N卡底層計算優(yōu)化,提出了一種有效的神經(jīng)網(wǎng)絡訓練加速方法,不僅是預訓練,在全民finetune BERT的今天變得異常有用。

 [[313508]]

百度和Nvidia研究院結(jié)合N卡底層計算優(yōu)化,提出了一種有效的神經(jīng)網(wǎng)絡訓練加速方法,不僅是預訓練,在全民finetune BERT的今天變得異常有用。

一切還要從2018年ICLR的一篇論文說起。

《MIXED PRECISION TRAINING》是百度&Nvidia研究院一起發(fā)表的,結(jié)合N卡底層計算優(yōu)化,提出了一種灰常有效的神經(jīng)網(wǎng)絡訓練加速方法,不僅是預訓練,在全民finetune BERT的今天變得異常有用哇。

而且調(diào)研發(fā)現(xiàn),不僅百度的paddle框架支持混合精度訓練,在Tensorflow和Pytorch中也有相應的實現(xiàn)。下面我們先來講講理論,后面再分析混合精度訓練在三大深度學習框架中的打開方式。

理論原理

訓練過神經(jīng)網(wǎng)絡的小伙伴都知道,神經(jīng)網(wǎng)絡的參數(shù)和中間結(jié)果絕大部分都是單精度浮點數(shù)(即float32)存儲和計算的,當網(wǎng)絡變得超級大時,降低浮點數(shù)精度,比如使用半精度浮點數(shù),顯然是提高計算速度,降低存儲開銷的一個很直接的辦法。

然而副作用也很顯然,如果我們直接降低浮點數(shù)的精度直觀上必然導致模型訓練精度的損失。但是呢,天外有天,這篇文章用了三種機制有效地防止了模型的精度損失。待小夕一一說來o(* ̄▽ ̄*)ブ

權(quán)重備份(master weights)

我們知道半精度浮點數(shù)(float16)在計算機中的表示分為1bit的符號位,5bits的指數(shù)位和10bits的尾數(shù)位,所以它能表示的最小的正數(shù)即2^-24(也就是精度到此為止了)。當神經(jīng)網(wǎng)絡中的梯度灰常小的時候,網(wǎng)絡訓練過程中每一步的迭代(灰常小的梯度 ✖ 也黑小的learning rate)會變得更小,小到float16精度無法表示的時候,相應的梯度就無法得到更新。

論文統(tǒng)計了一下在Mandarin數(shù)據(jù)集上訓練DeepSpeech 2模型時產(chǎn)生過的梯度,發(fā)現(xiàn)在未乘以learning rate之前,就有接近5%的梯度直接悲劇的變成0(精度比2^-24還要高的梯度會直接變成0),造成重大的損失呀/(ㄒoㄒ)/~~

還有更難的,假設迭代量逃過一劫準備奉獻自己的時候。。。由于網(wǎng)絡中的權(quán)重往往遠大于我們要更新的量,當?shù)啃∮贔loat16當前區(qū)間內(nèi)能表示的最小間隔的時候,更新也會失敗(哭瞎┭┮﹏┭┮我怎么這么難鴨)

3行代码提速模型训练:这个算法让你的GPU老树开新花

所以怎么辦呢?作者這里提出了一個非常simple but effective的方法,就是前向傳播和梯度計算都用float16,但是存儲網(wǎng)絡參數(shù)的梯度時要用float32!這樣就可以一定程度上的解決上面說的兩個問題啦~~~

我們來看一下訓練曲線,藍色的線是正常的float32精度訓練曲線,橙色的線是使用float32存儲網(wǎng)絡參數(shù)的learning curve,綠色滴是不使用float32存儲參數(shù)的曲線,兩者一比就相形見絀啦。

 

損失放縮(loss scaling)

 

有了上面的master weights已經(jīng)可以足夠高精度的訓練很多網(wǎng)絡啦,但是有點強迫癥的小夕來說怎么還是覺得有點不對呀o((⊙﹏⊙))o.

 

雖然使用float32來存儲梯度,確實不會丟失精度了,但是計算過程中出現(xiàn)的指數(shù)位小于 -24 的梯度不還是會丟失的嘛!相當于用漏水的篩子從河邊往村里運水,為了多存點水,村民們把儲水的碗換成了大缸,燃鵝篩子依然是漏的哇,在路上的時候水就已經(jīng)漏的木有了。。

于是loss scaling方法來了。首先作者統(tǒng)計了一下訓練過程中激活函數(shù)梯度的分布情況,由于網(wǎng)絡中的梯度往往都非常小,導致在使用FP16的時候右邊有大量的范圍是沒有使用的。這種情況下, 我們可以通過放大loss來把整個梯度右移,減少因為精度隨時變?yōu)?的梯度。

 

那么問題來了,怎么合理的放大loss呢?一個最簡單的方法是常數(shù)縮放,把loss一股腦統(tǒng)一放大S倍。float16能表示的最大正數(shù)是2^15*(1+1-2^-10)=65504,我們可以統(tǒng)計網(wǎng)絡中的梯度,計算出一個常數(shù)S,使得最大的梯度不超過float16能表示的最大整數(shù)即可。

當然啦,還有更加智能的動態(tài)調(diào)整(automatic scaling) o(* ̄▽ ̄*)ブ

我們先初始化一個很大的S,如果梯度溢出,我們就把S縮小為原來的二分之一;如果在很多次迭代中梯度都沒有溢出,我們也可以嘗試把S放大兩倍。以此類推,實現(xiàn)動態(tài)的loss scaling。

3行代码提速模型训练:这个算法让你的GPU老树开新花

運算精度(precison of ops)

精益求精再進一步,神經(jīng)網(wǎng)絡中的運算主要可以分為四大類,混合精度訓練把一些有更高精度要求的運算,在計算過程中使用float32,存儲的時候再轉(zhuǎn)換為float16。

  • matrix multiplication: linear, matmul, bmm, conv
  • pointwise: relu, sigmoid, tanh, exp, log
  • reductions: batch norm, layer norm, sum, softmax
  • loss functions: cross entropy, l2 loss, weight decay

像矩陣乘法和絕大多數(shù)pointwise的計算可以直接使用float16來計算并存儲,而reductions、loss function和一些pointwise(如exp,log,pow等函數(shù)值遠大于變量的函數(shù))需要更加精細的處理,所以在計算中使用用float32,再將結(jié)果轉(zhuǎn)換為float16來存儲。

總結(jié):三大深度學習框架的打開方式

混合精度訓練做到了在前向和后向計算過程中均使用半精度浮點數(shù),并且沒有像之前的一些工作一樣還引入額外超參,而且重要的是,實現(xiàn)非常簡單卻能帶來非常顯著的收益,在顯存half以及速度double的情況下保持模型的精度,簡直不能再厲害啦。

看完了硬核技術(shù)細節(jié)之后,我們趕緊來看看代碼實現(xiàn)吧!如此強大的混合精度訓練的代碼實現(xiàn)不要太簡單了吧😮

Pytorch

導入Automatic Mixed Precision (AMP),不要998不要288,只需3行無痛使用!

  1. from apex import ampmodel, optimizer = amp.initialize(model, optimizer, opt_level="O1") # 這里是“歐一”,不是“零一”with amp.scale_loss(loss, optimizer) as scaled_loss:scaled_loss.backward() 

來看個例子,將上面三行按照正確的位置插入到自己原來的代碼中就可以實現(xiàn)酷炫的半精度訓練啦!

  1. import torchfrom apex import ampmodel = ... optimizer = ...#包裝model和optimizermodel, optimizer = amp.initialize(model, optimizer, opt_level="O1")for data, label in data_iter: out = model(data) loss = criterion(out, label) optimizer.zero_grad() #loss scaling,代替loss.backward() with amp.scaled_loss(loss, optimizer) as scaled_loss:scaled_loss.backward() optimizer.step() 

Tensorflow

一句話實現(xiàn)混合精度訓練之修改環(huán)境變量,在python腳本中設置環(huán)境變量

  1. os.environ[ TF_ENABLE_AUTO_MIXED_PRECISION ] = 1 

除此之外,也可以用類似pytorch的方式來包裝optimizer。

Graph-based示例

  1. opt = tf.train.AdamOptimizer()#add a lineopt = tf.train.experimental.enable_mixed_precision_graph_rewrite( opt, loss_scale= dynamic ) train_op = opt.miminize(loss) 

Keras-based示例

  1. opt = tf.keras.optimizers.Adam()#add a lineopt = tf.train.experimental.enable_mixed_precision_graph_rewrite( opt, loss_scale= dynamic ) model.compile(loss=loss, optimizer=opt)model.fit(...) 

PaddlePaddle

一句話實現(xiàn)混合精度訓練之添加config(驚呆🙃畢竟混合精度訓練是百度家提出的,內(nèi)部早就熟練應用了叭)

  1. --use_fp16=true 

舉個栗子,基于BERT finetune XNLI任務時,只需在執(zhí)行時設置use_fp16為true即可。

  1. export FLAGS_sync_nccl_allreduce=0export FLAGS_eager_delete_tensor_gb=1export CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7BERT_BASE_PATH="chinese_L-12_H-768_A-12"TASK_NAME= XNLI DATA_PATH=/path/to/xnli/data/CKPT_PATH=/path/to/save/checkpoints/python -u run_classifier.py --task_name ${TASK_NAME} --use_fp16=true #!!!!!!add a line --use_cuda true --do_train true --do_val true --do_test true --batch_size 32 --in_tokens false --init_pretraining_params ${BERT_BASE_PATH}/params --data_dir ${DATA_PATH} --vocab_path ${BERT_BASE_PATH}/vocab.txt --checkpoints ${CKPT_PATH} --save_steps 1000 --weight_decay 0.01 --warmup_proportion 0.1 --validation_steps 100 --epoch 3 --max_seq_len 128 --bert_config_path ${BERT_BASE_PATH}/bert_config.json --learning_rate 5e-5 --skip_steps 10 --num_iteration_per_drop_scope 10 --verbose true 

 

 

責任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2017-08-25 09:22:18

miui小米MIUI

2022-07-13 16:09:19

模型AI訓練

2025-06-23 08:57:00

2021-08-23 17:49:02

代碼開發(fā)模型

2020-07-20 09:20:48

代碼geventPython

2023-12-29 14:13:41

PyTorch模型開發(fā)

2018-07-27 09:32:18

Python代碼數(shù)據(jù)

2009-10-30 17:19:08

ADSL接入網(wǎng)

2020-07-13 14:30:35

人工智能機器學習技術(shù)

2022-03-10 09:48:11

人工智能機器學習模型

2025-06-20 08:14:55

2020-11-20 10:40:20

PyTorch神經(jīng)網(wǎng)絡代碼

2019-03-25 22:38:34

GitHub代碼開發(fā)者

2024-08-12 12:27:03

2024-04-29 06:50:45

Python代碼運行

2020-05-14 14:21:50

谷歌AI數(shù)據(jù)

2023-12-11 15:40:32

PyTorch代碼大模型

2022-02-23 14:37:48

代碼Pythonbug

2025-09-16 09:27:33

2023-11-10 09:41:44

Python代碼
點贊
收藏

51CTO技術(shù)棧公眾號

日韩电影大全网站| 伊人久久精品视频| 高清亚洲成在人网站天堂| 一区二区三区免费播放| 久久不见久久见中文字幕免费| 91在线视频免费观看| 国产精品久久久久久久久久久新郎 | 日韩一卡二卡三卡国产欧美| 欧美中文在线视频| 亚洲国产资源| 国产麻豆视频一区| 欧美激情女人20p| 久久久久久伊人| 色视频在线免费观看| 91丝袜高跟美女视频| 国产精品区免费视频| 136国产福利精品导航网址应用| 黑人巨大精品欧美一区二区三区| 一级全黄肉体裸体全过程| www.久久东京| 91精品国产综合久久婷婷香蕉| 亚洲欧美另类动漫| 国产精品一区毛片| 国产精品爽黄69| 在线免费观看黄色| 久久精品一区四区| 精品国产一区二区三区四区精华 | 国产一区二区三区18| 又色又爽又高潮免费视频国产| 美日韩一区二区三区| 国产区精品视频| 99久久影视| 国产精品第100页| 国产一区二区三区免费观看在线| 亚洲欧美另类自拍| 97成人资源| 日韩中文字幕在线播放| 午夜不卡影院| 在线视频欧美性高潮| 欧美啪啪网站| 麻豆乱码国产一区二区三区| 7m精品国产导航在线| 国产99在线|中文| 欧美人与物videos另类xxxxx| 57pao成人国产永久免费| lutube成人福利在线观看| 国产乱码精品一区二区三区忘忧草| 国产精品视频99| 久久爱91午夜羞羞| 欧美亚洲国产bt| 亚洲国产精品三区| 免费在线看成人av| 成人黄动漫网站免费| 欧美经典一区| 一区二区成人av| 国产三级在线看| 一区二区在线看| 亚洲免费看av| 亚洲欧洲另类国产综合| 色综合久久av| 欧美变态网站| 97碰碰碰免费色视频| 精品日本视频| 午夜先锋成人动漫在线| 中文字幕在线视频不卡| 国产亚洲1区2区3区| 在线成人视屏| 日本国产在线播放| 国产性色av一区二区| 国产一区二区三区的电影| 日韩免费视频播放| 欧美日韩电影一区| 日韩在线高清| jizzjizz国产精品喷水| 欧美精品在线观看一区二区| 国产成人久久婷婷精品流白浆| 亚洲欧洲三级电影| 日韩精选视频| 国产伦精品一区二区三区免费视频| 一区二区三区四区在线免费观看 | 免费理论片在线观看播放老| 日韩理论片久久| 精品一区二区三区中文字幕视频| 九九九久久国产免费| 婷婷久久免费视频| 欧美俄罗斯性视频| 激情综合色播激情啊| 不卡一区视频| 欧美精品尤物在线| 欧美精品九九99久久| 欧美扣逼视频| 中文一区一区三区高中清不卡| 欧美图片激情小说| 国产精品普通话对白| 国产中文字幕亚洲| 国产剧情一区在线| 日本欧美在线| 羞羞在线视频| av资源一区二区| 精品亚洲aⅴ在线观看| 翔田千里一区| 欧美激情一区二区三区四区| 精品人妻大屁股白浆无码| 欧美激情欧美激情| 欧美写真视频网站| 国产一区二区电影| ccyy激情综合| 国产原厂视频在线观看| 欧美高清中文字幕| 亚洲wwwav| 中文字幕亚洲字幕| 91女人视频在线观看| 欧美日韩尤物久久| 996这里只有精品| 欧美成人伊人久久综合网| 国产欧美精品| 国产精品影院在线| 国产精品一区二区电影| 久久亚洲欧美国产精品乐播| 欧美日韩精品免费观看视完整| 国产精品久久久久久av福利软件 | 99久久99久久综合| 午夜久久av| 亚洲美免无码中文字幕在线| 亚洲视频网站在线观看| 91精品国产66| 91在线免费视频| 国产伦精一区二区三区| 欧美男男video| 国产福利影院在线观看| 亚洲最大色综合成人av| 成人动漫视频在线观看免费| 国产精品一区二区三区毛片淫片 | 日韩国产一区二区| 综合久久2019| 性xxxx丰满孕妇xxxx另类| 欧美日韩一道本| 91精品久久香蕉国产线看观看| 美女久久久久久久久久久| 亚洲精品一线二线三线无人区| 国产成人免费| 黄色激情网站| 国产高清免费在线| 日本在线精品视频| 日韩一级完整毛片| 精品一区二区免费| 精品国产一区二区三区久久久蜜臀| 国产永久免费高清在线观看| 日本不卡一区二区三区视频| 精品国偷自产在线| av福利精品导航| 久久一区二区三区电影| 成人在线播放| 凹凸国产熟女精品视频| 国内精品久久国产| 99精品一级欧美片免费播放| 欧美精品一本久久男人的天堂| 久久久久久黄色| 国产精品探花在线| 久久国产精品网| 精品国产一区二区三区久久久| 一区三区视频| 成人超碰在线| 日韩国产福利| 欧美三级理伦电影| caoporn成人免费视频在线| 99久久99久久精品国产片桃花| 亚欧美中日韩视频| 国产日韩欧美激情| 中文字幕一区二区精品| 久久久久久久久91| 亚洲精品免费网站| 免费成人午夜视频| 色偷偷亚洲第一综合| 在线播放三级网站| 激情视频网站在线播放色 | 久久国产中文字幕| 午夜精品偷拍| 久久精品国产99| 日产欧产美韩系列久久99| 成人av国产| 久久久久久久久久久妇女| 婷婷丁香久久| 国产成人精品一区二区三区免费| 尤物视频在线免费观看| 国产原创av在线| 日本一区高清| a在线免费观看| 天堂久久午夜av| 国产成+人+综合+亚洲欧美| 曰本三级在线| 97人人澡人人爽91综合色| 这里只有精品视频在线观看| 国产乱码精品| 欧美一区久久久| 免费看涩涩视频| 91gao视频| 亚洲精品自拍偷拍| 国产精品乱码妇女bbbb| 欧美片第1页综合|