在Kaggle免费使用GPU训练自己的神经网络
Kaggle上有免费供大家使用的GPU计算资源,本文教你如何使用它来训练自己的神经网络。
Kaggle是什么
Kaggle
是一个数据建模和数据分析竞赛平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛以产生最好的模型。
在Kaggle
,你可以:
参加竞赛赢取奖金。
Kaggle
上会发布一些赛题,做的好会赢得奖金。下载数据集。
Kaggle
上包含了众多的数据集供大家免费下载,常见的数据集都可以在上面找到。学习别人的代码。类似
GitHub
,你可以在Kaggle
上学习冠军的代码来强化数据科学技能。免费使用计算资源。
Kaggle
的Kernels
功能允许你在浏览器编程、并通过服务器的GPU
来加速你的计算。讨论交流学习。
Kaggle
上有论坛交流功能,允许你与相同的爱好者一起交流学习。学习
Python
、ML
、Pandas
、DL
等技能。Kaggle
上提供了免费的微课给大家学习,供初学者快速入门学习。
本篇文章侧重点是第4
条,教你如何将自己的代码丢到Kaggle
上训练。
注意,Kaggle
目前只支持Python
和R
两种编程语言。
Kernel硬件配置
GPU
:Nvidia Tesla P100-PCIE-16GB 1.3285GHz
GPU连续使用时间
:6h
CPU Frequency
: 2.3GHz
RAM
:14GB
Disk
:5.2GB
使用教程
基本介绍
登陆
Kaggle
官网,注册账号并登陆。在Kaggle
注册账号是免费的。点击导航栏的
Kernels
- 点击页面上部的
New Kernel
来创建一个新的Kernel
。粗略地说Kernel
就是一个代码的工程项目。
- 点击左边的
Script
来创建一个脚本。这个脚本就是你项目运行的主要文件。
- 顶部的标题栏的功能。
- 侧边状态栏的主要功能。
Sessions
显示资源占用状态,Versions
显示版本管理,Draft Environment
显示你上传数据(注意:上传后该区域只读,不能写),Settings
显示设置(如GPU
开关、包的管理)
- 底部状态栏功能。
用完Kernel
建议点击类似电源键的按钮关闭Kernel
哦(关闭后所有输出文件将会丢失)
- 代码输入窗口。它已预先帮你输入一些示例代码,可以删掉重写。
使用示例
我们以Tensorflow
平台的YoloV3-Tiny
模型在数据集VOC2007
的训练为例,介绍如何使用Kaggle
训练我们的模型,并保存结果,将模型下载到本地。
提示:Kaggle
已经为我们准备好常用的环境了,无需我们从头搭建开发环境。一般直接用就好了。
文件准备
首先我们要在本地弄好相关文件,再上传到Kaggle
上去。
本地的准备参考这篇:【AI实战】动手训练自己的目标检测模型(YOLO篇)
有关YOLO
参考这篇:用YOLO实现目标检测
然后按照实际情况修改train.py
的相关参数,例如将batch_size
改成128
,epochs
改小一点等等。
注意训练时间不能超过6
个小时,否则Kaggle
会自动关闭你的Kernel
。
并且Keras
版的YOLO
的标签文件与Darknet
版的不同,标签文件要重新生成。然后执行:
1 |
cat 2007_train.txt 2007_val.txt > train.txt |
即我们使用验证集和训练集混合起来一起训练,最后替换下路径前缀。
但有以下几点要注意下:
上传后不能在线修改你上传的东西,只能删除该压缩包(删除方法见第三节:再次训练)后重新上传(如果数据量巨大,重新上传十分费时)。所以最好需要确保第一次上传的东西就没有问题,否则更改会比较繁琐。
上传时,建议是分别上传几样东西(分别压缩打包上传):
- 模型的配置文件
- 训练的数据文件
- 模型
.h5
文件
上传方式:点击右侧白色的侧边状态栏中的+ Add Data
按钮,在弹出的窗口中,点击右上角的Upload
,然后选择文件去上传(只能上传单个文件,这就是为什么叫你打包压缩的原因)。
上传后,Kaggle
会自动帮你解压缩,点击右边的文件树,点选其中的一个文件,会在左侧弹出白色的文件管理弹窗,弹窗的上端会显示该文件的路径:
点击中间的那个蓝色的按钮你可以复制路径到剪切板中。
当你上传了多个压缩包或文件时,路径的命名规则一般是这样的:
- 对于上传了文件:
../input/数据集的名字/上传的文件名字
- 对于上传了压缩包:
../input/数据集的名字/压缩包的名字/压缩包底下的路径
其中上述的
图片路径的
.txt文件
不能单纯按照【AI实战】动手训练自己的目标检测模型(YOLO篇)来做,你要将路径替换成上述第二点描述的那样。因为你执行的主脚本文件并不是在你上传的东西里面,你需要使用类似../input/XXX/XXX
的格式来调用你上传的东西。对于脚本中的文件路径也是如此,类似于上述的第三点来做。否则会提示会找不到你上传的文件。实际上有关路径的一切东西都要按照上述的路径规则来做,否则就找不到文件。
如果提示
import
时找不到文件,这是因为你上传的包没有加入系统变量,那么你需要:复制1
2
3import sys
kaggle_path_prefix = "../input/keras-yolov3tiny-voc2007/keras-yolo3/"
sys.path.append(kaggle_path_prefix)
这里请根据你的实际情况修改上述kaggle_path_prefix
的值。
这里kaggle_path_prefix
目录下需要包含那个你刚刚上传的压缩包里名叫yolo3
的Python
包的文件夹。
- 保存文件的路径请直接填写文件名,像这样:
1 |
model.save_weights('trained_weights_final.h5') |
这是因为input
文件夹是只读的,且保存到其他地方去无法输出下载,你也找不到输出的文件。况且当Kernel
关闭后你的一切东西就会丢失。
运行并提交
点击顶部标题栏亮起的蓝色Commit
按钮,以运行全部代码并保存结果,最后它会保存你输出的文件。
如果允许的窗口不慎点没了,可以右侧的Versions
中,点击:
重新弹出运行的窗口(除非你点了Cancel commit
)。
运行完毕后,点击:
来打开Kernel
页面。
如果你有输出文件,在左侧的:
点击Output
就可以切换到输出的文件列表,然后就可以下载你输出的文件啦,选中你想要的模型下载即可。
如果运行出错,请点击上图所示的Log
查看错误日志(有必要时点击Download Log
按钮下载日志到本地),按照错误提示修复错误即可。
再次训练
只需将原本的模型文件数据集删除,然后再添加上传上去,再次Commit
就好了。
删除数据集的步骤:
点击数据集旁边的那个红色的叉叉,将数据集从当前
Kernel
移除点击自己的头像,进入
My Profile
页面,然后点击Datasets
- 然后点击
Settings
- 最后点击
Delete Dataset
并确认即可
打赏
在Kaggle免费使用GPU训练自己的神经网络的更多相关文章
- 如何免费使用GPU跑深度学习代码
从事深度学习的研究者都知道,深度学习代码需要设计海量的数据,需要很大很大很大(重要的事情说三遍)的计算量,以至于CPU算不过来,需要通过GPU帮忙,但这必不意味着CPU的性能没GPU强,CPU是那种综 ...
- Pytorch多GPU训练
Pytorch多GPU训练 临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练 原理 多卡训练的基本过程 首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batc ...
- 使用Deeplearning4j进行GPU训练时,出错的解决方法
一.问题 使用deeplearning4j进行GPU训练时,可能会出现java.lang.UnsatisfiedLinkError: no jnicudnn in java.library.path错 ...
- tensorflow使用多个gpu训练
关于多gpu训练,tf并没有给太多的学习资料,比较官方的只有:tensorflow-models/tutorials/image/cifar10/cifar10_multi_gpu_train.py ...
- Tensorflow检验GPU是否安装成功 及 使用GPU训练注意事项
1. 已经安装cuda但是tensorflow仍然使用cpu加速的问题 电脑上同时安装了GPU和CPU版本的TensorFlow,本来想用下面代码测试一下GPU程序,但无奈老是没有调用GPU. imp ...
- 使用Keras进行多GPU训练 multi_gpu_model
使用Keras训练具有多个GPU的深度神经网络(照片来源:Nor-Tech.com). 摘要 在今天的博客文章中,我们学习了如何使用多个GPU来训练基于Keras的深度神经网络. 使用多个GPU使我们 ...
- 『开发技术』GPU训练加速原理(附KerasGPU训练技巧)
0.深入理解GPU训练加速原理 我们都知道用GPU可以加速神经神经网络训练(相较于CPU),具体的速度对比可以参看我之前写的速度对比博文: [深度应用]·主流深度学习硬件速度对比(CPU,GPU,TP ...
- 使用GPU训练TensorFlow模型
查看GPU-ID CMD输入: nvidia-smi 观察到存在序号为0的GPU ID 观察到存在序号为0.1.2.3的GPU ID 在终端运行代码时指定GPU 如果电脑有多个GPU,Tensorfl ...
- Tensorflow 多gpu训练
Tensorflow可在训练时制定占用那几个gpu,但如果想真正的使用多gpu训练,则需要手动去实现. 不知道tf2会不会改善一下. 具体参考:https://wizardforcel.gitbook ...
随机推荐
- mysql:[Err] 1068 - Multiple primary key defined
添加主键时,出现错误:[Err] 1068 - Multiple primary key defined #增加主键 ) not null; ; alter table my_test add pri ...
- ET·ci — 全自动软件测试调度(持续集成)平台
ET·ci 提供了编译-测试-发布解决方案,包括:自动提取配置库代码进行自动构建, 自动调度静态测试工具(如QAC)进行静态测试,自动调度单元测试工具(如Tessy)开展动态测试,自动 ...
- 版本控制Git研究二
经过好几周的工作忙碌,终于可以有时间静下心来学习东西了,做为崇尚技术的人来说,应该是最幸福的时光了,呵呵,当然也是宅神的表现啦,话不多说,继续git的学习,上次已经对git的一些概念进行了说明,具体可 ...
- 麻雀虽小,五脏俱全。基于Asp.net core + Sqlite 5分钟快速上手一个小项目
虽然该方法不会用在实际开发中,但该过程对于初学者还是非常友好的,真应了麻雀虽小,五脏俱全这句话了.好了不多废话了,直接开始!! 1.建立一个名为test的Asp.net core web应用程序 这一 ...
- 清除PLSQL Developer访问数据库连接的历史记录
1.C盘下 路径: C:\Users\JourneyOfFlower\AppData\Roaming\PLSQL Developer 12\Preferences\JourneyOfFlower\ J ...
- [转]Linux虚拟网络设备之tun/tap
转, 原文:https://segmentfault.com/a/1190000009249039 -------------------------------------------------- ...
- LGOJP4381 [IOI2008]Island
题目链接 https://www.luogu.org/problem/P4381 题解 基环树直径的板子.但是dfs会爆栈...所以最后改成了bfs.还是一个很考验码力的板子. 首先基环树的直径显然有 ...
- 扫雷小游戏PyQt5开发【附源代码】
也没啥可介绍哒,扫雷大家都玩过. 雷的分布算法也很简单,就是在雷地图(map:二维数组)中,随机放雷,然后这个雷的8个方位(上下左右.四个对角)的数字(非雷的标记.加一后不为雷的标记)都加一. 如何判 ...
- 一次完整的HTTP请求与响应
本篇介绍的是一次完成的http请求都经过了那些步骤,这些步骤相应的作用又是什么 1.在浏览器端输入网站的url地址 只有知道了一个网站的url地址才能访问到这个网站 2.浏览器查找缓存 浏览器会查找浏 ...
- 获取类范形的Class
public class Test<T>{ } Type genType = getClass().getGenericSuperclass(); Type[] params = ((Pa ...