文章目录
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