Win10深度學(xué)習(xí)環(huán)境搭建(TensorFlow/Pytorch)全流程

作者/編輯/配圖 | 橘子? ?來源 | 橘子AI筆記(ID:datawitch)


如果從現(xiàn)在開始決定學(xué)習(xí)深度學(xué)習(xí),寫代碼、搭建自己的模型充择,那么準(zhǔn)備開發(fā)環(huán)境將是你艱難的第一步。橘子當(dāng)時搜必應(yīng)匪蟀、查谷歌?忘了度娘吧椎麦,安裝攻略沒少看,結(jié)果真到自己上手實(shí)踐的時候材彪,依然碰到了不少問題观挎。

本文將嘗試站在萌新的視角,盡力還原這一過程中可能碰到的種種問題段化,希望它能指引著你順利完成配置過程嘁捷、幫你省下一些寶貴的時間。



01.

硬件準(zhǔn)備

一個完整的深度學(xué)習(xí)GPU開發(fā)環(huán)境需要硬件和軟件兩方面的支持显熏,在硬件部分雄嚣,我將從GPU以舒、CPU晾蜘、散熱、主板邮辽、電源蕴轨、內(nèi)存港谊、硬盤和顯示器幾方面分別介紹。


GPU

深度學(xué)習(xí)需要進(jìn)行大量矩陣運(yùn)算橙弱,如果不考慮云端服務(wù)提供的TPU資源封锉,一塊足夠好的GPU就是普通人的性價比之選。

目前最常用的是NVIDIA顯卡膘螟,主要關(guān)注的GPU性能參數(shù)是顯存CUDA計(jì)算能力

顯存關(guān)系到你能訓(xùn)練多大的深度學(xué)習(xí)模型碾局。8-11GB的顯存對現(xiàn)階段而言是夠用的荆残,預(yù)算充足的前提下,建議選擇更高的顯存净当。

顯卡的CUDA計(jì)算能力會影響模型訓(xùn)練的速度内斯。不同版本的TensorFlow要求不同,最新版本的最低要求是3.5以上像啼。

2020年Lambda推薦的顯卡型號有:

RTX 2060 (6 GB): 如果你只是想在空閑時間玩玩深度學(xué)習(xí)模型俘闯。

RTX 2070/2080 (8 GB): 如果你是認(rèn)真想做深度學(xué)習(xí),但預(yù)算又非常有限忽冻。8 GB的顯存能滿足大多數(shù)模型的需求真朗。

RTX 2080 Ti (11 GB): 如果你是認(rèn)真想做深度學(xué)習(xí),并且預(yù)算稍高一些僧诚。RTX 2080 Ti比RTX 2080提速40%遮婶。

Titan RTX/Quadro RTX 6000 (24 GB): 如果你需要頻繁使用當(dāng)下最好的深度學(xué)習(xí)模型蝗碎,但沒有足夠的預(yù)算購買RTX 8000。

Quadro RTX 8000 (48 GB): 你在為未來投資旗扑!甚至有可能幸運(yùn)地在今年就研究出下一個最先進(jìn)的深度學(xué)習(xí)模型蹦骑。

你也可以選擇購買二手的GTX 1080ti (11 GB)


CPU

首先要明確的是臀防,相比于GPU眠菇,深度學(xué)習(xí)并不那么需要高性能的CPU,在運(yùn)行深度神經(jīng)網(wǎng)絡(luò)時CPU承擔(dān)的運(yùn)算量很少袱衷,所以挑選CPU不是越貴越好捎废。

在深度學(xué)習(xí)任務(wù)中,CPU主要承擔(dān)的工作是數(shù)據(jù)預(yù)處理祟昭。為了不讓這一步成為瓶頸缕坎,至少保證每個GPU能對應(yīng)4個CPU線程,CPU主頻最好在3.6 GHz以上篡悟。


散熱

不可忽視的環(huán)節(jié)谜叹。一般GPU溫度達(dá)到80℃就會觸發(fā)保護(hù)、降低性能搬葬。因此無論是選擇風(fēng)冷還是水冷荷腊,必須要配備散熱系統(tǒng)

