Kaggle上有免费供大家使用的GPU计算资源,本文教你如何使用它来训练自己的神经网络。

Kaggle是什么

Kaggle是一个数据建模和数据分析竞赛平台。企业和研究者可在其上发布数据,统计学者和数据挖掘专家可在其上进行竞赛以产生最好的模型。

Kaggle,你可以:

  1. 参加竞赛赢取奖金。Kaggle上会发布一些赛题,做的好会赢得奖金。

  2. 下载数据集。Kaggle上包含了众多的数据集供大家免费下载,常见的数据集都可以在上面找到。

  3. 学习别人的代码。类似GitHub,你可以在Kaggle上学习冠军的代码来强化数据科学技能。

  4. 免费使用计算资源。KaggleKernels功能允许你在浏览器编程、并通过服务器的GPU来加速你的计算。

  5. 讨论交流学习。Kaggle上有论坛交流功能,允许你与相同的爱好者一起交流学习。

  6. 学习PythonMLPandasDL等技能。Kaggle上提供了免费的微课给大家学习,供初学者快速入门学习。

本篇文章侧重点是第4条,教你如何将自己的代码丢到Kaggle上训练。

注意,Kaggle目前只支持PythonR两种编程语言。

Kernel硬件配置

GPU:Nvidia Tesla P100-PCIE-16GB 1.3285GHz

GPU连续使用时间:6h

CPU Frequency: 2.3GHz

RAM:14GB

Disk:5.2GB

使用教程

基本介绍

  1. 登陆Kaggle官网,注册账号并登陆。在Kaggle注册账号是免费的。

  2. 点击导航栏的Kernels

  1. 点击页面上部的New Kernel来创建一个新的Kernel。粗略地说Kernel就是一个代码的工程项目。

  1. 点击左边的Script来创建一个脚本。这个脚本就是你项目运行的主要文件。

  1. 顶部的标题栏的功能。

  1. 侧边状态栏的主要功能。Sessions显示资源占用状态,Versions显示版本管理,Draft Environment显示你上传数据(注意:上传后该区域只读,不能写),Settings显示设置(如GPU开关、包的管理)

  1. 底部状态栏功能。

用完Kernel建议点击类似电源键的按钮关闭Kernel哦(关闭后所有输出文件将会丢失)

  1. 代码输入窗口。它已预先帮你输入一些示例代码,可以删掉重写。

使用示例

我们以Tensorflow平台的YoloV3-Tiny模型在数据集VOC2007的训练为例,介绍如何使用Kaggle训练我们的模型,并保存结果,将模型下载到本地。

提示:Kaggle已经为我们准备好常用的环境了,无需我们从头搭建开发环境。一般直接用就好了。

文件准备

首先我们要在本地弄好相关文件,再上传到Kaggle上去。

本地的准备参考这篇:【AI实战】动手训练自己的目标检测模型(YOLO篇)

有关YOLO参考这篇:用YOLO实现目标检测

然后按照实际情况修改train.py的相关参数,例如将batch_size改成128epochs改小一点等等。

注意训练时间不能超过6个小时,否则Kaggle会自动关闭你的Kernel

并且Keras版的YOLO的标签文件与Darknet版的不同,标签文件要重新生成。然后执行:

复制

1
cat 2007_train.txt 2007_val.txt > train.txt

即我们使用验证集和训练集混合起来一起训练,最后替换下路径前缀。

但有以下几点要注意下:

  1. 上传后不能在线修改你上传的东西,只能删除该压缩包(删除方法见第三节:再次训练)后重新上传(如果数据量巨大,重新上传十分费时)。所以最好需要确保第一次上传的东西就没有问题,否则更改会比较繁琐。

  2. 上传时,建议是分别上传几样东西(分别压缩打包上传):

    • 模型的配置文件
    • 训练的数据文件
    • 模型.h5文件

上传方式:点击右侧白色的侧边状态栏中的+ Add Data按钮,在弹出的窗口中,点击右上角的Upload,然后选择文件去上传(只能上传单个文件,这就是为什么叫你打包压缩的原因)。

