美文网首页AI
CodaLab用法

CodaLab用法

作者: aimark | 来源:发表于2018-08-08 12:56 被阅读0次

    最近在参加一个学术评测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数据预处理生成的文件内容是不一样的,这样拿着线下训练好的模型用线上的数据去生成结果,会有很大差异的。
    • 不要在线上训练模型,在线下训练好模型,拿到线上去预测结果就行了。

    相关文章

      网友评论

        本文标题:CodaLab用法

        本文链接:https://www.haomeiwen.com/subject/adytbftx.html