另外急凰,由于NVIDIA顯卡首先都是游戲顯卡女仰,已經(jīng)針對Windows操作系統(tǒng)做了優(yōu)化,可以很方便地在Windows系統(tǒng)中更改風(fēng)扇相關(guān)選項(xiàng)抡锈。而大部分深度學(xué)習(xí)庫都是為Linux操作系統(tǒng)寫的疾忍。這一矛盾我將在之后提供一種解決方案。


主板

沒什么特別的床三,保證有足夠的PCIe端口一罩。


電源

將GPU和CPU的功率相加乘以110%就是最低要求。保證有足夠的PCIe端口撇簿。


內(nèi)存

記住一個原則:內(nèi)存應(yīng)該大于顯存聂渊。

理想情況是配備32 GB及以上的內(nèi)存,如果預(yù)算有限四瘫,那么16 GB也可以接受汉嗽。


硬盤

主要關(guān)注的性能參數(shù)是存儲容量讀取速度

其中找蜜,存儲容量決定了你能用多大的數(shù)據(jù)集饼暑,讀取速度會影響到訓(xùn)練過程中的I/O操作

固態(tài)硬盤(SSD)的讀取速度顯著超過普通機(jī)械硬盤,建議選擇一塊256 GB以上的SSD撵孤。


顯示器

既然是做數(shù)據(jù)分析而不是做設(shè)計(jì)迈着,沒什么特殊要求,夠用就行邪码。而根據(jù)經(jīng)驗(yàn)裕菠,多一個顯示器可以用來打游戲?顯著提升你的工作效率。

橘子目前使用的工作站配備了Intel Xeon CPU闭专,NVIDIA GTX 1080ti (11 GB) GPU奴潘,16 GB內(nèi)存以及256 GB的SSD。

這個配置大概是什么概念呢影钉?

在這臺電腦上訓(xùn)練一個擁有10,484,994參數(shù)的深度卷積神經(jīng)網(wǎng)絡(luò)画髓,大致需要7分38秒。



02.

軟件準(zhǔn)備

假設(shè)你已經(jīng)有了足夠好的電腦平委,接下來需要安裝:

MinGW-w64?MSYS2– 用于在Windows下搭建類Unix環(huán)境(也就是上文提到的解決方案:Windows奈虾、Linux,一個都不能少~)

NVIDIA顯卡驅(qū)動– 允許系統(tǒng)使用GPU帶來的運(yùn)算加速

Visual StudioWindows 10 SDK– CUDA需要廉赔,如果不提前裝好肉微,CUDA安裝程序也會在最后一步提醒你的

CUDA Toolkit– GPU C語言庫,為高性能GPU加速應(yīng)用程序提供開發(fā)環(huán)境

cuDNN– 基于CUDA蜡塌,深度學(xué)習(xí)使用的GPU加速基元庫

Python?pip– 機(jī)器學(xué)習(xí)領(lǐng)域最常用的編程語言及其包管理工具

Pytorch/TensorFlow– 兩個都是主流的深度學(xué)習(xí)框架碉纳,可以二選一

為了以后更好的編程體驗(yàn),你還會需要:

Sublime Text– 文本編輯器馏艾,用來寫代碼和看代碼劳曹,換一個同類的也可以

Jupyter Notebook–?以網(wǎng)頁的形式打開,可以在瀏覽器頁面中直接寫代碼琅摩、運(yùn)行代碼铁孵,運(yùn)行結(jié)果也會直接在代碼塊下顯示


安裝MinGW-w64和MSYS2

我想了想決定把這一步提到最前面。因?yàn)橐坏╊怳nix環(huán)境配置好房资,后續(xù)操作就可以在Powershell中無縫使用Linux系統(tǒng)的常用命令蜕劝,體驗(yàn)非常順暢。

Win 10 (64位) 的用戶請?jiān)?a target="_blank">MSYS2官網(wǎng)下載頁面選擇msys2-x86_64的安裝包志膀。

下載安裝完成之后,打開MSYS2鳖擒,在窗口中輸入以下命令安裝:

pacman -S mingw-w64-x86_64-gcc

