丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給黃善清
發(fā)送

0

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

本文作者: 黃善清 2019-01-30 16:19
導(dǎo)語:猜猜看結(jié)論是什么?

雷鋒網(wǎng) AI 科技評(píng)論按:本文作者 Sanyam Bhutani 是一名機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺領(lǐng)域的自由職業(yè)者兼 Fast.ai 研究員。在文章中,他將 2080Ti 與 1080Ti 就訓(xùn)練時(shí)長(zhǎng)進(jìn)行了全方位的對(duì)比。雷鋒網(wǎng) AI 科技評(píng)論對(duì)此進(jìn)行了詳盡編譯。

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

前言

特別感謝:如果沒有來自 Tuatini GODARD(他是我的一名好朋友,同時(shí)也是一名活躍的自由職業(yè)者)的幫助,這個(gè)基準(zhǔn)比較工作是不可能完成的。如果你想了解更多關(guān)于他的信息,可以閱讀這篇訪談:

鏈接:

https://hackernoon.com/interview-with-deep-learning-freelancer-tuatini-godard-e661a3995fb1

還要感謝 Laurae 給這篇文章提出許多有價(jià)值的修改建議。

對(duì)了,最新版的 fastai(2019 版)剛推出,你們肯定都很感興趣:course.fast.ai

備注:這篇文章并沒有接受來自 fastai 的贊助,我只是在上頭學(xué)習(xí)到很多東西。從個(gè)人角度來說,如果你是剛開始接觸深度學(xué)習(xí),強(qiáng)烈向你推薦這個(gè)平臺(tái)。

讓我們進(jìn)入正題。這是一個(gè)能夠說明 FP16 本質(zhì)的簡(jiǎn)單操作演示,并且展示了基于基準(zhǔn)測(cè)試的混合精度訓(xùn)練是怎么進(jìn)行的(我承認(rèn),大部分時(shí)候我只是通過這個(gè)向朋友吹噓我的顯卡集全比他的要快,然后才是出于研究目的)。

注意:這并非關(guān)乎基準(zhǔn)性能比較的文章,而是 2080Ti 與 1080Ti 之間基于 2 builds 的訓(xùn)練時(shí)長(zhǎng)對(duì)比。

對(duì)此,文章里會(huì)有更詳細(xì)的介紹。

在此之前,我們先快速瀏覽一下中子的造型:

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

FP16 是何方神圣?為何你需要關(guān)注它?

簡(jiǎn)單來說,深度學(xué)習(xí)是基于 GPU 處理的一堆矩陣操作,操作的背后有賴于 FP32 / 32 位浮點(diǎn)矩陣。

隨著新版架構(gòu)與 CUDA 的發(fā)布,F(xiàn)P32 / 32 位浮點(diǎn)矩陣的運(yùn)算正變得越來越簡(jiǎn)單。這也意味著,只要使用與過去相比只有一半大小的張量,我們卻能通過增加批尺寸(batch_size)來處理更多案例;此外,相比使用 FP32(也被稱為 Full Precision Training)進(jìn)行訓(xùn)練,F(xiàn)P16 可以有效降低 GPU RAM 的使用量。

用簡(jiǎn)單的英語來表示,就是能夠在代碼中以 (batch_size)*2 替代 (batch_size)。

FP16 運(yùn)算的張量核心如今在速度上變得更快了,只需使用少量的 GPU RAM ,就能在速度與性能方面有所提升。

等等,這可沒那么簡(jiǎn)單

我們依然存在半精度問題(這是因?yàn)?16 位浮點(diǎn)變量的精度是 32 位浮點(diǎn)變量的一半),說明:

  • 更新的權(quán)重?cái)?shù)據(jù)是不精確的。

  • 梯度會(huì)下溢。

  • 無論激活或丟失都可能導(dǎo)致溢出。

  • 有明顯的精度損失。

接下來,我將和大家談一談混合精度訓(xùn)練。

混合精度訓(xùn)練