上传后,Kaggle会自动帮你解压缩,点击右边的文件树,点选其中的一个文件,会在左侧弹出白色的文件管理弹窗,弹窗的上端会显示该文件的路径:

点击中间的那个蓝色的按钮你可以复制路径到剪切板中。

当你上传了多个压缩包或文件时,路径的命名规则一般是这样的:

  • 对于上传了文件:../input/数据集的名字/上传的文件名字
  • 对于上传了压缩包:../input/数据集的名字/压缩包的名字/压缩包底下的路径
  1. 其中上述的 图片路径的.txt文件 不能单纯按照【AI实战】动手训练自己的目标检测模型(YOLO篇)来做,你要将路径替换成上述第二点描述的那样。因为你执行的主脚本文件并不是在你上传的东西里面,你需要使用类似../input/XXX/XXX的格式来调用你上传的东西。

  2. 对于脚本中的文件路径也是如此,类似于上述的第三点来做。否则会提示会找不到你上传的文件。实际上有关路径的一切东西都要按照上述的路径规则来做,否则就找不到文件。

  3. 如果提示import时找不到文件,这是因为你上传的包没有加入系统变量,那么你需要:

    复制

    1
    2
    3
    import sys
    kaggle_path_prefix = "../input/keras-yolov3tiny-voc2007/keras-yolo3/"
    sys.path.append(kaggle_path_prefix)

这里请根据你的实际情况修改上述kaggle_path_prefix的值。

这里kaggle_path_prefix目录下需要包含那个你刚刚上传的压缩包里名叫yolo3Python包的文件夹。

  1. 保存文件的路径请直接填写文件名,像这样:
复制

1
model.save_weights('trained_weights_final.h5')

这是因为input文件夹是只读的,且保存到其他地方去无法输出下载,你也找不到输出的文件。况且当Kernel关闭后你的一切东西就会丢失。

运行并提交

点击顶部标题栏亮起的蓝色Commit按钮,以运行全部代码并保存结果,最后它会保存你输出的文件。

如果允许的窗口不慎点没了,可以右侧的Versions中,点击:

重新弹出运行的窗口(除非你点了Cancel commit)。

运行完毕后,点击:

来打开Kernel页面。

如果你有输出文件,在左侧的:

点击Output就可以切换到输出的文件列表,然后就可以下载你输出的文件啦,选中你想要的模型下载即可。

如果运行出错,请点击上图所示的Log查看错误日志(有必要时点击Download Log按钮下载日志到本地),按照错误提示修复错误即可。

再次训练

只需将原本的模型文件数据集删除,然后再添加上传上去,再次Commit就好了。

删除数据集的步骤:

  1. 点击数据集旁边的那个红色的叉叉,将数据集从当前Kernel移除

  2. 点击自己的头像,进入My Profile页面,然后点击Datasets

  1. 然后点击Settings

  1. 最后点击Delete Dataset并确认即可

赏点钱吧(≧∇≦)ノ

打赏