(可選)以上一步安裝的gcc為例溉浙,如果還需要安裝其他Linux庫,可以先輸入以下命令查詢蒋荚,mingw-w64-x86_64-gcc可替換為其他任何庫的名稱:

pacman -Ss mingw-w64-x86_64-gcc

查詢之后安裝命令同前

在搜索框中搜索「編輯系統(tǒng)環(huán)境變量」戳稽,「系統(tǒng)屬性」–「高級」中選擇「環(huán)境變量」

將MSYS2相關(guān)的三個目錄(如圖)添加到「系統(tǒng)變量」的「Path」中。

以后類似的步驟如何添加環(huán)境變量就不再重復(fù)啦

這樣就可以在Powershell中使用Linux命令了。


安裝NIVIDIA顯卡驅(qū)動

NVIDIA官網(wǎng)可以按照GPU型號下載最新的顯卡驅(qū)動程序惊奇。如果已經(jīng)安裝互躬,強(qiáng)烈建議你在開始下一步之前先檢查更新。

在開始菜單圖標(biāo)上右鍵「Windows Powershell (管理員)」颂郎,以管理員身份打開Powershell吼渡,進(jìn)入nvidia-smi所在目錄:

cd ‘C:\Program Files\NVIDIA Corporation\NVSMI’

以后打開Powershell都默認(rèn)管理員,不再重復(fù)

運(yùn)行「nvidia-smi」命令:

.\nvidia-smi

可以看到當(dāng)前顯卡的型號乓序、顯存寺酪、驅(qū)動版本以及正在使用顯卡的進(jìn)程。后續(xù)安裝了CUDA之后替劈,也可以看到CUDA版本寄雀。

如果這個命令不起作用,請先檢查你的顯卡驅(qū)動有沒有安裝好陨献。


Visual Studio和Windows 10 SDK

在開始安裝CUDA之前盒犹,先檢查一下自己電腦上有無Visual Studio和Windows 10 SDK。在VS官網(wǎng)選擇Community版本眨业。

安裝程序還會進(jìn)行兩次下載急膀,需要耐心等待。

兩次下載完成后坛猪,為了后續(xù)安裝和測試CUDA脖阵,「使用C++的桌面開發(fā)」和「Windows 10 SDK」兩項(xiàng)是必須安裝的,其他組件可以看個人需要墅茉。

安裝CUDA Toolkit

根據(jù)當(dāng)前顯卡驅(qū)動版本命黔,選擇對應(yīng)的CUDA版本。最新版本的TensorFlow (>= 2.1.0)支持CUDA 10.1就斤,需要顯卡驅(qū)動版本高于418.x悍募。

這里列出了所有CUDA版本的下載鏈接,以CUDA 10.1為例下載本地安裝包洋机。

雙擊下載好的文件坠宴,安裝過程會自動開始。

安裝過程中绷旗,軟件協(xié)議選擇「同意并繼續(xù)」

選擇默認(rèn)的「精簡」模式喜鼓,然后下一步。

如果跳出Windows安全中心的提示衔肢,繼續(xù)「安裝」

最后一步會檢查Visual Studio庄岖,如果前面已經(jīng)安裝好,就沒有問題角骤,按要求重啟電腦隅忿。

正常安裝完成后,CUDA的目錄應(yīng)該已經(jīng)存在于系統(tǒng)環(huán)境變量「Path」中,為了保險可以檢查一下背桐。

打開圖中目錄优烧,根據(jù)你的Visual Studio版本打開對應(yīng)的文件,比如我選擇「nbody_vs2017.sln」

注意「ProgramData」可能是隱藏文件夾链峭,在「文件」–「查看」里勾選「隱藏的項(xiàng)目」就顯示了畦娄。

選中「nbody」,菜單欄中選生成解決方案熏版。

在「輸出」欄中得到下圖結(jié)果說明生成成功纷责。

在Powershell中輸入以下命令打開nbody目錄:

cd ‘C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\bin\win64\Debug’

運(yùn)行nbody:

.\nbody.exe

運(yùn)行成功結(jié)果如圖,可以看到CUDA使用的GPU撼短。