為了避免上述提及的問題,我們?cè)谶\(yùn)行 FP16 的過程中,會(huì)在可能導(dǎo)致精度損失的部分及時(shí)切換回 FP32。這就是所謂的混合精度訓(xùn)練。

第 1 步:使用 FP16 盡可能加快運(yùn)算速度:

將輸入張量換成 fp16 張量,以加快系統(tǒng)的運(yùn)行速度。

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

第 2 步:使用 FP32 計(jì)算損耗值(避免下溢/溢出):

將張量換回 FP32 以計(jì)算損耗值,以免出現(xiàn)下溢/溢出的情況。

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

第 3 步:

先用 FP32 張量進(jìn)行權(quán)重更新,然后再換回 FP16 進(jìn)行前向與反向迭代。

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

第4步:通過乘以或除以縮放因子來完成損耗縮放:

通過乘以或除以損耗比例因子來縮放損耗。

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

總結(jié)就是:

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

fast.ai 上的混合精度訓(xùn)練

正如人們所期待的的,在庫中進(jìn)行混合精確訓(xùn)練有如將

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

轉(zhuǎn)換成

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

一樣簡(jiǎn)單。

如果你想了解操作過程當(dāng)中的細(xì)節(jié),可以點(diǎn)進(jìn):

https://docs.fast.ai/callbacks.fp16.html

該模塊允許我們使用 FP16 更改訓(xùn)練過程中的前向與反向迭代,且附有提速效果。

就內(nèi)部而言,回調(diào)函數(shù)能確保所有模型參數(shù)(除去智能使用 FP32 的 batchnorm layers)都轉(zhuǎn)換成 FP16,且保存了 FP32 副本。FP 32 副本(主參數(shù))主要用于優(yōu)化器上的更新;FP 16 的參數(shù)則用于梯度計(jì)算。這些能有效避免低學(xué)習(xí)率下溢現(xiàn)象的發(fā)生。

RTX 2080Ti 與 GTX 1080Ti 的混合精度訓(xùn)練結(jié)果對(duì)比

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

設(shè)置詳情

可以從這里獲知筆記本的基準(zhǔn)設(shè)置

軟件設(shè)置:

Cuda 10 + 對(duì)應(yīng)最新版的 Cudnn

PyTorch + fastai 庫(從源頭進(jìn)行編譯)

最新版的 Nvidia 驅(qū)動(dòng)程序(截至文章撰寫時(shí)間)

硬件配置:

我們的硬件配置略有不同,對(duì)于最終數(shù)值要有所保留。

Tuatini 的配置:

i7-7700K

32GB RAM

GTX 1080Ti(EVGA)

我的配置:

i7-8700K

64GB RAM

RTX 2080Ti(MSI Gaming Trio X)

由于運(yùn)算過程并非 RAM 密集型或者 CPU 密集型任務(wù),所以我們選擇在此處分享我們的結(jié)果。

讓我們快速過一遍:

  • 輸入 CIFAR-100 數(shù)據(jù)

  • 調(diào)整圖像的大小,啟用數(shù)據(jù)增強(qiáng)

  • 在 fastai 支持的所有 Resnet 上運(yùn)行

預(yù)期輸出:

  • 在所有的混合精度訓(xùn)練測(cè)試中取得更好的結(jié)果。

圖表結(jié)果

以下展示的是在各個(gè) ResNets 上的訓(xùn)練時(shí)間對(duì)比總表。

注意:數(shù)值越小越好(X 軸代表秒時(shí)間單位與縮放時(shí)間)

Resnet 18

體積最小的 Resnet。

  • 秒時(shí)間單位:

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

  • 性能比例:

    實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

Resnet 34

  • 秒時(shí)間單位:

    實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

  • 性能比例:

    實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

Resnet 50

  • 秒時(shí)間單位:

    實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

  • 性能比例:

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

Resnet 152

  • 秒時(shí)間單位:

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

  • 性能比例:

    實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

