使用谷歌的工具colaboratory可以在云端进行ML模型的训练,模型参数可以在云端保存、复用。(需要富强)
整体思路就是先把谷歌的云盘挂载到colab上,挂载以后切换到挂载的硬盘,再使用python将工作路径切换到你想要的文件夹,之后就可以在当前文件夹运行python,实现模型训练与保存。
1 挂载谷歌云盘
进入谷歌云端硬盘,在主页我的云端硬盘右键》更多》关联更多应用,搜索colaboratory(全拼)点击关联。
关联后如图:
点击colaboratory创建ipython文件:
- 先点击修改》笔记本设置》选择python3,GPU保存。
- 点击右边连接,连接到云服务器。可以看到分配的RAM和硬盘,每次运行都会重新分配,所以不要长时间无操作,不然下次重新分配需要再重新执行之前的程序。
点击代码在模块中复制下面代码:
!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}
执行一下,会有两次验证,需要分别点击提示链接,授权访问云盘,把授权码复制到提示框里就可以。
如图表示挂载完成:
2 指定云盘目录
使用 !ls 或者 !pwd 查看一下当前云盘路径,一般初始是随机分配的,自己输入代码指定drive作为起始。
!mkdir -p drive
!google-drive-ocamlfuse drive
指定完再 !ls 看一下。
3 切换到工作路径
运行前需要提前将所需要的数据文件上传到云盘文件夹内,然后使用 os 切换到文件所在路径。路径是自己在云盘里创建好的。
import os
os.chdir("/content/drive/colaboratory/ML")
切换后可以使用 !ls 看一下当前路径下的文件,是不是已经切换了。
4 运行py文件
工作路径切换完成后直接python xx.py即可运行上传到云端的文件。
如图:
5 尝试保存、复用模型
构建一个tensorflow模型的例子:
import tensorflow as tf
W = tf.Variable(tf.random_normal(shape=(1, 4), mean=100, stddev=0.5), name="W")
b = tf.Variable(tf.zeros([4]), name="b")
sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run([W, b])
sess.run(tf.assign_add(b, [1, 1, 1, 1]))
sess.run(b)
保存:(注意路径要存在)
saver = tf.train.Saver({'W': W, 'b': b})
saver.save(sess, '/content/drive/colaboratory/ML/TFout/test.ckpt', global_step=0)
断点续训复用:如果模型和路径都存在了,就直接读取已有模型。没有的话就保存当前的参数信息。
ckpt = tf.train.get_checkpoint_state('/content/drive/colaboratory/ML/TFout/')
if ckpt and ckpt.model_checkpoint_path:
saver.restore(sess,ckpt.model_checkpoint_path)
else:
saver.save(sess, '/content/drive/colaboratory/ML/TFout/test1.ckpt', global_step=0)
总结
Colaboratory是基于谷歌云端运行的,每次进入时会随机分配给你一个内存和硬盘,所以如果想在云端训练,就需要先把相关代码数据上传到谷歌云盘,然后每次运行都要把云端工程文件的路径挂载到随机分配的硬盘上去。然后才可以执行相关的程序,类似一个在云端的linux服务器,只不过命令行需要加 !,其他基本和linux系统下跑python程序一样。