窮學(xué)生學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)一定體會(huì)過“等待”的痛苦。畸裳。箱靴。
循環(huán)一次epoch急死人,但是有幾十個(gè)上百個(gè)循環(huán)等著你!
你盯著屏幕看著進(jìn)度條像蝸牛一樣推進(jìn),真是恨鐵不成鋼著拭,心想等日后發(fā)達(dá)了一定要買一臺(tái)好電腦...
只能先干干其他的事兒纱扭,但是心里又不放心,總是會(huì)來看儡遮,結(jié)果還是沒訓(xùn)練完乳蛾,算了,正事兒是干不了了,刷刷手機(jī)吧~... ...(半小時(shí)過去)
終于訓(xùn)練完啦肃叶!看看結(jié)果:
woc...@#$&&**&苦逼地重新訓(xùn)練一次....o(╥﹏╥)o
前幾天看網(wǎng)上說Google推出了免費(fèi)的GPU專門給機(jī)器學(xué)習(xí)的窮孩子們用蹂随!頓時(shí)讓我激動(dòng)了起來,馬上去試用了一下因惭。(哦岳锁,自備梯子...)
參考教程:
Google Colab Free GPU Tutorial
薅資本主義羊毛,用Google免費(fèi)GPU
但是因?yàn)樽约旱捻?xiàng)目跟教程中的不太一樣蹦魔,有一些細(xì)節(jié)沒有說清楚激率,查了很多資料終于解決,決定這里把我自己的使用過程記錄下來:
Google Colaboratory
直接Google一下:
點(diǎn)擊進(jìn)去看看:
發(fā)現(xiàn)是Colaboratory的簡介勿决,里面附有一些簡單的代碼告訴你怎么使用這個(gè)玩意兒乒躺。你會(huì)發(fā)現(xiàn)它跟Jupyternotebook很像,因?yàn)樗褪窃趈upyter notebook基礎(chǔ)上開發(fā)的:
所以很好理解低缩,Google給你準(zhǔn)備了一個(gè)云端的jupyter notebook嘉冒,你把你的代碼搬過來,在云端運(yùn)行你的代碼咆繁,耗費(fèi)的不是你自己電腦的計(jì)算力健爬,而是Google Colaboratory的計(jì)算力,而Google Colaboratory配備了Tesla K80 GPU么介!這可是貴族用的玩意兒呀娜遵,哎呀撿著大便宜了!
但是這個(gè)GPU不是默認(rèn)開啟的壤短,需要你設(shè)置一下notebook设拟,很簡單:
點(diǎn)擊筆記本上的“修改(edit)-->筆記本設(shè)置(notebook setting)”:
就出現(xiàn)了下面的窗口,在“硬件加速器”中選擇“GPU”即可:
吼吼久脯,就好了纳胧!
上面介紹的是Colaboratory的簡單使用和怎么開啟GPU,下面介紹怎么把本地的項(xiàng)目放到云端運(yùn)行:
Google drive+Colaboratory 運(yùn)行你的項(xiàng)目
Google Colaboratory是基于Google云端硬盤(drive)的帘撰,你的所有代碼文件都會(huì)保存在Google Drive中跑慕,所有我們首先需要Google drive。
先說說我自己的是什么項(xiàng)目吧:
我在本地的notebook中有這樣的一個(gè)做“神經(jīng)網(wǎng)絡(luò)風(fēng)格遷移(neural style transfer)”的項(xiàng)目摧找,目錄如下:
.ipynb就是我的jupyter notebook文件核行,
imagenet-vgg-verydeep-19是我下載的VGG神經(jīng)網(wǎng)絡(luò)模型,
nst_utils.py里面有一些功能函數(shù),也需要在.ipynb中調(diào)用蹬耘。
什么是neural style transfer呢芝雪?就是做這個(gè):
這個(gè)神經(jīng)網(wǎng)絡(luò)跑起來可是相當(dāng)費(fèi)時(shí)的,我自己的電腦综苔,生成一個(gè)400×300大小的圖片惩系,跑200個(gè)epoch需要30分鐘位岔!所以雖然這個(gè)項(xiàng)目很激動(dòng)人心,但是等一次結(jié)果真的很急人堡牡!
好了抒抬,現(xiàn)在我們開始把這個(gè)本地項(xiàng)目轉(zhuǎn)移到Google drive上,并通過Colaboratory來運(yùn)行N畋:
1.把文件夾上傳到Google drive
圖中的NST文件夾就是我上傳的瞧剖。目錄結(jié)構(gòu)跟我本地的一樣:
文件不能直接打開,但是Google drive里面有Colaboratory插件可免,可以打開.ipybn文件:
右鍵選擇打開方式:
我的這個(gè)文件里面抓于,需要import我的NST文件夾中的nst_utils.py文件,因?yàn)槔锩鎸懥撕芏嘀匾瘮?shù)浇借,但運(yùn)行一下程序捉撮,肯定會(huì)報(bào)錯(cuò),說找不到nst_utils.py文件妇垢。
為啥呢巾遭?因?yàn)镃olaboratory并沒有關(guān)聯(lián)你的Google drive!所以闯估,接著設(shè)置:
2.安裝必要的庫灼舍,授權(quán),連接你的Google drive
這個(gè)Colaboratory很牛逼的一點(diǎn)就是涨薪,它不光是一個(gè)notebook骑素,還可以當(dāng)命令行用!
我們在所有代碼前面刚夺,加一個(gè)單元格献丑,粘貼如下命令:
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
運(yùn)行!你應(yīng)該看到類似下面這種結(jié)果:
點(diǎn)擊結(jié)果里面的驗(yàn)證鏈接侠姑,會(huì)跳到一個(gè)網(wǎng)頁创橄,顯示一長串驗(yàn)證碼,
將驗(yàn)證碼復(fù)制粘貼到上面的框框中莽红,回車妥畏!
好了,然后再在一個(gè)新單元格中輸入下面命令:
!mkdir -p drive
!google-drive-ocamlfuse drive
再運(yùn)行安吁!就設(shè)置好了醉蚁!
這樣,Google drive就和Google Colaboratory連接好了柳畔,基本就可以像操作本地文件一樣來操作云端的代碼了馍管。
3.如何導(dǎo)入Google drive中的文件
現(xiàn)在如果直接寫:
from nst_utils import *
還是會(huì)報(bào)錯(cuò),說找不到薪韩!這個(gè)地方折磨了我好久确沸,不知道怎么回事兒。
后來發(fā)現(xiàn)俘陷,Colaboratory好像是單獨(dú)創(chuàng)建了一個(gè)虛擬機(jī)罗捎,在虛擬機(jī)中只有我運(yùn)行的ipybn文件,而沒有NST文件夾中的其他文件拉盾。
我們在前一步的設(shè)置桨菜,只是讓Colaboratory和drive連接了,也就是Colaboratory可以調(diào)用drive中的文件了捉偏,但是應(yīng)該通過類似絕對路徑的方式導(dǎo)入倒得,所以正確的方法應(yīng)該是寫:
from drive.NST.nst_utils import *
drive就是我們的根目錄,通過“ . ”來進(jìn)入下一層目錄夭禽,這樣就可以導(dǎo)入我們的drive文件了霞掺!
同樣的,后面我們需要導(dǎo)入NST文件夾中的imagenet-vgg-verydeep-19.mat文件讹躯,也就是我們的神經(jīng)網(wǎng)絡(luò)模型菩彬,這樣寫是錯(cuò)誤的:
model = load_vgg_model("imagenet-vgg-verydeep-19.mat")
正確的寫法是:
model = load_vgg_model("drive/NST/imagenet-vgg-verydeep-19.mat")
同樣的,只要是要導(dǎo)入drive中的文件潮梯,都按照類似的絕對路徑的方法來導(dǎo)入就可以了骗灶。
4.看看這個(gè)GPU效果如何
具體代碼就不展示了,只給大家看看模型運(yùn)行的結(jié)果:
運(yùn)行了200個(gè)epoch秉馏,共耗時(shí)46秒耙旦!
而我在本地運(yùn)行,花了30分鐘左右~
可見這個(gè)速度提升地多塊萝究!Google大法好啊~
下面附上每20次迭代的結(jié)果:
最開始的圖片是這兩張:
最后生成的圖片是:
好了,關(guān)于Colaboratory的使用就先介紹到這里糊肤,主要我目前只知道這么多琴昆。。馆揉。日后有新的經(jīng)驗(yàn)會(huì)繼續(xù)更新业舍!
8月1號(hào)更新:
這幾天在使用中發(fā)現(xiàn),掛載google drive的那兩段命令升酣,在每一次新建一個(gè)notebook時(shí)都需要運(yùn)行一次舷暮,所以大家可以把那兩段命令放在一個(gè)方便查看的地方,隨時(shí)復(fù)制粘貼噩茄。
而且下面,一個(gè)項(xiàng)目可能到了第二天就不能連接drive了,這個(gè)時(shí)候需要再運(yùn)行一下命令绩聘。反正我的項(xiàng)目都是第二天早上起來就需要重新連接drive了沥割。
所以還是稍微有些麻煩耗啦。。机杜。
另外帜讲,第一次運(yùn)行命令的時(shí)候,跳出來一個(gè)鏈接椒拗,點(diǎn)擊然后輸入驗(yàn)證碼之后似将,可能它又會(huì)跳出來一個(gè)一模一樣的鏈接,同時(shí)整個(gè)版面像被清空了一樣蚀苛,這個(gè)時(shí)候在验,只要再次點(diǎn)擊鏈接,再次輸入驗(yàn)證碼然后回車堵未,看到“Access token retrieved correctly.” 就說明可以了腋舌。
然后別忘了另起一行,運(yùn)行:
!mkdir -p drive
!google-drive-ocamlfuse drive
然后就可以連接drive了兴溜。
歡迎關(guān)注我的“深度學(xué)習(xí)”專欄:
DeepLearning.ai學(xué)習(xí)筆記
和我一起一步步學(xué)習(xí)深度學(xué)習(xí)吧侦厚!