使用 Nvidia Apex 進(jìn)行世界級(jí)語言建模工作

為了使混合精度訓(xùn)練與 FP16 訓(xùn)練的實(shí)驗(yàn)成為可能,Nvidia 專門發(fā)布了一套維護(hù) Nvidia 的實(shí)用工具 Nvidia apex,用于簡(jiǎn)化 Pytorch 中的混合精度訓(xùn)練與分布式訓(xùn)練。Apex 最主要的目的是盡可能快速地為用戶提供最新的實(shí)用工具。

開源網(wǎng)址:

https://github.com/NVIDIA/apex

它通過一些例子向我們展示,不需要經(jīng)過太多調(diào)整便可以直接運(yùn)行工具——看來又是另一個(gè)針對(duì)高速旋轉(zhuǎn)的好測(cè)試。

語言模型對(duì)比:

Github 開源中的例子基于語言建模任務(wù)訓(xùn)練了一個(gè)多層 RNN(Elman,GRU 或 LSTM)。該訓(xùn)練腳本默認(rèn)使用 Wikitext-2 數(shù)據(jù)集。訓(xùn)練模型可以用來生成產(chǎn)生新文本的腳本。

我們其實(shí)并不關(guān)心測(cè)試的生成結(jié)果 - 我們主要想比較基于混合精度訓(xùn)練的 30 輪次(epochs)訓(xùn)練例子,以及同樣批量大小卻是不同設(shè)置的全精度訓(xùn)練(Full Precision)。

啟用 fp16 就和運(yùn)行代碼時(shí)傳遞「—fp16」參數(shù)一樣簡(jiǎn)單,APEX 可以在我們已經(jīng)設(shè)置好的 PyTorch 環(huán)境上運(yùn)行。綜合來看,這似乎是個(gè)完美的選擇。

以下是相關(guān)結(jié)果:

  • 秒時(shí)間單位

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

  • 性能比例:

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

結(jié)論

雖然在性能方面 RTX 卡要比 1080Ti 強(qiáng)大得多,尤其就小型網(wǎng)絡(luò)而言,然而訓(xùn)練時(shí)間的差異并不如預(yù)期般的明顯。

如果你決定嘗試混合精度訓(xùn)練,我在這里給你提供幾個(gè)重點(diǎn)提示:

  • 更大批量:

在筆記本基準(zhǔn)測(cè)試中,我們發(fā)現(xiàn)在 batch_size 方面有近乎 1.8 倍的提高,這與我們嘗試過的所有 Resnet 示例結(jié)果保持一致。

  • 速度比全精度訓(xùn)練更快:

我們以結(jié)果差距最大的 Resnet 101 為例(用的是 CIFAR-100 數(shù)據(jù)集),全精度訓(xùn)練在 2080Ti 上的花費(fèi)時(shí)間是混合精度訓(xùn)練的 1.18 倍,在 2080Ti 上的花費(fèi)時(shí)間是混合精度訓(xùn)練的 1.13 倍。即便是體積「較小」的 Resnet34 和 Resnet50,我們發(fā)現(xiàn)混合精度訓(xùn)練在訓(xùn)練期間存在小幅度的加速效果。

  • 相同的精確值:

我們并未發(fā)現(xiàn)混合精度訓(xùn)練導(dǎo)致精確度下降的現(xiàn)象出現(xiàn)。

  • 確保你使用最新版的 CUDA(>9)和 Nvidia 驅(qū)動(dòng)程序。

這里需要強(qiáng)調(diào)的是,在測(cè)試期間,如果環(huán)境沒更新好是無法運(yùn)行代碼的。

  • 多多關(guān)注 fastai 和 Nvidia APEX

via https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f

雷鋒網(wǎng) AI 科技評(píng)論

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

實(shí)戰(zhàn) PK!RTX2080Ti 對(duì)比 GTX1080Ti 的 CIFAR100 混合精度訓(xùn)練

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請(qǐng)?zhí)顚懮暾?qǐng)人資料
姓名
電話
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說