CodaLab使用简介

最近在参加一个学术评测CMRC2018,提交系统需要用到CodaLab。去百度和Google发现少有关于codalab的使用说明,只好去看官方文档,简单总结了一下用法,为大家提供一些便利。
文章最后写了我在codalab上踩过的坑,大家注意绕坑哈!
我的邮箱:mark.skj@qq.com 请大家多多指导以及交流

1、注册Codalab账户

填写注册表单,然后注册就行,注册链接:codalab注册.

2、上传源程序

2.1、新建工作目录

注册完毕之后,登陆到系统中,系统会默认建立一个home工作目录。点击右上角的My Dashboard

新建一个Worksheet,名称可以根据实际情况填写

2. 2、设置工作目录权限(非必要操作)

上传的源代码默认是公众可见的,我们可以设置相应的权限防止源代码泄露,在上方点击命令行(下图所示),输入命令。

  • 设置某一用户组对当前worksheet的使用权限read
    我是对我参加评测的官方用户组:cmrc2018-official设置的权限为read,命令格式:
    cl wperm .+用户组+权限 具体命令如下:
    cl wperm . cmrc2018-official read
  • 设置public用户组(全体用户)对当前worksheet的权限为none
    cl wperm . public none
    此时右侧worksheet属性应显示如下:
2.3、 上传(删除)源程序到worksheet
2.3.1、上传

点击Upload,然后选择文件上传。可以单个文件上传,也可以打包成zip文件上传,打包必须得是zip格式,上传之后,系统会自动解压zip文件。

等待上传进度条完成,文件的state显示为ready,即为上传成功

点击文件,右下方contents为文件的内容。文件内容下方的host worksheets是包含此文件的所有目录。左上方uuid为文件的通用唯一识别码。

  • 在其它的worksheet共用这份文件
    在其它的worksheet使用命令:cl add bundle + 识别码(uuid[0:8]) . 即可添加此文件,共用一份文件。当然此共享文件的权限应做出相应设置。代码:
    cl add bundle 0xaecc222e5e764b5985734ba6b6fd3dd0 .
2.3.2、删除

右击文件,会出现三种状态

  • Remove bundle permanently: 彻底从账号删除

  • Detach from this worksheet: 从当前工作目录移除(文件还存在于账号空间中)

  • Add to my home worksheet: 添加到home工作目录
    注意:当操作的文件被其他程序或者工作目录占用时,是删除不了的,只能从当前目录移除,或者解除其他程序或者目录的占用后,再删除。

    也可以点击Edit source 编辑资源

3、运行源程序

3.1、运行环境配置

运行自己的源程序需要相应的环境,这就要用到Docker,网上关于Docker的介绍以及相关的东西就比较多了,大家自行去了解,后期打算再写一个关于docker的文章。

3.2、运行程序

运行程序有两种方式,这里推荐使用介绍的第一种(命令行方式)

  • 3.2.1、命令行方式
    格式:cl run + 需要调用的文件、文件夹名称 : 需要调用的文件、文件夹名称或文件的uuid[0:8] + '运行的命令'+一些请求
    请求例如:DockerImage、GPU、磁盘、运行时间等等。
    我的命令使用了main.py,config.py,data文件夹,然后python3运行config.py,并且使用我的DockerImage,并且申请一个GPU。命令如下:
    cl run main.py:main.py config.py:config.py data:data 'python3 config.py' --request-docker-image daocloud.io/markhu/nlp_sxu:master-aee1dc6 --request-gpus 1
    在运行命令中后面还可以加入以下命令:
    --request-docker-image为程序调用Docker环境镜像
    --request-gpus 1为程序申请一个GPU
    --request-disk 6g为程序申请6g磁盘空间(一个账号共有10g空间)
    --request-time 2d为程序申请2天的时间
    -n train 命名为train,等等以下metadata里面的都可以特别申请


需要调用的Docker镜像、GPU、磁盘空间等等也可以手动填写
手动填写申请

  • 3.2.2、New Run方式
    点击New Run 选择依赖文件、文件夹,输入命令,然后点击Run执行。
    同上需要调用的Docker镜像、GPU、磁盘空间等等也可以手动填写。

    运行状态常见包括以下几种:

  • created: 表示任务刚刚创建

  • preparing: 准备运行环境等依赖

  • staged: 正在排队

  • running: 正在正常运行

  • failed: 程序错误退出

  • ready: 程序运行完成
    如果出错,则根据stderr的输出对自己的程序进行调试。

3.3、结束源程序

选择程序右击会出现四个选择,前三个和文件的选择一样,第四个表示:

  • Kill this run bundle: 强行停止程序

4、一些命令(持续更新)

将程序生成的文件输出,格式:cl make + 程序名称 + / + 文件在程序内容(contents)中的地址 + -n + 输出的文件命名
例如我要输出train程序里面answer文件夹里面的report.json文件,并且命名为oupri.json
cl make train/answer/report.json -n oupri.json

我跳的坑(持续更新)

  • Docker环境配置不好,会出现好多未知错误的,在docker配置文章里再细说。
  • codalab提供的一个M60 GPU的显存大概7.5G,我用的服务器一个GPU显存12G,这样如果数据量太大,需要改变Batch size的值,一般建议不超过128,否则可能程序刚开始不会报错,但是跑了几个小时,跑到一半就会因为内存的原因failed。
  • 同样考虑硬件的差异:训练机器学习模型,如果数据预处理用到了随机的部分比如:random,可要小心,random随机是和硬件是相关的,我在自己服务器上训练模型用的数据预处理文件的内容和codalab数据预处理生成的文件内容是不一样的,这样拿着线下训练好的模型用线上的数据去生成结果,会有很大差异的。
  • 不要在线上训练模型,在线下训练好模型,拿到线上去预测结果就行了。
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值