最近在參加一個學術(shù)評測CMRC2018喧伞,提交系統(tǒng)需要用到CodaLab法挨。去百度和Google發(fā)現(xiàn)少有關(guān)于codalab的使用說明纳账,只好去看官方文檔吱涉,簡單總結(jié)了一下用法刹泄,為大家提供一些便利。
文章最后寫了我在codalab上踩過的坑怎爵,大家注意繞坑哈特石!
我的郵箱:mark.skj@qq.com 請大家多多指導以及交流
1、注冊Codalab賬戶
填寫注冊表單鳖链,然后注冊就行,注冊鏈接:codalab注冊.
2县匠、上傳源程序
2.1、新建工作目錄
注冊完畢之后撒轮,登陸到系統(tǒng)中乞旦,系統(tǒng)會默認建立一個home工作目錄。點擊右上角的My Dashboard
新建一個Worksheet题山,名稱可以根據(jù)實際情況填寫
2. 2兰粉、設(shè)置工作目錄權(quán)限(非必要操作)
上傳的源代碼默認是公眾可見的,我們可以設(shè)置相應的權(quán)限防止源代碼泄露顶瞳,在上方點擊命令行(下圖所示)玖姑,輸入命令。
-
設(shè)置某一用戶組對當前worksheet的使用權(quán)限r(nóng)ead慨菱。
我是對我參加評測的官方用戶組:cmrc2018-official設(shè)置的權(quán)限為read焰络,命令格式:
cl wperm .
+用戶組
+權(quán)限
具體命令如下:
cl wperm . cmrc2018-official read
-
設(shè)置public用戶組(全體用戶)對當前worksheet的權(quán)限為none。
cl wperm . public none
此時右側(cè)worksheet屬性應顯示如下:
2.3符喝、 上傳(刪除)源程序到worksheet
2.3.1闪彼、上傳
點擊Upload,然后選擇文件上傳∥吠螅可以單個文件上傳缴川,也可以打包成zip文件上傳,打包必須得是zip格式描馅,上傳之后把夸,系統(tǒng)會自動解壓zip文件。
等待上傳進度條完成铭污,文件的state顯示為ready恋日,即為上傳成功
點擊文件,右下方contents為文件的內(nèi)容嘹狞。文件內(nèi)容下方的host worksheets是包含此文件的所有目錄谚鄙。左上方uuid為文件的通用唯一識別碼。
-
在其它的worksheet共用這份文件
在其它的worksheet使用命令:cl add bundle
+識別碼(uuid[0:8]) .
即可添加此文件刁绒,共用一份文件闷营。當然此共享文件的權(quán)限應做出相應設(shè)置照捡。代碼:
cl add bundle 0xaecc222e5e764b5985734ba6b6fd3dd0 .
2.3.2籍琳、刪除
右擊文件,會出現(xiàn)三種狀態(tài)
Remove bundle permanently: 徹底從賬號刪除
Detach from this worksheet: 從當前工作目錄移除(文件還存在于賬號空間中)
-
Add to my home worksheet: 添加到home工作目錄
注意:當操作的文件被其他程序或者工作目錄占用時物遇,是刪除不了的嫂丙,只能從當前目錄移除娘赴,或者解除其他程序或者目錄的占用后,再刪除跟啤。
也可以點擊Edit source 編輯資源
3诽表、運行源程序
3.1、運行環(huán)境配置
運行自己的源程序需要相應的環(huán)境隅肥,這就要用到Docker竿奏,網(wǎng)上關(guān)于Docker的介紹以及相關(guān)的東西就比較多了,大家自行去了解腥放,后期打算再寫一個關(guān)于docker的文章泛啸。
3.2、運行程序
運行程序有兩種方式秃症,這里推薦使用介紹的第一種(命令行方式)
-
3.2.1候址、命令行方式
格式:cl run
+需要調(diào)用的文件、文件夾名稱 : 需要調(diào)用的文件种柑、文件夾名稱或文件的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
為程序調(diào)用Docker環(huán)境鏡像
--request-gpus 1
為程序申請一個GPU
--request-disk 6g
為程序申請6g磁盤空間(一個賬號共有10g空間)
--request-time 2d
為程序申請2天的時間
-n train
命名為train,等等以下metadata里面的都可以特別申請
需要調(diào)用的Docker鏡像患久、GPU椅寺、磁盤空間等等也可以手動填寫
-
3.2.2、New Run方式
點擊New Run 選擇依賴文件蒋失、文件夾返帕,輸入命令,然后點擊Run執(zhí)行篙挽。
同上需要調(diào)用的Docker鏡像荆萤、GPU、磁盤空間等等也可以手動填寫铣卡。
運行狀態(tài)常見包括以下幾種: created: 表示任務剛剛創(chuàng)建
preparing: 準備運行環(huán)境等依賴
staged: 正在排隊
running: 正在正常運行
failed: 程序錯誤退出
ready: 程序運行完成
如果出錯链韭,則根據(jù)stderr的輸出對自己的程序進行調(diào)試。
3.3煮落、結(jié)束源程序
選擇程序右擊會出現(xiàn)四個選擇敞峭,前三個和文件的選擇一樣,第四個表示:
- Kill this run bundle: 強行停止程序
4蝉仇、一些命令(持續(xù)更新)
將程序生成的文件輸出旋讹,格式:cl make
+ 程序名稱
+ /
+ 文件在程序內(nèi)容(contents)中的地址
+ -n
+ 輸出的文件命名
例如我要輸出train程序里面answer文件夾里面的report.json文件,并且命名為oupri.json
cl make train/answer/report.json -n oupri.json
我跳的坑(持續(xù)更新)
- Docker環(huán)境配置不好轿衔,會出現(xiàn)好多未知錯誤的沉迹,在docker配置文章里再細說。
- codalab提供的一個M60 GPU的顯存大概7.5G害驹,我用的服務器一個GPU顯存12G胚股,這樣如果數(shù)據(jù)量太大,需要改變Batch size的值裙秋,一般建議不超過128琅拌,否則可能程序剛開始不會報錯,但是跑了幾個小時摘刑,跑到一半就會因為內(nèi)存的原因failed进宝。
- 同樣考慮硬件的差異:訓練機器學習模型,如果數(shù)據(jù)預處理用到了隨機的部分比如:random枷恕,可要小心党晋,random隨機是和硬件是相關(guān)的,我在自己服務器上訓練模型用的數(shù)據(jù)預處理文件的內(nèi)容和codalab數(shù)據(jù)預處理生成的文件內(nèi)容是不一樣的,這樣拿著線下訓練好的模型用線上的數(shù)據(jù)去生成結(jié)果未玻,會有很大差異的灾而。
- 不要在線上訓練模型,在線下訓練好模型扳剿,拿到線上去預測結(jié)果就行了旁趟。