CUDA的官方文檔中有更詳細(xì)的安裝步驟說明再膳。

安裝cuDNN

接下來安裝cuDNN。進(jìn)入cuDNN網(wǎng)站頁面并選擇「download」之后會要求登錄曲横。

注冊一個NVIDIA賬號即可喂柒。

按照當(dāng)前CUDA版本選擇對應(yīng)的cuDNN版本下載。

將下載好的壓縮包解壓禾嫉,分別替換到CUDA目錄下對應(yīng)的文件夾中(這步操作需要管理員權(quán)限)

在Powershell中檢查cuDNN版本需要兩步:

cd ‘\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include’

cat cudnn.h | grep CUDNN_MAJOR -A 2

運(yùn)行結(jié)果中對應(yīng)的三個數(shù)字就是cuDNN的版本號灾杰,如圖cuDNN版本為7.6.5。

安裝Python和pip

Python官網(wǎng)下載所需安裝包熙参,需要哪個版本可以看深度學(xué)習(xí)框架的要求艳吠,比如TensorFlow 2.0要求Python版本為3.5-3.7。

我安裝的是Python 3.6.7孽椰。

完成后在Powershell中輸入「python」昭娩,如果出現(xiàn)如下界面說明安裝成功,quit()退出黍匾。

pip官網(wǎng)文件列表中下載.tar.gz安裝包栏渺。

在Powershell中,先用「cd」命令打開安裝包所在目錄锐涯,然后輸入如下命令解壓:

gzip -dv pip-20.0.2.tar.gz

tar -xf .\pip-20.0.2.tar

解壓之后輸入如下命令磕诊,回車,將自動安裝pip:

python setup.py install

輸入以下命令可查看pip是否可用:

python -m pip –version


安裝Pytorch或TensorFlow

- Pytorch -

Pytorch官網(wǎng)查詢安裝最新版本Pytorch的「pip」命令纹腌。如果需要舊版本的pytorch查這里霎终,在Powershell中輸入對應(yīng)的命令即可安裝。

如果安裝過程中因?yàn)榫W(wǎng)絡(luò)問題超時報(bào)錯升薯,橘子在文末提供了適用于Python 3.6莱褒、Pytorch 1.3.1的.whl文件,使用方法是在Powershell中「cd」到.whl文件所在目錄覆劈,然后敲以下命令:

pip3 install .\torch-1.3.1-cp36-cp36m-win_amd64.whl

安裝完成后可以輸入如下命令驗(yàn)證:

python -c 'import torch; print(torch.Tensor([1]))'

如果結(jié)果是「tensor([1.])」說明安裝成功保礼。


- TensorFlow?-

在TensorFlow官網(wǎng)可以找到最新版本以前版本的TensorFlow。與Pytorch類似责语,有兩種安裝方式炮障,第一種是使用「pip」直接安裝:

pip3 install --upgrade tensorflow

第二種是下載.whl文件并安裝,橘子使用的是適用于Python 3.6的坤候、TensorFlow 2.0.0的.whl文件:

pip3 install .\tensorflow_gpu-2.0.0-cp36-cp36m-win_amd64.whl

安裝完成后可以輸入如下命令驗(yàn)證:

python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

安裝成功的結(jié)果如下胁赢。

安裝Sublime Text

直接從Sublime Text官網(wǎng)下載安裝就好。

安裝及配置Jupyter Notebook

在Powershell中輸入如下命令安裝Jupyter:

pip install notebook

除了文檔中寫的Jupyter Notebook運(yùn)行方法白筹,在Windows中還可以寫一個.bat文件智末,簡單三步就可以將Jupyter notebook運(yùn)行目錄改到任何位置:

1、打開Powershell并輸入如下命令徒河,生成文件「C:\Users\lenovo\.jupyter\jupyter_notebook_config.py」記錄默認(rèn)配置(「lenovo」替換為你電腦中的用戶名)

Jupyter notebook --generate-config

2系馆、使用Sublime Text打開這個文件。

3顽照、用快捷鍵「Ctrl+F」找到如下行:

#c.NotebookApp.notebook_dir = ‘’

