傳統(tǒng)上,深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練采用的是IEEE單精度格式,但借助混合精度,可采用半精度進(jìn)行訓(xùn)練,同時(shí)保持單精度的網(wǎng)絡(luò)精度。這種同時(shí)采用單精度和半精度表示的技術(shù)被稱為混合精度技術(shù)。
混合精度訓(xùn)練的優(yōu)勢(shì)
通過(guò)使用Tensor核心,可加速數(shù)學(xué)密集型運(yùn)算,如線性和卷積層。
與單精度相比,通過(guò)訪問(wèn)一半的字節(jié)來(lái)加速內(nèi)存受限的運(yùn)算。
降低訓(xùn)練模型的內(nèi)存要求,支持更大規(guī)模的模型或更大規(guī)模的批量訓(xùn)練。
啟用混合精度包括兩個(gè)步驟:移植模型,以適時(shí)使用半精度數(shù)據(jù)類型;以及使用損耗定標(biāo),以保留小梯度值。
僅通過(guò)添加幾行代碼,TensorFlow、PyTorch和MXNet中的自動(dòng)混合精確功能就能助力深度學(xué)習(xí)研究人員和工程師基于NVIDIA Volta和Turing GPU實(shí)現(xiàn)高達(dá)3倍的AI訓(xùn)練加速。
將自動(dòng)混合精度用于主流深度學(xué)習(xí)框架
TensorFlow
NVIDIA NGC容器注冊(cè)表中TensorFlow容器可提供自動(dòng)混合精度功能。要在容器內(nèi)啟用此功能,只需設(shè)置一個(gè)環(huán)境變量:
export TF_ENABLE_AUTO_MIXED_PRECISION=1
或者,您也可以在TensorFlow Python腳本中設(shè)置環(huán)境變量:
os.environ['TF_ENABLE_AUTO_MIXED_PRECISION'] = '1'
自動(dòng)混合精度使用單一環(huán)境變量,在TensorFlow內(nèi)部應(yīng)用這兩個(gè)步驟,并在必要時(shí)進(jìn)行更細(xì)粒度的控制。
PyTorch
GitHub的Apex存儲(chǔ)庫(kù)中提供了自動(dòng)混合精度功能。可將以下兩行代碼添加至當(dāng)前訓(xùn)練腳本中以啟用該功能:
model, optimizer = amp.initialize(model, optimizer)
with amp.scale_loss(loss, optimizer) as scaled_loss:scaled_loss.backward()
MXNet
我們正在構(gòu)建適用于MXNet的自動(dòng)混合精度功能。您可通過(guò)GitHub了解我們的工作進(jìn)展??蓪⒁韵麓a行添加至當(dāng)前訓(xùn)練腳本中以啟用該功能:
amp.init()amp.init_trainer(trainer)with amp.scale_loss(loss, trainer) as scaled_loss:autograd.backward(scaled_loss)
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4772瀏覽量
100807 -
gpu
+關(guān)注
關(guān)注
28文章
4742瀏覽量
128972 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121206
原文標(biāo)題:Tensor核心系列課 | 探究適用于深度學(xué)習(xí)的自動(dòng)混合精度
文章出處:【微信號(hào):NVIDIA-Enterprise,微信公眾號(hào):NVIDIA英偉達(dá)企業(yè)解決方案】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論