前幾天看網(wǎng)上說Google推出了免費(fèi)的GPU專門給機(jī)器學(xué)習(xí)的窮孩子們用!頓時(shí)讓我激動(dòng)了起來(lái),馬上去試用了一下。(哦,自備梯子...) 參考教程: 但是因?yàn)樽约旱捻?xiàng)目跟教程中的不太一樣,有一些細(xì)節(jié)沒有說清楚,查了很多資料終于解決,決定這里把我自己的使用過程記錄下來(lái): Google Colaboratory直接Google一下: 點(diǎn)擊進(jìn)去看看: 發(fā)現(xiàn)是Colaboratory的簡(jiǎn)介,里面附有一些簡(jiǎn)單的代碼告訴你怎么使用這個(gè)玩意兒。你會(huì)發(fā)現(xiàn)它跟Jupyternotebook很像,因?yàn)樗褪窃趈upyter notebook基礎(chǔ)上開發(fā)的: 所以很好理解,Google給你準(zhǔn)備了一個(gè)云端的jupyter notebook,你把你的代碼搬過來(lái),在云端運(yùn)行你的代碼,耗費(fèi)的不是你自己電腦的計(jì)算力,而是Google Colaboratory的計(jì)算力,而Google Colaboratory配備了Tesla K80 GPU!這可是貴族用的玩意兒呀,哎呀撿著大便宜了! 但是這個(gè)GPU不是默認(rèn)開啟的,需要你設(shè)置一下notebook,很簡(jiǎn)單: 點(diǎn)擊筆記本上的“修改(edit)-->筆記本設(shè)置(notebook setting)”: 就出現(xiàn)了下面的窗口,在“硬件加速器”中選擇“GPU”即可: 吼吼,就好了! 上面介紹的是Colaboratory的簡(jiǎn)單使用和怎么開啟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ò)跑起來(lái)可是相當(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來(lái)運(yùn)行!: 1.把文件夾上傳到Google drive圖中的NST文件夾就是我上傳的。目錄結(jié)構(gòu)跟我本地的一樣: image 文件不能直接打開,但是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.安裝必要的庫(kù),授權(quán),連接你的Google drive這個(gè)Colaboratory很牛逼的一點(diǎn)就是,它不光是一個(gè)notebook,還可以當(dāng)命令行用! 我們?cè)谒写a前面,加一個(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è),顯示一長(zhǎng)串驗(yàn)證碼, 將驗(yàn)證碼復(fù)制粘貼到上面的框框中,回車! 好了,然后再在一個(gè)新單元格中輸入下面命令: !mkdir -p drive !google-drive-ocamlfuse drive 再運(yùn)行!就設(shè)置好了! 這樣,Google drive就和Google Colaboratory連接好了,基本就可以像操作本地文件一樣來(lái)操作云端的代碼了。 3.如何導(dǎo)入Google drive中的文件現(xiàn)在如果直接寫: from nst_utils import * 還是會(huì)報(bào)錯(cuò),說找不到!這個(gè)地方折磨了我好久,不知道怎么回事兒。 后來(lái)發(fā)現(xiàn),Colaboratory好像是單獨(dú)創(chuàng)建了一個(gè)虛擬機(jī),在虛擬機(jī)中只有我運(yùn)行的ipybn文件,而沒有NST文件夾中的其他文件。 from drive.NST.nst_utils import * drive就是我們的根目錄,通過“ . ”來(lái)進(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中的文件,都按照類似的絕對(duì)路徑的方法來(lái)導(dǎo)入就可以了。 4.看看這個(gè)GPU效果如何具體代碼就不展示了,只給大家看看模型運(yùn)行的結(jié)果: 運(yùn)行了200個(gè)epoch,共耗時(shí)46秒! 而我在本地運(yùn)行,花了30分鐘左右~ 可見這個(gè)速度提升地多塊!Google大法好啊~ 下面附上每20次迭代的結(jié)果: 最開始的圖片是這兩張: 左邊是陸家嘴照片,右邊是現(xiàn)代派風(fēng)格圖片 最后生成的圖片是: 現(xiàn)代派風(fēng)格的陸家嘴 好了,關(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)目都是第二天早上起來(lái)就需要重新連接drive了。 另外,第一次運(yùn)行命令的時(shí)候,跳出來(lái)一個(gè)鏈接,點(diǎn)擊然后輸入驗(yàn)證碼之后,可能它又會(huì)跳出來(lái)一個(gè)一模一樣的鏈接,同時(shí)整個(gè)版面像被清空了一樣,這個(gè)時(shí)候,只要再次點(diǎn)擊鏈接,再次輸入驗(yàn)證碼然后回車,看到“Access token retrieved correctly.” 就說明可以了。 !mkdir -p drive !google-drive-ocamlfuse drive 然后就可以連接drive了。 |
|
來(lái)自: 松果仁圖書館 > 《環(huán)境調(diào)試》