去掉「#」注釋由蘑,把你想要的目錄寫進(jìn)去,比如在D盤新建一個目錄叫「jupyter」

c.NotebookApp.notebook_dir = ‘D:/jupyter’

這三步操作完之后代兵,打開Jupyter的默認(rèn)方式是先「cd」到這個配置好的目錄尼酿,然后輸入「jupyter notebook」

這種方法有點(diǎn)麻煩,更省事的辦法是寫一個.bat文件植影,無論這個文件放在哪裳擎,下次想要打開Jupyter的時候只要以管理員身份運(yùn)行這個文件就可以了。

例如思币,打開Sublime Text新建一個文件鹿响,寫入如下語句并將文件存為「open_jupyter.bat」

@echo off

D:

cd jupyter

jupyter notebook

成功在瀏覽器打開Jupyter Notebook并新建一個Python 3文件的效果。

03.

最后的總結(jié)

目前為止支救,橘子已經(jīng)盡力回憶了安裝過程中可能遇到的所有坑抢野,但畢竟沒法面面俱到「髂框架一直在更新?lián)Q代指孤,而我永遠(yuǎn)不知道哪里會出現(xiàn)新的問題。

如果你按照本文的步驟依然碰到了問題贬堵,我誠懇地建議你恃轩,在開口問之前先自己去查,因?yàn)樗阉饕婧?a target="_blank">Stack Overflow大概率會給出答案黎做。


這里有份重點(diǎn)可以幫你避開大部分坑(敲黑板):

更新NVIDIA顯卡驅(qū)動為最新

始終以管理員身份打開Powershell

安裝CUDA之前檢查一下電腦上有沒有裝好Visual Studio和Windows SDK

根據(jù)NVIDIA顯卡支持的CUDA版本選擇對應(yīng)的cuDNN叉跛、Pytorch/TensorFlow

確定Python版本與CUDA、cuDNN和深度學(xué)習(xí)框架兼容

報(bào)錯時優(yōu)先檢查Windows系統(tǒng)環(huán)境變量



參考資料:

https://lambdalabs.com/blog/choosing-a-gpu-for-deep-learning/

https://timdettmers.com/2018/12/16/deep-learning-hardware-guide/

https://stackoverflow.com/questions/30069830/how-to-install-mingw-w64-and-msys2


- End -

謝謝你看完全文喲 ?( ′???` )

橘子AI筆記

發(fā)現(xiàn)數(shù)據(jù)之美蒸殿,探索自然之道

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筷厘,一起剝皮案震驚了整個濱河市鸣峭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酥艳,老刑警劉巖摊溶,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異充石,居然都是意外死亡莫换,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門骤铃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拉岁,“玉大人,你說我怎么就攤上這事惰爬『芭” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵撕瞧,是天一觀的道長哄啄。 經(jīng)常有香客問我,道長风范,這世上最難降的妖魔是什么咨跌? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮硼婿,結(jié)果婚禮上锌半,老公的妹妹穿的比我還像新娘。我一直安慰自己寇漫,他們只是感情好刊殉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著州胳,像睡著了一般记焊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栓撞,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天遍膜,我揣著相機(jī)與錄音,去河邊找鬼瓤湘。 笑死瓢颅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弛说。 我是一名探鬼主播挽懦,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼木人!你這毒婦竟也來了信柿?” 一聲冷哼從身側(cè)響起冀偶,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渔嚷,沒想到半個月后蔫磨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圃伶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蒲列。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窒朋。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝗岖,靈堂內(nèi)的尸體忽然破棺而出侥猩,到底是詐尸還是另有隱情,我是刑警寧澤抵赢,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布欺劳,位于F島的核電站,受9級特大地震影響铅鲤,放射性物質(zhì)發(fā)生泄漏划提。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一邢享、第九天 我趴在偏房一處隱蔽的房頂上張望鹏往。 院中可真熱鬧,春花似錦骇塘、人聲如沸伊履。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唐瀑。三九已至,卻和暖如春插爹,著一層夾襖步出監(jiān)牢的瞬間哄辣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工赠尾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柔滔,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓萍虽,卻偏偏與公主長得像睛廊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子杉编,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容