很火的深度学习框架PyTorch怎么用?手把手带你安装配置
導(dǎo)讀:本文主要介紹PyTorch的一些基礎(chǔ)且常用的概念和模塊,以及:
為何選擇PyTorch。
PyTorch環(huán)境的安裝與配置。
作者:吳茂貴 郁明敏 楊本法 李濤 張粵磊
來源:大數(shù)據(jù)DT(ID:bigdatadt)
PyTorch是Facebook團(tuán)隊(duì)于2017年1月發(fā)布的一個(gè)深度學(xué)習(xí)框架,雖然晚于TensorFlow、Keras等框架,但自發(fā)布之日起,其關(guān)注度就在不斷上升,目前在GitHub上的熱度已超過Theano、Caffe、MXNet等框架。
PyTorch 1.0版本推出后,增加了許多新的功能,對原有內(nèi)容進(jìn)行了優(yōu)化,并整合了Caffe2,使用更方便,大大增強(qiáng)了生產(chǎn)性,所以其熱度也迅速上升。
PyTorch采用Python語言接口來實(shí)現(xiàn)編程,非常容易上手。它就像帶GPU的Numpy,與Python一樣都屬于動(dòng)態(tài)框架。
PyTorch繼承了Torch靈活、動(dòng)態(tài)的編程環(huán)境和用戶友好的界面,支持以快速和靈活的方式構(gòu)建動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò),還允許在訓(xùn)練過程中快速更改代碼而不妨礙其性能,支持動(dòng)態(tài)圖形等尖端AI模型的能力,是快速實(shí)驗(yàn)的理想選擇。
01 為何選擇PyTorch?
PyTorch是一個(gè)建立在Torch庫之上的Python包,旨在加速深度學(xué)習(xí)應(yīng)用。它提供一種類似Numpy的抽象方法來表征張量(或多維數(shù)組),可以利用GPU來加速訓(xùn)練。由于 PyTorch 采用了動(dòng)態(tài)計(jì)算圖(Dynamic Computational Graph)結(jié)構(gòu),且基于tape的Autograd系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)。
其他很多框架,比如TensorFlow(TensorFlow2.0也加入了動(dòng)態(tài)網(wǎng)絡(luò)的支持)、Caffe、CNTK、Theano等,采用靜態(tài)計(jì)算圖。
使用PyTorch,通過一種稱為Reverse-mode auto-differentiation(反向模式自動(dòng)微分)的技術(shù),可以零延遲或零成本地任意改變你的網(wǎng)絡(luò)的行為。
Torch是PyTorch中的一個(gè)重要包,它包含了多維張量的數(shù)據(jù)結(jié)構(gòu)以及基于其上的多種數(shù)學(xué)操作。
自2015年谷歌開源TensorFlow以來,深度學(xué)習(xí)框架之爭越來越激烈,全球多個(gè)看重AI研究與應(yīng)用的科技巨頭均在加大這方面的投入。PyTorch從2017年年初發(fā)布以來,可謂是異軍突起,短時(shí)間內(nèi)取得了一系列成果,成為明星框架。
最近PyTorch進(jìn)行了一些較大的版本更新,0.4版本把Varable與Tensor進(jìn)行了合并,并增加了對Windows的支持。1.0版本增加了即時(shí)編譯(Justintimecompilation,JIT,彌補(bǔ)了研究與生產(chǎn)的部署的差距)、更快的分布式、C++擴(kuò)展等。
目前,PyTorch 1.0 穩(wěn)定版已發(fā)布,該版本從Caffe2和ONNX移植了模塊化和產(chǎn)品導(dǎo)向的功能,并將這些功能和PyTorch已有的靈活、專注研究的特性相結(jié)合。PyTorch 1.0中的技術(shù)已經(jīng)讓很多Facebook的產(chǎn)品和服務(wù)變得更強(qiáng)大,包括每天執(zhí)行60億次的文本翻譯。
PyTorch由4個(gè)主要的包組成:
-
torch:類似于Numpy的通用數(shù)組庫,可將張量類型轉(zhuǎn)換為torch.cuda.TensorFloat,并在GPU上進(jìn)行計(jì)算。
-
torch.autograd:用于構(gòu)建計(jì)算圖形并自動(dòng)獲取梯度的包。
-
torch.nn:具有共享層和損失函數(shù)的神經(jīng)網(wǎng)絡(luò)庫。
-
torch.optim:具有通用優(yōu)化算法(如SGD、Adam等)的優(yōu)化包。
02 安裝配置
安裝PyTorch時(shí),請核查當(dāng)前環(huán)境是否有GPU,如果沒有,則安裝CPU版;如果有,則安裝GPU版本的。
1. 安裝CPU版PyTorch
安裝CPU版的PyTorch比較簡單,由于PyTorch是基于Python開發(fā),所以如果沒有安裝Python需要先安裝,然后再安裝PyTorch。具體步驟如下:
1)下載Python:安裝Python建議采用Anaconda方式安裝,先從Anaconda的官網(wǎng)(https://www.anaconda.com/distribution),下載Anaconda3的最新版本,如圖2-1所示,如Anaconda3-5.0.1-Linux-x86_64.sh,建議使用3系列,3系列代表未來發(fā)展。另外,根據(jù)下載時(shí)自己的環(huán)境,選擇操作系統(tǒng)等。
▲圖2-1 下載Anaconda界面
2)在命令行執(zhí)行如下命令,開始安裝Python:
Anaconda3-2019.03-Linux-x86_64.sh3)接下來根據(jù)安裝提示,直接按回車即可。其間會提示選擇安裝路徑,如果沒有特殊要求,可以按回車使用默認(rèn)路徑(~/ anaconda3),然后就開始安裝。
4)安裝完成后,程序會提示是否把Anaconda3的binary路徑加入當(dāng)前用戶的.bashrc配置文件中,建議添加。添加以后,就可以使用Python、IPython命令時(shí)自動(dòng)使用Anaconda3的Python環(huán)境。
5)安裝PyTorch:
登錄PyTorch官網(wǎng)(PyTorch.org),登錄后,可看到圖2-2所示界面,然后選擇對應(yīng)項(xiàng)。
▲圖2-2 PyTorch安裝界面
把第⑥項(xiàng)內(nèi)容復(fù)制到命令行,執(zhí)行即可進(jìn)行安裝。
conda?install?PyTorch-cpu?torchvision-cpu?-c?PyTorch6)驗(yàn)證安裝是否成功:
啟動(dòng)Python,然后執(zhí)行如下命令,如果沒有報(bào)錯(cuò),說明安裝成功!
2. 安裝GPU版PyTorch
安裝GPU版本的PyTorch稍微復(fù)雜一點(diǎn),除需要安裝Python、PyTorch外,還需要安裝GPU的驅(qū)動(dòng)(如英偉達(dá)的NVIDIA)及CUDA、cuDNN計(jì)算框架,主要步驟如下:
1)安裝NVIDIA驅(qū)動(dòng)。
下載地址:
https://www.nvidia.cn/Download/index.aspx?lang=cn
登錄可以看到界面如圖2-3所示。
▲圖2-3 NVIDIA的下載界面
選擇產(chǎn)品類型、操作系統(tǒng)等,然后點(diǎn)擊“搜索”按鈕,進(jìn)入下載界面。
安裝完成后,在命令行輸入“nvidia-smi”,用來顯示GPU卡的基本信息,如果出現(xiàn)圖2-4所示界面,則說明安裝成功。如果報(bào)錯(cuò),則說明安裝失敗,請搜索其他安裝驅(qū)動(dòng)的方法。
▲圖2-4 顯示GPU卡的基本信息
2)安裝CUDA。
CUDA(Compute Unified Device Architecture),是英偉達(dá)公司推出的一種基于新的并行編程模型和指令集架構(gòu)的通用計(jì)算架構(gòu),它能利用英偉達(dá)GPU的并行計(jì)算引擎,比CPU更高效地解決許多復(fù)雜計(jì)算任務(wù)。安裝CUDA Driver時(shí),其版本需與NVIDIA GPU Driver的版本一致,這樣CUDA才能找到顯卡。
3)安裝cuDNN。
NVIDIA cuDNN是用于深度神經(jīng)網(wǎng)絡(luò)的GPU加速庫。注冊NVIDIA并下載cuDNN包,獲取地址為
https://developer.nvidia.com/rdp/cudnn-archive
4)安裝Python及PyTorch。
這步與本書2.2.1節(jié)安裝CPU版PyTorch相同,只是選擇CUDA時(shí),不是None,而是對應(yīng)CUDA的版本號,如圖2-5所示。
▲圖2-5 安裝GPU版PyTorch
5)驗(yàn)證。
驗(yàn)證PyTorch安裝是否成功與本書2.2.1節(jié)一樣,如果想進(jìn)一步驗(yàn)證PyTorch是否在使用GPU,可以運(yùn)行下面這一段測試GPU的程序test_gpu.py,如果成功的話,可以看到如圖2-6的效果。
#cat?test_gpu.py import?torchif?__name__?==?'__main__':#測試?CUDAprint("Support?CUDA??:?",?torch.cuda.is_available())x?=?torch.tensor([10.0])x?=?x.cuda()print(x)y?=?torch.randn(2,?3)y?=?y.cuda()print(y)z?=?x?+?yprint(z)#?測試?CUDNNfrom?torch.backends?import?cudnnprint("Support?cudnn??:?",cudnn.is_acceptable(x))在命令行運(yùn)行以下腳本:
python?test_gpu.py如果可以看到如圖2-6或圖2-7所示的結(jié)果,則說明GPU版PyTorch安裝成功!
▲圖2-6 運(yùn)行test_gpu.py的結(jié)果
在命令行運(yùn)行:nvidia-smi,可以看到如圖2-7所示的界面。
▲圖2-7 含GPU進(jìn)程的顯卡信息
03 Jupyter Notebook環(huán)境配置
Jupyter Notebook是目前Python比較流行的開發(fā)、調(diào)試環(huán)境,此前被稱為IPython notebook。它以網(wǎng)頁的形式打開,可以在網(wǎng)頁頁面中直接編寫和運(yùn)行代碼,代碼的運(yùn)行結(jié)果(包括圖形)也會直接顯示,如在編程過程中添加注釋、目錄、圖像或公式等內(nèi)容。Jupyter Notebook有以下特點(diǎn):
-
編程時(shí)具有語法高亮、縮進(jìn)、Tab補(bǔ)全的功能。
-
可直接通過瀏覽器運(yùn)行代碼,同時(shí)在代碼塊下方展示運(yùn)行結(jié)果。
-
以富媒體格式展示計(jì)算結(jié)果。富媒體格式包括:HTML、LaTeX、PNG、SVG等。
-
對代碼編寫說明文檔或語句時(shí),支持Markdown語法。
-
支持使用LaTeX編寫數(shù)學(xué)性說明。
接下來介紹配置Jupyter Notebook的主要步驟。
1)生成配置文件。
jupyter?notebook?--generate-config執(zhí)行上述代碼,將在當(dāng)前用戶目錄下生成文件:.jupyter/jupyter_notebook_config.py
2)生成當(dāng)前用戶登錄Jupyter密碼。
打開Ipython,創(chuàng)建一個(gè)密文密碼。
In [1]:?
from?notebook.auth?import?passwdIn [2]:?
passwd() Enter?password:? Verify?password:?3)修改配置文件。
vim?~/.jupyter/jupyter_notebook_config.py進(jìn)行如下修改:
c.NotebookApp.ip='*'?#?就是設(shè)置所有ip皆可訪問 c.NotebookApp.password?=?u'sha:ce...剛才復(fù)制的那個(gè)密文' c.NotebookApp.open_browser?=?False?#?禁止自動(dòng)打開瀏覽器 c.NotebookApp.port?=8888?#這是缺省端口,也可指定其他端口4)啟動(dòng)Jupyter Notebook。
#后臺啟動(dòng)jupyter:不記日志: nohup?jupyter?notebook?>/dev/null?2>&1?&在瀏覽器上,輸入IP:port,即可看到與圖2-8類似的界面。
▲圖2-8 Jupyter Notebook網(wǎng)頁界面
接下來就可以在瀏覽器進(jìn)行開發(fā)調(diào)試PyTorch、Python等任務(wù)了。
關(guān)于作者:吳茂貴,資深大數(shù)據(jù)和人工智能技術(shù)專家,就職于中國外匯交易中心,在BI、數(shù)據(jù)挖掘與分析、數(shù)據(jù)倉庫、機(jī)器學(xué)習(xí)等領(lǐng)域工作超過20年。在基于Spark、TensorFlow、PyTorch、Keras等的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)方面有大量的工程實(shí)踐實(shí)踐。
郁明敏,資深商業(yè)分析師,從事互聯(lián)網(wǎng)金融算法研究工作,專注于大數(shù)據(jù)、機(jī)器學(xué)習(xí)以及數(shù)據(jù)可視化的相關(guān)領(lǐng)域,擅長 Python、Hadoop、Spark 等技術(shù),擁有豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。
楊本法,高級算法工程師,在流程優(yōu)化、數(shù)據(jù)分析、數(shù)據(jù)挖掘等領(lǐng)域有10余年實(shí)戰(zhàn)經(jīng)驗(yàn),熟悉Hadoop和Spark技術(shù)棧。有大量工程實(shí)踐經(jīng)驗(yàn)。
李濤,資深A(yù)I技術(shù)工程師,對PyTorch、Caffe、TensorFlow等深度學(xué)習(xí)框架以及計(jì)算機(jī)視覺技術(shù)有深刻的理解和豐富的實(shí)踐經(jīng)驗(yàn)。
張粵磊,資深大數(shù)據(jù)技術(shù)專家,飛谷云創(chuàng)始人,有10余年一線數(shù)據(jù)數(shù)據(jù)挖掘與分析實(shí)戰(zhàn)經(jīng)驗(yàn)。先后在咨詢、金融、互聯(lián)網(wǎng)行業(yè)擔(dān)任大數(shù)據(jù)平臺的技術(shù)負(fù)責(zé)人或架構(gòu)師。
本文摘編自《Python深度學(xué)習(xí):基于PyTorch》,經(jīng)出版方授權(quán)發(fā)布。
延伸閱讀《Python深度學(xué)習(xí):基于PyTorch》
點(diǎn)擊上圖了解及購買
轉(zhuǎn)載請聯(lián)系微信:DoctorData
推薦語:本書是多位人工智能技術(shù)專家和大數(shù)據(jù)技術(shù)專家多年工作經(jīng)驗(yàn)的結(jié)晶,從工具使用、技術(shù)原理、算法設(shè)計(jì)、案例實(shí)現(xiàn)等多個(gè)維度對深度學(xué)習(xí)進(jìn)行了系統(tǒng)的講解。內(nèi)容選擇上,廣泛涉獵、重點(diǎn)突出、注重實(shí)戰(zhàn);內(nèi)容安排上,實(shí)例切入、由淺入深、循序漸進(jìn);表達(dá)形式上,深度抽象、化繁為簡、用圖說話。
「大數(shù)據(jù)」內(nèi)容合伙人之「鑒書小分隊(duì)」上線啦!
最近,你都在讀什么書?有哪些心得體會想要跟大家分享?
數(shù)據(jù)叔最近搞了個(gè)大事——聯(lián)合優(yōu)質(zhì)圖書出版商機(jī)械工業(yè)出版社華章公司發(fā)起鑒書活動(dòng)。
簡單說就是:你可以免費(fèi)讀新書,你可以免費(fèi)讀新書的同時(shí),順手碼一篇讀書筆記就行。詳情請?jiān)诖髷?shù)據(jù)公眾號后臺對話框回復(fù)合伙人查看。
有話要說????
Q:?你的PyTorch設(shè)置好了嗎?
歡迎留言與大家分享
猜你想看????
-
天貓雙11、12306怎樣扛住流量高峰“集中轟炸”?一文全揭秘!
-
87萬人已開通5G套餐!8本書,給你劇透未來科技
-
PaaS、DevOps、OpenShift與業(yè)務(wù)中臺的實(shí)現(xiàn)
-
最后一個(gè)韓國人將在公元2750年死亡?人口學(xué)家:沒希望了
更多精彩????
在公眾號對話框輸入以下關(guān)鍵詞
查看更多優(yōu)質(zhì)內(nèi)容!
PPT?|?報(bào)告?|?讀書?|?書單?|?干貨?
大數(shù)據(jù)?|?揭秘?|?Python?|?可視化
AI?|?人工智能?|?5G?|?中臺
機(jī)器學(xué)習(xí)?|?深度學(xué)習(xí)?|?神經(jīng)網(wǎng)絡(luò)
合伙人?|?1024?|?段子?|?數(shù)學(xué)
?
覺得不錯(cuò),請把這篇文章分享給你的朋友
轉(zhuǎn)載 / 投稿請聯(lián)系:baiyu@hzbook.com
更多精彩,請?jiān)诤笈_點(diǎn)擊“歷史文章”查看
?
總結(jié)
以上是生活随笔為你收集整理的很火的深度学习框架PyTorch怎么用?手把手带你安装配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TIOBE 9 月编程语言:C++ 突起
- 下一篇: 为什么Flink会成为下一代大数据处理框