如何使用google drive的免費GPU進行深度學習
最近想玩一玩深度學習,需要訓練一些 yolo 之類的網路進行物件檢測,苦於我的本子沒有獨顯又沒有實驗室的機器給用,想起之前看到的 google 提供免費 GPU 用來學習的訊息,就嘗試一下。
利用Jupyter Notebook測試Google Drive的GPU
首先登入 Google Drive:https://drive.google.com。訪問 google 需要一些不可描述的操作,此處不描述。
在左側選擇 新建-更多-Colaboratory,如果沒有就選擇“關聯更多應用”並搜尋新增 Colaboratory。
關聯更多應用:
新建-更多-Colaboratory:
然後會新彈出一個標籤頁。
點選這裡,可以對筆記本重新命名
啟動GPU
點選 修改-筆記本設定,在彈出框內 硬體加速器選擇GPU並儲存,即可啟用 GPU。
在方格內可以寫 python 語句,也可以寫以!開頭的 linux 命令:
tf.test.gpu_device_name() 的輸出為 ‘/device:GPU:0’ 即已使用 GPU 加速。可以看到 google 提供的顯示卡是 Telsa K80,挺不錯。
*注意,由於 cd 命令應當被實現為 shell 內建命令,而此處並不是 shell,輸入的命令大概是 fork 子程序執行的形式,因此在這裡使用 cd 命令無法改變當前 pwd。如何切換工作目錄後文會講到。
執行一個Google Drive裡的專案
一個 py 指令碼檔案只能做一些微不足道的小事,而更多的時候我們需要執行一整個專案得到想要的結果。這就需要把 google drive 裡的檔案掛載到 notebook 的伺服器中供我們訪問。
掛載 Google Drive
首先把整個專案工程上傳到 Google Drive 中,然後在該專案資料夾下(執行的主函式檔案同一目錄)新建一個 run.ipynb。新建方法與之前一樣,在專案資料夾中 右鍵-更多-Colaboratory。
然後,在新建的筆記本中掛載 Google Drive:
from google.colab import drive
drive.mount('/content/drive/')
- 1
- 2
執行以上語句後,會出現一個連結。點選連結,獲取並鍵入 authorization code,回車,等待圈圈轉完就能在左側重新整理,看到掛載的Drive
掛載 Drive 網上還有另一種方法,語句很多很複雜,但這個好像沒啥區別。。
對於這個伺服器而言,整體目錄結構是這樣的:
頂級目錄為 content,我們進入筆記本後無論筆記本在哪,當前工作目錄都是 /content。/content下預設有 sample_data 目錄,其中包括執行示例程式的一些必要資料檔案。我們的 Google Drive 作為一個 My Drive 資料夾掛載在 /content/drive 資料夾下。我的專案是“我的雲端硬碟”裡的一個tiny-yolo資料夾,因此我的專案的路徑應該為 /content/drive/My Drive/tiny-yolo。這裡大家試一試就明白了,比我說啥都快。
切換工作目錄
我的工程目錄結構大致為
tiny-yolo
|- data
|- model
|- util
train_yolo.py
run.ipynb
cd 命令在這裡不可用,因此需要用 python 語句切換工作目錄:
import os
os.chdir('/content/drive/My Drive/tiny-yolo')
os.getcwd()
- 1
- 2
- 3
具體路徑名取決於你的工程資料夾名字和主函式所處的位置。
執行專案
輸入語句並執行
!python3 train_yolo.py
- 1
然後它就會執行了。
注意事項
- 為了保證資源的合理分配,google 會按照一定機制將伺服器回收:它會一定時間後自動回收已連線但閒置的伺服器,和有執行程式碼但未連線的伺服器。所以想掛機跑程式碼,要保證與伺服器保持連線(不掉線),否則一早起來可能就會發現它被悄悄的回收了。稍微掉線個幾分鐘就連回去是沒什麼問題的。
- 在回收伺服器後,寫到 My Drive 以外其他資料夾下的檔案都將被刪除,下次再連線就是一臺嶄新的伺服器了。
- 掛載 Drive 後再向 Google Drive上傳檔案,同步到 notebook 那邊會有一定的延遲,大概等個幾秒鐘到半分鐘不等,多重新整理幾下就會出現了。刪除檔案也是。然而在刪除 a.py 後,如果沒等 notebook 那邊反應過來就重新再傳一個 a.py,notebook 那邊很可能就出現一個被重新命名的檔案 a(1).py。。難道是我姿勢不對??
- 有一次我上傳近 3000 張圖片作為訓練集到 Drive,上傳成功,但是 notebook 沒讀全,!ls “/content/drive/My Drive/tiny-yolo/data” | wc -l 看一眼花式少檔案,我也不知道為啥。。總是迷之過會 (hen) 兒 (jiu) 就好了。。搞得我也是很醉。
總的來說,這玩意兒還是很好用的,比我的筆記本訓練的快多了,可以說是我們缺乏資源的學生黨從淺度學習轉向深度學習的一大利器。
</div>