文章目錄
Colab 配置
一步操作
!nvidia-smi
from google.colab import drive
drive.mount('/content/drive')
%cd "/content/drive/My Drive/Colab"
%ls
分步執行
新建Colab文件夾
這樣的話若是網絡不穩定或是使用時間到期,臨時文件仍然保存, 據說重連後可以繼續訓練?有待確認
新建ipynb文件
- 打開,即進入Colab
- 重命名
設置GPU, 查看參數
- 設置 GPU 加速:
修改 -> 筆記本設置
選擇GPU
- 運行命令, 查看分配的GPU參數:
Tesla K80
,CUDA 10.1
,RAM 12GB
!nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50 Driver Version: 418.67 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |
| N/A 49C P8 30W / 149W | 0MiB / 11441MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
掛載Google Drive
-
直接點擊左側欄中的文件, 選擇
裝載GOOGLE雲端硬盤
這時會出現如下的運行單元,Ctrl+Enter
運行即可from google.colab import drive drive.mount('/content/drive')
切換Colab目錄
%cd "/content/drive/My Drive/Colab"
%ls
設置斷線自動重連
打開瀏覽器F12,找到console將下面代碼粘貼到控制檯, 回車運行; 若刷新了頁面再重新執行一次. 參考原文
setInterval(()=>{
if(Array.from(document.getElementById("connect").children[0].children[2].innerHTML).splice(3,4).toString() === '重,新,連,接'){
document.getElementById("connect").children[0].children[2].click()
}
},1000)
出錯: 重啓Colab
!kill -9 -1
設置Colab字體
設置等寬字體, 縮進一致, 方便閱讀.
參考: How to change the font size in colab
- 安裝
advanced font setting
插件 - 設置字號爲14, 字體爲Consolas
MXNet-GPU 計算
安裝
!pip install mxnet-cu101
2019/11/22 更新: colab安裝mxnet-cu100導入出錯, 只能安裝匹配的101版本, 原因未知.
注意: 雖然顯示的CUDA是10.1, 但實測發現, mxnet只支持CUDA 10.0 , 否則安裝成功但import失敗. 可能是環境變量的問題? 設置 .bashrc
可能奏效? 但在Colab中還是直接用 mxnet-cu100
吧, 畢竟每次重連都需要重新安裝.
食用方法
PyTorch-GPU 計算
安裝
colab 環境已安裝PyTorch-GPU版本, 可直接食用.
import torch
from torch import nn
print(f"\n cuda is available: {torch.cuda.is_available()}",
f"\n device count : {torch.cuda.device_count()}",
f"\n device name : {torch.cuda.get_device_name(0)}",)
食用方法
- 可以創建時指定
device
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
x = torch.tensor([1, 2, 3], device=device)
# 輸出 tensor([1, 2, 3], device='cuda:0')
- 也可以創建後轉移到
cuda
y = torch.tensor([1, 2, 3]).cuda()
net = nn.Linear(3, 1).cuda()
下載數據集
!wget -O [filename] [url]
注意!!! 不要上傳大文件到drive,然後mount訓練,雲主機和drive並不在同一集羣內,訓練中讀取數據非常耗時!以下是我微調ResNet對FashionMNIST數據集的log截圖,GPU是Tesla K80. 可以看到每個Epoch基本要花費 24 min,1440 sec,效率低,沒有實用性。
而將數據集下載到雲主機上,同機讀取則會好很多
導入成功, 開始訓練
複製 測試代碼, 在單元格中直接運行. 運行結果如下, 每個epoch只需要 9 sec, 快得飛起!
Epoch 1/12
60000/60000 [==============================] - 17s 291us/step - loss: 0.2623 - acc: 0.9180 - val_loss: 0.0537 - val_acc: 0.9829
Epoch 2/12
60000/60000 [==============================] - 9s 147us/step - loss: 0.0883 - acc: 0.9736 - val_loss: 0.0397 - val_acc: 0.9860
Epoch 3/12
60000/60000 [==============================] - 9s 147us/step - loss: 0.0668 - acc: 0.9798 - val_loss: 0.0354 - val_acc: 0.9886
Epoch 4/12
60000/60000 [==============================] - 9s 147us/step - loss: 0.0542 - acc: 0.9835 - val_loss: 0.0351 - val_acc: 0.9881
Epoch 5/12
60000/60000 [==============================] - 9s 146us/step - loss: 0.0473 - acc: 0.9853 - val_loss: 0.0277 - val_acc: 0.9903
Epoch 6/12
60000/60000 [==============================] - 9s 146us/step - loss: 0.0414 - acc: 0.9875 - val_loss: 0.0276 - val_acc: 0.9914
Epoch 7/12
60000/60000 [==============================] - 9s 147us/step - loss: 0.0365 - acc: 0.9890 - val_loss: 0.0268 - val_acc: 0.9911
Epoch 8/12
60000/60000 [==============================] - 9s 146us/step - loss: 0.0335 - acc: 0.9894 - val_loss: 0.0249 - val_acc: 0.9919
Epoch 9/12
60000/60000 [==============================] - 9s 146us/step - loss: 0.0327 - acc: 0.9900 - val_loss: 0.0242 - val_acc: 0.9911
Epoch 10/12
60000/60000 [==============================] - 9s 146us/step - loss: 0.0299 - acc: 0.9909 - val_loss: 0.0258 - val_acc: 0.9911
Epoch 11/12
60000/60000 [==============================] - 9s 148us/step - loss: 0.0278 - acc: 0.9914 - val_loss: 0.0265 - val_acc: 0.9918
Epoch 12/12
60000/60000 [==============================] - 9s 147us/step - loss: 0.0263 - acc: 0.9918 - val_loss: 0.0259 - val_acc: 0.9912
Test loss: 0.025935380621160586
Test accuracy: 0.9912