AI這個(gè)概念好像突然就火起來(lái)了,年初大比分戰(zhàn)勝李世石的AlphaGo成功的吸引了大量的關(guān)注鞠绰,但其實(shí)看看你的手機(jī)上的語(yǔ)音助手腰埂,相機(jī)上的人臉識(shí)別,今日頭條上幫你自動(dòng)篩選出來(lái)的新聞蜈膨,還有各大音樂(lè)軟件的歌曲“每日推薦”……形形色色的AI早已進(jìn)入我們生活的方方面面屿笼。深刻的影響了著我們牺荠,可以說(shuō),這是一個(gè)AI的時(shí)代刁卜。
其實(shí)早在2016 年 9 月志电,百度就開(kāi)源了PaddlePaddle深度學(xué)習(xí)框架,并且很快就吸引了很多來(lái)自百度外的參與者蛔趴。相信有不少同學(xué)曾經(jīng)有著對(duì)這款又新鮮又強(qiáng)大的深度學(xué)習(xí)框架蠢蠢欲動(dòng)挑辆,雖然有關(guān)PaddlePaddle的教程不太多,但百度官方就在PaddlePaddle的官網(wǎng)給出了一份詳細(xì)的教程孝情,包括其API和函數(shù)文檔鱼蝉。不過(guò)它仍然是有門檻的,尤其是對(duì)于對(duì)計(jì)算機(jī)及編程環(huán)境搭建了解不深的同學(xué)箫荡,可能看著頁(yè)面上憑空給出的代碼及操作陷入懵逼魁亦。
真正從零開(kāi)始,PaddlePaddle詳細(xì)安裝入門圖文教程羔挡!
而今天我要做的洁奈,就是帶著所有這些幾乎沒(méi)有編程基礎(chǔ)卻很想學(xué)習(xí)PaddlePaddle的同學(xué)跨過(guò)這道坎。告訴你們大家如何準(zhǔn)備好使用PaddlePaddle進(jìn)行編程所需的一切绞灼,以及如何看懂教程上的那些代碼所代表的含義利术,那么廢話不多說(shuō),我們馬上開(kāi)始低矮。
第一步印叁,找一臺(tái)計(jì)算機(jī)
首先,我們第一步要有一個(gè)計(jì)算設(shè)備军掂,俗話說(shuō)巧婦難為無(wú)米之炊轮蜕。你可以租用云服務(wù)器,當(dāng)然也可以利用你手上現(xiàn)有的計(jì)算機(jī)和服務(wù)器蝗锥。在這里為了使初始安裝環(huán)境純凈跃洛,我將申請(qǐng)一個(gè)百度云服務(wù)器。
我們進(jìn)入百度云官網(wǎng)玛追,在產(chǎn)品中選擇“云服務(wù)器BBC”税课。點(diǎn)擊購(gòu)買:
在購(gòu)買時(shí),云服務(wù)器類型選擇“GPU實(shí)例”痊剖,因?yàn)槠渌愋偷脑品?wù)器都沒(méi)有配置GPU韩玩。有時(shí)候“GPU實(shí)例”處于不可用狀態(tài),是因?yàn)樵摰貐^(qū)服務(wù)器已經(jīng)被租完陆馁,這就要在左上角選擇其他地區(qū)的服務(wù)器集群找颓,或者更換“可用區(qū)”:
我換到了蘇州的集群。下一步叮贩,在GPU型號(hào)的選擇上击狮,因?yàn)槔宵S的那個(gè)條款佛析,NVIDIA GeForce系列的GPU不允許用在商用深度學(xué)習(xí)領(lǐng)域,只能個(gè)人研究使用或者玩游戲彪蓬,所以目前只有4種可以選:P40寸莫、P4、K40和NVIDIA 深度學(xué)習(xí)開(kāi)發(fā)卡档冬。他們?cè)趨?shù)上有兩種差別膘茎,一個(gè)是計(jì)算能力,一個(gè)是緩顯存酷誓。例如:P4的單精度性能是5.5Tflops披坏,P40性能是12Tflops。因?yàn)樯疃葘W(xué)習(xí)主要使用單精度計(jì)算(其實(shí)除了天氣預(yù)測(cè)盐数,流體模擬棒拂,量子色動(dòng)力學(xué)等極端科研項(xiàng)目,用到的都是單精度或者半精度的運(yùn)算)玫氢,所以這個(gè)指標(biāo)在實(shí)際影響上在你訓(xùn)練時(shí)訓(xùn)練速度快慢的問(wèn)題帚屉。第二個(gè)差別就是GPU顯存,顯存問(wèn)題其實(shí)優(yōu)化的合理8G足夠用漾峡,優(yōu)化不合理涮阔,給你100G都會(huì)爆顯存。有的熱用了 CNN灰殴,你隨便做個(gè)內(nèi)積內(nèi)存就翻倍了肯定要炸的。
其他的一路默認(rèn)就可以掰邢,如果想用SSD牺陶,在存儲(chǔ)層面點(diǎn)擊“創(chuàng)建云磁盤”,選擇”SSD云磁盤“辣之,調(diào)整合適的容量就可以掰伸,之后會(huì)掛在在系統(tǒng)上:
如果你想要從外網(wǎng)訪問(wèn)這個(gè)服務(wù)器,要選擇“購(gòu)買彈性公網(wǎng)IP”怀估,實(shí)際就是給你的服務(wù)器分配一個(gè)公網(wǎng)IP狮鸭,不然的話你只能從管理頁(yè)面在網(wǎng)頁(yè)上使用VNC遠(yuǎn)程連接。
之后根據(jù)自己的實(shí)際情況填寫服務(wù)器登錄密碼和購(gòu)買時(shí)長(zhǎng)多搀。linux系統(tǒng)為root歧蕉,windows系統(tǒng)為Administrator。整體就是這個(gè)樣子:
付費(fèi)方式可以選預(yù)付費(fèi)和后付費(fèi)康铭,如果不是計(jì)算重度使用用戶惯退,使用后付費(fèi)會(huì)便宜很多,以為他是按照使用量計(jì)費(fèi)的从藤。
付費(fèi)完成后就可以在賬戶的“云服務(wù)器BCC-實(shí)例列表”里看到你的機(jī)器啦催跪。默認(rèn)名稱是一個(gè)內(nèi)部序號(hào)锁蠕,如果服務(wù)器多的話為了方便區(qū)分,可以在右邊的按鈕重新輸入名稱:
當(dāng)然荣倾,我們也可以在“監(jiān)控”頁(yè)面中找到服務(wù)器的IP地址,用XSHELL或者PUTTY等工具鏈接到服務(wù)器骑丸,在這用XSHELL演示一下:
連接:
接受并保存主機(jī)密鑰舌仍。Linux用戶名初始為root,建議使用root者娱,就是為了方便抡笼,不用經(jīng)常打sudo和輸入密碼:
正確輸入密碼后就連接到服務(wù)器的shell了:
這樣一臺(tái)可用的服務(wù)器就準(zhǔn)備好了。
如果使用的而是自己的機(jī)器的話黄鳍,請(qǐng)確保機(jī)器環(huán)境與以上一致
第二步:安裝前的準(zhǔn)備工作可以讓您安裝更暢快
拿到shell后第一步當(dāng)然是要換一個(gè)國(guó)內(nèi)的apt源推姻,我找了一個(gè)清華的源:
執(zhí)行如下操作,備份原文件后框沟,新建一個(gè)原文件:
# mv /etc/apt/sources.list /etc/apt/sources2.list
# vi /etc/apt/sources.list
使用i鍵進(jìn)入編輯模式藏古,然后將以下內(nèi)容使用shift+insert復(fù)制進(jìn)去:
#默認(rèn)注釋了源碼鏡像以提高 apt update 速度,如有需要可自行取消注釋
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
輸入后 按下esc忍燥,然后按下英文半角的冒號(hào)“:”拧晕,后輸入wq,回車梅垄,就保存了厂捞。
最后別忘了輸入apt-get update更新一下源文件
因?yàn)槟壳癙addlePaddle已經(jīng)兼容Python3各個(gè)版本,所以我們下載一個(gè)Python3.5版本的Python队丝。
我們直接用apt下載就可以 apt-get install python靡馁。但他默認(rèn)是2.7版本。安裝完成后進(jìn)入到了等待模式机久,輸入python可以看到是2.7版:
所以我們需要通過(guò)指定版本號(hào)方式來(lái)安裝
apt-get install python=3.5
當(dāng)然我們也可以通過(guò)源碼方式安裝python3.5
wget [https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz]
下載Python3.5后解壓該包:
tar -xvf Python-3.5.6.tgz
進(jìn)入該包:
cd Python-3.5.6.tgz
配置
./configure
編譯:
make
make install
安裝完畢
之后需要安裝Pip臭墨。Pip是python的一個(gè)包管理工具,可以用它方便地直接下載安裝python包膘盖。
輸入 apt-get install python3-pip 安裝胧弛,他會(huì)默認(rèn)安裝python3版本對(duì)應(yīng)的PIP管理器
安裝完成后,輸入pip -V來(lái)查看pip的版本
裝好pip后侠畔,首先先把numpy模塊裝好结缚,因?yàn)樗莗addlepaddle必備環(huán)境包
Pip install numpy
Pip默認(rèn)已經(jīng)用的是國(guó)外的源,那速度簡(jiǎn)直是再難软棺,我們臨時(shí)用清華源來(lái)安裝:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
安裝完成后掺冠,進(jìn)入python,輸入import numpy as py 若沒(méi)有報(bào)錯(cuò)則安裝成功。
下面進(jìn)入安裝PaddlePaddle階段德崭。
安裝PaddlePaddle有三種方式:
- 最簡(jiǎn)單的方式當(dāng)然是用pip包管理器安裝
- 編譯源碼安裝
- 在docker中安裝
1 :Pip安裝
1.1 用pip直接安裝可以拉取到最新的fluid1.2的cpu版本:
pip install paddlepaddle
1.2 安裝gpu版本前提是安裝了CUDA和cudnn斥黑,CUDA官方支持的是cuda9、cuda8和cuda7.5眉厨。Cuddn加速的話PaddlePaddle可以使用cudnn v2之后的任何一個(gè)版本來(lái)編譯運(yùn)行锌奴,但推薦使用它目前所支持的最高版本最新版本的cudnn7。所以目前官方推薦的環(huán)境為cuda9+cuDNN7:
pip install paddlepaddle-gpu
2:從源碼中編譯
編譯依賴:
PaddlePaddle編譯需要使用到下面的依賴(包含但不限于)憾股,其他的依賴軟件鹿蜀,會(huì)自動(dòng)在編譯時(shí)下載。
PaddlePaddle編譯依賴
|依賴 | 版本 | 說(shuō)明|
|CMake| >=3.5| |
|GCC | 4.8.2 |推薦使用CentOS的devtools2|
|Python| 2.7.x |依賴libpython2.7.so|
|pip |>=9.0 | |
|numpy |||
|SWIG| >=2.0||
|Go |>=1.8 |可選|
首先你要把源碼從github上下載下來(lái)服球,并且進(jìn)入paddle文件目錄
git clone https://github.com/PaddlePaddle/Paddle.git
cd Paddle #進(jìn)入paddle文件目錄
mkdir build #創(chuàng)建編譯文件夾
cd build #進(jìn)入編譯文件夾
cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF .. #不要看漏后面有兩個(gè)點(diǎn)茴恰,如果你安裝的而是GPU版本的話,如想要支持GPU斩熊,請(qǐng)?jiān)诰幾g參數(shù)DWITH_GPU設(shè)置為ON
以下是cmake -D參數(shù)支持的所有編譯選項(xiàng):
WITH_GPU 是否支持GPU往枣。 取決于是否尋找到CUDA工具鏈
WITH_DOUBLE 是否使用雙精度浮點(diǎn)數(shù)。 否
WITH_DSO 是否運(yùn)行時(shí)動(dòng)態(tài)加載CUDA動(dòng)態(tài)庫(kù)粉渠,而非靜態(tài)加載CUDA動(dòng)態(tài)庫(kù)分冈。 是
WITH_AVX 是否編譯含有AVX指令集的PaddlePaddle二進(jìn)制文件 是
WITH_PYTHON 是否內(nèi)嵌PYTHON解釋器。方便今后的嵌入式移植工作霸株。 是
WITH_STYLE_CHECK 是否編譯時(shí)進(jìn)行代碼風(fēng)格檢查 是
WITH_RDMA 是否開(kāi)啟RDMA 否
WITH_TIMER 是否開(kāi)啟計(jì)時(shí)功能雕沉。如果開(kāi)啟會(huì)導(dǎo)致運(yùn)行略慢,打印的日志變多去件,但是方便調(diào)試和測(cè)Benchmark 否
WITH_TESTING 是否開(kāi)啟單元測(cè)試 取決于是否尋找到GTEST
WITH_DOC 是否編譯中英文文檔 否
WITH_SWIG_PY 是否編譯PYTHON的SWIG接口坡椒,該接口可用于預(yù)測(cè)和定制化訓(xùn)練 取決于是否尋找到SWIG
make
編譯完成后會(huì)在build/python/dist目錄下生成輸出的whl包,可以選在在當(dāng)前機(jī)器安裝:
Make install
可以拷貝到目標(biāo)機(jī)器安裝:
pip install 目標(biāo)路徑/*.whl
如果之前機(jī)器上安裝了舊版本的paddle尤溜,可以利用編譯的二進(jìn)制包肠牲,使用-U參數(shù)來(lái)升級(jí)安裝:
pip install 目標(biāo)路徑/*.whl -U
3:在docker中安裝
百度把PaddlePaddle的編譯環(huán)境打包成一個(gè)鏡像,稱為開(kāi)發(fā)鏡像靴跛,里面涵蓋了 PaddlePaddle需要的所有編譯工具。把編譯出來(lái)的PaddlePaddle也打包成一個(gè)鏡 像渡嚣,稱為生產(chǎn)鏡像梢睛,里面涵蓋了PaddlePaddle運(yùn)行所需的所有環(huán)境。每次 PaddlePaddle發(fā)布新版本的時(shí)候都會(huì)發(fā)布對(duì)應(yīng)版本的生產(chǎn)鏡像以及開(kāi)發(fā)鏡像识椰。運(yùn) 行鏡像包括純CPU版本和GPU版本以及其對(duì)應(yīng)的非AVX版本绝葡。他們會(huì)在 dockerhub.com 提供最新 的Docker鏡像
使用Docker安裝和運(yùn)行PaddlePaddle可以無(wú)需考慮依賴環(huán)境即可運(yùn)行。并且也可以在Windows的docker中運(yùn)行腹鹉。 如果你不了解docker的安裝和基本操作藏畅,可以在這里http://docker-doc.readthedocs.io/zh_CN/latest/ 找到中文版的docker手冊(cè),找到你對(duì)應(yīng)的操作系統(tǒng)開(kāi)始學(xué)習(xí)使用docker。
在了解Docker的基本使用方法之后愉阎,即可開(kāi)始下面的步驟:
執(zhí)行下面的命令來(lái)下載PaddlePaddle的 Docker鏡像绞蹦,默認(rèn)是cpu出版本的:
docker pull paddlepaddle/paddle
但鏡像的默認(rèn)地址依舊是國(guó)外的,為了方便在國(guó)內(nèi)的開(kāi)發(fā)者下載Docker鏡像榜旦,百度提供了國(guó)內(nèi)的鏡像服務(wù)器供大家使用幽七。我們使用paddle提供的一個(gè)國(guó)內(nèi)的服務(wù)器下載:
docker pull docker.paddlepaddlehub.com/paddle
下載GPU版本(cuda9.0_cudnn7_avx_mkl)的Docker鏡像:
docker pull paddlepaddle/paddle:latest-gpu #默認(rèn)
docker pull docker.paddlepaddlehub.com/paddle:latest-gpu #推薦使用
下載使用不同的BLAS庫(kù)的Docker鏡像:
默認(rèn)是使用MKL的鏡像
docker pull paddlepaddle/paddle
使用OpenBLAS的鏡像
docker pull paddlepaddle/paddle:latest-openblas
下載指定版本的Docker鏡像,可以從 DockerHub網(wǎng)站 獲取可選的tag溅呢,并執(zhí)行下面的命令:
docker pull paddlepaddle/paddle:[tag]
比如:
docker pull docker.paddlepaddlehub.com/paddle:1.2-gpu
在Docker中執(zhí)行PaddlePaddle訓(xùn)練程序
運(yùn)行PaddlePaddle Book
Jupyter Notebook是一個(gè)開(kāi)源的web程序澡屡,大家可以通過(guò)它制作和分享帶有代碼、公式咐旧、圖表驶鹉、文字的交互式文檔。用戶可以通過(guò)網(wǎng)頁(yè)瀏覽文檔铣墨。
PaddlePaddle Book是為用戶和開(kāi)發(fā)者制作的一個(gè)交互式的Jupyter Nodebook室埋。 如果您想要更深入了解deep learning,PaddlePaddle Book一定是您最好的選擇踏兜。
我們提供可以直接運(yùn)行PaddlePaddle Book的Docker鏡像词顾,直接運(yùn)行:
docker run -p 8888:8888 paddlepaddle/book
然后在瀏覽器中輸入以下網(wǎng)址:
皆可打開(kāi)Jupyter Notebook客戶頁(yè)面
以上PaddlePaddle Fluid的三種安裝方式就介紹完成啦。
目前PaddlePaddle已經(jīng)更新到Fluid 1.2版本碱妆,在安裝覆蓋面上做了大量的優(yōu)化肉盹,不僅做到了業(yè)界首個(gè)官方支持CentOS操作系統(tǒng),并且支持了Windows 7/8/10疹尾,大家可以在個(gè)人PC上更便捷的玩轉(zhuǎn)PaddlePaddle上忍。
值得一提的是,最近官方上線了全中文API文檔:http://www.paddlepaddle.org/documentation/docs/zh/1.2/api_cn/index_cn.html纳本,現(xiàn)在看文檔的我明顯神清氣爽了很多窍蓝!