在Kaggle免费使用GPU训练自己的神经网络的更多相关文章

  1. 如何免费使用GPU跑深度学习代码

    从事深度学习的研究者都知道,深度学习代码需要设计海量的数据,需要很大很大很大(重要的事情说三遍)的计算量,以至于CPU算不过来,需要通过GPU帮忙,但这必不意味着CPU的性能没GPU强,CPU是那种综 ...

  2. Pytorch多GPU训练

    Pytorch多GPU训练 临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练 原理 多卡训练的基本过程 首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batc ...

  3. 使用Deeplearning4j进行GPU训练时,出错的解决方法

    一.问题 使用deeplearning4j进行GPU训练时,可能会出现java.lang.UnsatisfiedLinkError: no jnicudnn in java.library.path错 ...

  4. tensorflow使用多个gpu训练

    关于多gpu训练,tf并没有给太多的学习资料,比较官方的只有:tensorflow-models/tutorials/image/cifar10/cifar10_multi_gpu_train.py ...

  5. Tensorflow检验GPU是否安装成功 及 使用GPU训练注意事项

    1. 已经安装cuda但是tensorflow仍然使用cpu加速的问题 电脑上同时安装了GPU和CPU版本的TensorFlow,本来想用下面代码测试一下GPU程序,但无奈老是没有调用GPU. imp ...

  6. 使用Keras进行多GPU训练 multi_gpu_model

    使用Keras训练具有多个GPU的深度神经网络(照片来源:Nor-Tech.com). 摘要 在今天的博客文章中,我们学习了如何使用多个GPU来训练基于Keras的深度神经网络. 使用多个GPU使我们 ...

  7. 『开发技术』GPU训练加速原理(附KerasGPU训练技巧)

    0.深入理解GPU训练加速原理 我们都知道用GPU可以加速神经神经网络训练(相较于CPU),具体的速度对比可以参看我之前写的速度对比博文: [深度应用]·主流深度学习硬件速度对比(CPU,GPU,TP ...

  8. 使用GPU训练TensorFlow模型

    查看GPU-ID CMD输入: nvidia-smi 观察到存在序号为0的GPU ID 观察到存在序号为0.1.2.3的GPU ID 在终端运行代码时指定GPU 如果电脑有多个GPU,Tensorfl ...

  9. Tensorflow 多gpu训练

    Tensorflow可在训练时制定占用那几个gpu,但如果想真正的使用多gpu训练,则需要手动去实现. 不知道tf2会不会改善一下. 具体参考:https://wizardforcel.gitbook ...

随机推荐

  1. mysql遇到时区问题的坑(Java解决方案)

    最近项目遇到一个坑,就是server和db之间存在时区问题,本人的db是utc时间, 可以使用代码设置时区来解决,本人这里使用joda三方包,joda蛮好用的,具体用法这里不做详细描述. 先引入pom ...

  2. Python爬虫的三种数据解析方式

    数据解析方式 - 正则 - xpath - bs4 数据解析的原理: 标签的定位 提取标签中存储的文本数据或者标签属性中存储的数据 正则 # 正则表达式 单字符: . : 除换行以外所有字符 [] : ...

  3. Python sorted 函数用法

    1.背景   在python中,通常需要使用排序函数.而对字典针对一个键值进行排序会经常使用到.记录sorted 函数的键值排序用法. 2.代码 data 一个list,list 中的元素由字典组成 ...

  4. 华为云和开源Istio运维管理对比样例应用部署

    前言 在公有云方面,华为云已经率先将 Istio 作为产品投入到公有云中进行商业应用中,保持和开源istio高度兼容,做了商业化的运维管理界面,同时进行了性能优化.这里我们做一次验证测试. Booki ...

  5. 题解 UVa11388

    题目大意 \(T\) 组数据,每组数据给定两个整数 \(G,L\),输出数对 \(x,y\) 满足 \(GCD(x,y)=G,LCM(x,y)=L\) 且 \(x\) 最小.若无解则输出 \(-1\) ...

  6. python爬虫——数据爬取和具体解析

    关于正则表达式的更多用法,可参考链接:https://blog.csdn.net/weixin_40040404/article/details/81027081 一.正则表达式: 1.常用正则匹配: ...

  7. shellshock溢出攻击

    实验背景 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,需要亲手重现攻击来理解该漏洞,并回答一些问题. 什么 ...

  8. placeholder这个属性 input

    input是一个很常见的标签,大家使用的也很常见,但是我在具体的工作中发现要想完美的使用这个标签还是任重而道远,下面是我碰到的几个问题. 1.我们在使用这个标签的时候会习惯的加上placeholder ...

  9. tcp三次握手和四次握手的理解

    三次握手:发生在建立tcp的时候 1.客户端:发送一个syn包给服务端(同步) 2.服务端:发送一个ack包再加一个syn包给客户端(应答+同步) 3.客户端:发送一个ack包给服务端(应答) 四次握 ...

  10. mysql在group by分组后查询第二条/第三条乃至每组中任意一条数据

    昨天老板让我查询项目中(众筹),没人刚发起感召后,前三笔钱的入账时间和金额,这把大哥整懵逼了,group by在某些方面是好使,但这次不能为我所用了,获取第一笔进账是简单,可以用group by 直接 ...