遇到没GPU想训练模型的情况,CPU跑好久,可利用Kaggle的云GPU。
1、注册参考[1],其中,kaggle官网: 地址
2、进入主页,可用creat创建nootbook,之后可按正常jupyter的操作进行
3、上传数据
可利用Kaggle上的线上的数据集,如果想利用自己的数据来训练模型,需从本地上传
(1)右上方的Add data
(2)上传自己的数据集
点击upload a dataset,dataset取名,然后选择browse files上传文件。最好将文件压缩之后上传,这样比较快。上传压缩包后kaggle会自动解压。
上传完成之后点击Create,正在处理你的数据集时,不要点击别的地方。
运行下述代码可查看数据路径[4]
import os
for dirname, _, filenames in os.walk('/kaggle/input'):
for filename in filenames:
print(os.path.join(dirname, filename))
4、编写代码,训练
(1)上传的文件无法在kaggle上进行修改,需要copy到输出文件夹中,
上传文件的进度如果始终为0,则需要科学上网上传数据。
上传的文件会放置在\kaggle\input下,这个目录只能读,而/kaggle/working是放输出文件的,可读可写,但如果不点右上角的Save version,输出文件并不会保存。
将数据集和代码都压缩成一个zip文件,上传,kaggle会自动将其解压缩,从kaggle读取文件名,会发现少了.zip后缀。在上传数据集时,会让人输入一个名字,作为上传文件的上一层目录,文件名中的中划线会被省略,但是下滑线会自动转为中划线。为方便读写,可将上传到到input下的文件传一份到working目录下,使用shutil包[5]原文链接
import shutil
shutil.copytree(r'../input/trydata/image_classification-pytorch', r'./trydata')
使用python的pyautogui包来模拟鼠标操作,就可以刮着了,参考[6]Python 实现按键精灵的功能
因此,为了简单,直接在在notebook中重新写代码
(2)配置运行环境
在settings里配置环境:
(3)运行
直接运行
(4)离线运行
参考:地址
使用GPU训练模型过程中,出现了提示是否继续操作,紧接着就断了连接,里面的产生的数据都消失了,Kaggle如果长时间不动,会自己断掉,判断离开
如果训练模型需要很久,就要后台跑了,并且要保存训练出来的模型。
点击右上角的Save Version,给version取个名,注意选择Save & Run All
save保存。
左下角的活动会出现各个活动文件
5、下载输出结果
把训练的权值文件下载下来,可以直接点击权值文件并下载。
也可下载整个文件夹,但下载整个文件夹会很慢,参考博客[2]:压缩下载
直接在cell中运行此代码即可[2]
import os
import zipfile
import datetime
def file2zip(packagePath, zipPath):
'''
:param packagePath: 文件夹路径
:param zipPath: 压缩包路径
:return:
'''
zip = zipfile.ZipFile(zipPath, 'w', zipfile.ZIP_DEFLATED)
for path, dirNames, fileNames in os.walk(packagePath):
fpath = path.replace(packagePath, '')
for name in fileNames:
fullName = os.path.join(path, name)
name = fpath + '\\' + name
zip.write(fullName, name)
zip.close()
if __name__ == "__main__":
# 文件夹路径
packagePath = '/kaggle/working/'
zipPath = '/kaggle/working/output.zip'
if os.path.exists(zipPath):
os.remove(zipPath)
file2zip(packagePath, zipPath)
print("打包完成")
print(datetime.datetime.utcnow())
下载即可
下载完,可清空kaggle/working下指定文件夹 直接在cell中运行下面代码[2]
import shutil
import os
if __name__ == '__main__':
path = '/kaggle/working/model'
if os.path.exists(path):
shutil.rmtree(path)
print('删除完成')
else:
print('原本为空')
=============================================
更多基本介绍,可参考[7]在Kaggle免费使用GPU训练自己的神经网络
参考文献
[1]使用kaggle GPU跑自己的模型_10000hours的博客
[2]kaggle下载output中的文件
[3]利用kaggle提供的免费GPU完成卫星图片识别任务
[4]使用Kaggle训练模型并下载自己训练的模型
[5]kaggle上传代码包并运行
[6]Python 实现按键精灵的功能
[7]在Kaggle免费使用GPU训练自己的神经网络