最近,一直在自學深度學習。一邊學習理論,一遍學習編程。在做CNN的時候,手頭的筆記本電腦就喫不消了,運行的速度明顯跟不上。本來想買一臺帶好點的顯卡,可是調研了一下,帶NVIDIA 1080的差不多要1萬左右,更不用說更高的配置。
偶然發現百度雲裏面有一款用於服務深度學習者的產品:百度深度學習。
淺試了一下,個人感覺有以下幾個優點,值得用來進行深度學習的學習:
1. 上手容易。有幫助文檔,可以幫助新手入門。雖然不是很豐富,但是上手很容易。
2. 價格還算可以接受。因爲我只是新手,計算的任務僅限於測試一些案例和調試一些參數。而該產品是使用按量計費的,最便宜的配置5.16元/時(Nvidia K40),非常符合我的需求,用完即可釋放。
3. 系統鏡像已經預置了Tensorflow,keras等主流框架,非常方便。而且如果有缺少的包,也可自行安裝。
當然,也有不好的地方:
1. 每次用完釋放,無法保存鏡像,每次都要重新下載數據。
2. 用的是python2.7的版本。我筆記本上一直用的事Python3.5的版本。
以下,簡單描述一下使用過程(假設已經有百度雲賬號而且賬號裏面的餘額不少於100元):
1. 進入百度深度學習平臺(https://cloud.baidu.com/product/bdl.html)
2. 點擊“立即使用”
3. 點擊“創建集羣”
4. 輸入集羣名稱(隨便取)、輸入管理員密碼、選擇集羣鏡像、選擇配置
5. 點擊“下一步”,點擊“去支付”,隨即你就擁有了一個帶有Nvidia K40顯卡的計算機。
6. 進入管理控制檯,點擊集羣名稱,在基本信息裏面可以看到公網IP,可以通過該IP訪問該計算機。(該產品還自帶了Jupyter notebook,不過目前沒有太多的幫助文檔,試用了一下,目前好像不太好用),以下是集羣信息:
7. 打開“Putty”(或者其他類似功能的工具),輸入上述公網IP,輸入用戶名root,密碼(創建集羣時設置的密碼),即可登陸集羣。
8. 集羣中內置了3個domo,可以試一下,運行速度比筆記本快了很多。
接下來就是上傳自己的代碼、數據、運行,並下載運行結果。集羣是利用百度另一款產品,BOS實現數據的上傳和下載。這裏需要另外購買BOS,對於學習來說,BOS很便宜,是按照儲存的量來計費的。以下是1GB的費用,只要0.74801元/月
按照我的理解,集羣需要通過BOS作爲中轉來實現和本地的數據交換。也就是說,本地計算機需要上傳數據到BOS,然後集羣從BOS上下載數據;算完之後,需要將集羣上的數據上傳到BOS,然後本地電腦再從BOS上下載,稍微有點麻煩,希望以後能夠實現直接的上傳和下載。不過,因爲BOS和集羣屬於同一個內網,所以速度很快,可以達到20M/s。
以下,介紹BOS的創建:
1. 進入對象存儲:https://cloud.baidu.com/product/bos.html
2. 點擊“立即使用”
3. 點擊“新建Bucket”,輸入“Bucket名稱”,(該名稱是唯一的,可通過該名稱儲存,下載數據),區域和集羣一致,存儲類型選擇“標準”,讀寫權限選擇“公共讀寫”(我這裏主要是用來學習,讀數據的安全不是很重視,爲了方便,選擇“公共讀寫”)
4. 點擊“確定”,即可擁有一個類似硬盤的雲盤
5. 點擊你創建的“Bucket名稱”,即可進行文件的上傳
6. 這裏假設你上傳了文件cifar10_vgg16.zip文件,點擊獲取地址,即可獲得該文件的地址file_address(指文件地址)
7. 在Putty中輸入wget file_address,即可從BOS中下載該文件到深度學習平臺
以上介紹了文件的上傳,即從本地上傳到BOS,集羣再從BOS中下載。反過來的過程,即從集羣上傳文件到BOS,需要使用BOS CLI,
1. 從以下地址下載BOS CLI安裝包https://cloud.baidu.com/doc/Downloadcenter/CLI.html
2. 通過上述步驟將該安裝包從本地上傳到BOS,然後從BOS下載到集羣
3. 在Putty中解壓安裝包、安裝
$ unzip bce-cli-0.10.8.zip
$ cd bce-cli-0.10.8
$ python setup.py install
4. 安裝完之後,就可以把集羣中的文件上傳到BOS,這裏假設你要上傳mnist.py
bce bos cp mnist.py bos:/mybucket/mnist.py
(這裏mybucket要換成你剛纔創建的Bucket名稱)
這樣,就可以實現代碼、數據在集羣和本地電腦上的上傳和下載,就可以愉快地進行深度學習了。
以下,通過vgg16神經網絡分類cifar10數據集對比一下,我破爛的筆記本電腦(ThinkPad E430c)和帶一個Nvidia K40集羣的速度:
ThinkPad E430C | 8.8examples/sec |
Nvidia K40 | 460examples/sec |
用完之後,要記得點擊“釋放”,這樣集羣就自動刪除了,然後百度會根據的用的時間進行計費。
不好的事,集羣釋放之後,你計算的結果,上傳的數據就跟着消失了(BOS中的數據不會消失)。等下一次你要算的時候,就要從頭開始,不過每次創建的時間也不會太長,估計在3分鐘左右,也可以接受。