Codalab是一个用于复现深度学习研究的协作平台,由斯坦福大学和微软合作开发。其核心理念是在云端运行机器学习实验,像jupyter notebook一样在数字实验室中管理实验,同时可以发布实验的 worksheet 以便其他人可以复现实验结果。
Colab官网展示的三个步骤为:
上传文件:首先将代码和数据集文件上传至平台。
进行实验:运行代码,进行训练或者测试。
首先,我们需要现在Codalab上注册一个自己的账号。注册连接点这里:link。
填入个人信息后需要到邮箱进行验证激活账号。
接下来,我们根据官方文档教程https://codalab-worksheets.readthedocs.io/en/latest/examples/quickstart/ 来熟悉一下这个平台的使用。
首先,在服务器上新建一个conda环境来安装Codalab的本地环境。
这里,我首先新建了一个python环境并取名叫codalab,设置python版本为3.9.7
(base) jxqi@han-server-01:~$ conda create -n codalab python==3.9.7
Collecting package metadata (current_repodata.json): done
Solving environment: done
//------------
//------------略去中间输出
//------------
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate codalab
#
# To deactivate an active environment, use
#
# $ conda deactivate
(base) jxqi@han-server-01:~$ conda activate codalab
激活环境,然后,使用下述命令安装
pip install codalab -U
安装完成后,输入以下命令进行登录。
(codalab) jiexing@jiexingdeMacBook-Pro ~ % cl work
\
Welcome to the CodaLab CLI!
\
Your CodaLab configuration and state will be stored in: /Users/jiexing/.codalab
\
Requesting access at https://worksheets.codalab.org
Username: jxqi
Password:
Currently on worksheet: https://worksheets.codalab.org/worksheets/0x05454fab67ff46e2a5e5850d70ebd348 (home-jxqi)
cl work
命令的意思就是切换工作表(worksheet),默认的工作表指向主页工作表 (home-<username>
)。
这里有一个比较坑的点是我用实验室服务器无论怎么设置都无法正常连接。以上命令是在我的MacBook Pro上才运行成功的。后来又试了不是我们实验室的服务器,也正常。这个问题比较奇怪,以后有时间再详细探究。
这里,我们以官方提供的github repo作为示例来上传文件。
首先,将该repo进行clone。
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study$ git clone https://github.com/codalab/worksheets-examples.git
Cloning into 'worksheets-examples'...
remote: Enumerating objects: 336, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 336 (delta 0), reused 8 (delta 0), pack-reused 325
Receiving objects: 100% (336/336), 6.28 MiB | 33.66 MiB/s, done.
Resolving deltas: 100% (139/139), done.
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study$ ls
worksheets-examples
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study$ cd worksheets-examples/
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study/worksheets-examples$ ls
00-quickstart 01-nli README.md
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study/worksheets-examples$ cd 00-quickstart/
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study/worksheets-examples/00-quickstart$ ls
code data README.md
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study/worksheets-examples/00-quickstart$ cat data/lines.txt
e
d
c
b
a
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study/worksheets-examples/00-quickstart$ cat code/sort.py
import sys
for line in sorted(sys.stdin.readlines()):
print line,
接着,我们使用cl upload命令上传文件和代码。
(codalab) protago@Alienware008AMD8647567023:~/jxqi/codalab_study/worksheets-examples/00-quickstart$ cl upload data
Preparing upload archive...
Uploading data.tar.gz (0xb99596ebaec44f2fb124506dacf9ccce) to https://worksheets.codalab.org
Sent 0.00MiB [0.00MiB/sec]
0xb99596ebaec44f2fb124506dacf9ccce
在网页上进行刷新,可以看到代码和数据文件夹已经上传好了。
首先确保已经进入到了worksheets-examples/00-quickstart这个目录下,
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study$ ls
worksheets-examples
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study$ cd worksheets-examples/
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study/worksheets-examples$ ls
00-quickstart 01-nli README.md
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study/worksheets-examples$ cd 00-quickstart/
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study/worksheets-examples/00-quickstart$ ls
code data README.md
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study/worksheets-examples/00-quickstart$ cl run :data :code 'python code/sort.py < data/lines.txt'
0xf8519125dc2a4a3bb335a9b83b912f7b
(codalab) protago@Alienware007AMD8647613679:~/jxqi/codalab_study/worksheets-examples/00-quickstart$
注意:因为原代码是python2格式的,print会报错,所以需要修改一下code中的代码。修改内容为:
import sys
for line in sorted(sys.stdin.readlines()):
print(line)
在这个命令中,:data
?和:code
指定了具体的依赖,当CodaLab执行命令时,它将把这两个依赖单独作为bundle,且当前命令运行成功后,将输出唯一的bundle id。bundle 的名字就是你上传的文件/目录的名字,可以加 -n 参数来修改。
后面?python code/sort.py < data/lines.txt
则是要运行的代码。运行时,平台会自动将?data
和code
对应的 bundle 挂载过来,作为本次运行的依赖。