实验室服务器使用说明
严禁使用简单密码,一旦因简单密码被挟持,永久失去使用权。
一、独立服务器
实验室大部分GPU服务器为4卡、8卡的GPU(以2080Ti,RTX Titan,Titan Xp为主要型号)服务器。默认所有研究生每人配备一台2卡的工作站用于日常工作。其次,对参与正在进行的具体科研任务的研究生,原则上每人配备一台独立的4卡或者8卡服务器。这些服务器的分配相对比较稳定,研究生在读期间基本上保持不变。关于这种机器的采购,之前分享了一个经验:深度学习训练服务器采购。
二、共享集群
共享集群访问网址:64块V100: http://10.137.144.40/、400块3090集群: http://10.134.2.31/
为了处理大型计算任务,实验室采购了8台8*V100的服务器,并通过集群管理软件进行管理(软件管理平台及其使用方法请参考思腾合力官网文档)。共享集群主要为了方便多机多卡任务使用,即满足同时使用8*n个卡的大型计算需求。数据访问经常是GPU利用率的主要瓶颈。GPU的算力经常因为等待数据就位而空转。我们通过硬件方式解决存储访问速度、容量、可靠性的问题:
- 大内存:每个计算节点配备512GB内存,远大于ImageNet这样的大数据集100多GB的大小。建议数据尽量存储在内存中,避免反复读取硬盘造成的延时。另外,也可以考虑通过内存虚拟硬盘的方式。内存的速度是各种形式的硬盘所无法比拟的,建议充分利用。
- 并发SSD:数据服务器上配备了10路并发的SSD,与GPU计算节点、管理服务器利用100Gb/s的InfiniBand超高速网络连接(比单块SSD读写速度快10多倍)。为了不让硬盘读写速度限制高速网络带宽的发挥,我们采用10路并发(RAID 0)的SSD硬盘作为快速存储硬盘。10路并发SSD的最大优势是速度快,缺点是可靠性没有普通SSD高。因此,不建议长期存放重要数据。
- 大容量HDD:数据服务器上也配备了14块*10TB的机械硬盘,组RAID 5,以满足大量数据的长期可靠存放。
小故事:2020年6月份左右的时候,Nvidia推出了一批Tesla V100 16G显卡,单价6000多元!!当时我觉得很难得的机会,Nvidia肯在垄断的情况下降低自己利润率,不狠宰高校用户。当时把自己所有经费中可以用做设备费的都梭哈了,招标采购8台8卡V100。由于太了解学校的采购效率,没敢太宣传。本来计划招标采购基本没悬念了再告诉朋友们,结果在暑假中各种催促行政部门,终于在2个月后完成了招标。开标前就有2家原来很主动的厂商说想退出投标。还好思腾合力的销售说既然他们当时报价了,就按照报价供货,可以参与投标。另外两家在我的要求下,也去投标了,不过压根不想中标。好在最后买下来了,最近看京东上已经4.5万了(涨价了7倍多)。在此呼吁大家多支持国产平台。硬件方面,华为昇腾910芯片也能训练不少深度学习模型;软件方面,清华的Jittor平台可以通过自动工具把PyTorch转化为Jittor代码,并由于设计机理的创新,拥有比PyTorch更高的执行效率。近期Jittor也和华为及寒武纪的硬件积极攻关,进展喜人。我们最近2年发表的10篇PAMI论文和其他顶级会议论文也都开源了Jittor代码。真心希望国产软硬件平台能尽快崛起,帮助大家摆脱被狠宰的命运。目前华人在AI领域顶级期刊会议上的一作论文超过了包括美国的所有其他国家。自助者天必助之。如果大家都愿意多花一点时间整理一下自己代码的国产平台版本,相关的生态很容易起来。但要是大家都事不关己高高挂起,估计国产生态大概率就凉了。
1. 节点资源及配置
目前共享集群部分包括:8个计算节点,1个存储节点,1个管理节点,各种节点具体配置如下:
计算节点: CPU:2* Intel® Xeon® Scalable silver 2.2GHz 12核心 ; 内存:512G R-ECC DDR4 2933MHz 服务器内存 支持高级内存纠错、内存镜像 硬盘:2 * 480GB SSD ;硬RAID 0,1,5,6,50,60,10 GPU:8* NVIDIA Tesla V100 16GB NVLINK 网卡:2*千兆电口 IB卡:100Gb IB卡 单口 电源:2000W(2+2) 4U机架式 操作系统:Sitonholy SCM 16.04 电源:2000W(2+2)
存储节点: CPU:2* Intel® Xeon® Scalable silver 2.2GHz 12核心 ; 内存:512G R-ECC DDR4 2933MHz 服务器内存 支持高级内存纠错、内存镜像 系统硬盘:2*480GB SSD (RAID 1,用于系统盘); 数据硬盘:10*960GB SSD (RAID 0,高速数据);1410TB SAS 企业级(RAID 5,大容量高可靠数据); 网卡:2*千兆电口 IB卡:100Gb IB卡 单口 操作系统:Sitonholy SCM 16.04 电源:2000W(2+2) 4U机架式,思腾合力AIStor存储管理系统
管理节点: CPU:2* Intel® Xeon® Scalable silver 2.2GHz 12核心 ; 内存:512G R-ECC DDR4 2933MHz 服务器内存 支持高级内存纠错、内存镜像 系统硬盘:2*480GB SSD (RAID 1,用于系统盘); 镜像盘:3*4TB SAS 系统镜像; 网卡:2*千兆电口 IB卡:100Gb IB卡 单口 操作系统:Sitonholy SCM 16.04 电源:2000W(2+2) 2U机架式,800W(1+1)
2. 数据存储规范
注意:若未按照规则存储数据,特别是未授权情况下删除了别人数据或公共数据,账号将被禁用!
个人数据尽可能存储到存储节点HDD中的私有1T空间(如有特殊需求请单独提出)和data下私人文件夹下;ssd由于采用raid0,安全性较差,重要数据强烈不建议存储到ssd中;docker中数据运行完可能会被释放,重要数据建议不要存放。
HDD(120TB)机械数据盘(RAID 5)里面设置了以下几种分区可供镜像挂载:
- dataset: 20TB,存放公共数据集的压缩包,普通用户不得对数据进行除读取外任何操作!
- data: 30TB, 该分区下每人设置一个子文件夹,其他人可看到,存放自己的非敏感数据
- archive:20TB,毕业生存放自己的需要保留的工作数据等。平时没有访问权限,毕业时联系管理员操作。论文的重要保留数据存放在第一作者名对应的子目录下。
- 每个用户私有:3TB,其他人无法访问的数据,毕业需要清空删除
SSD(8.8 TB)10块960GB的SSD组RAID 0,重要数据强烈不建议存储到ssd中,建议多利用内存空间减少硬盘使用率,设置了以下几种分区可供镜像挂载:
- ssddataset: 2TB, 只放imagenet, coco这样的公共数据集。严禁对数据进行除读取外任何操作。
- ssddata: 4TB,该分区下每人设置一个子文件夹,其他人可看到,存放自己的暂时处理的数据中间结果。超高速存储空间有限,不用的时候请及时清理。
注意事项:
- 本集群使用NFS挂载,conda环境不支持安装到挂载盘,会导致系统卡死。
3. Docker配置
Docker 的nvidia driver驱动需要供应商特殊配置,自己安装可能会失败,目前请在供应商提供的docker上自定义。几种典型的配置如下:
- VNC_PASSWD字段必须设置强密码!
- 0端口号为自动分配,禁止自行指定端口号!
{
"protocolVersion": 2,
"name": "8gpu_instance",
"description": "",
"contributor": "",
"type": "job",
"jobRetryCount": 1,
"prerequisites": [
{
"type": "dockerimage",
"uri": "10.137.144.40:8888/sitonholy/cuda10.0-cudnn7-novnc-jupyter-tensorboard:v1.0",
"name": "docker_image_0"
}
],
"parameters": {
"VNC_PASSWD": "123456", // 改成自己的强密码!
"TENSORBOARD_PATH": "/root/demo/TensorBoard",
"paiAzRDMA": "true"
},
"taskRoles": {
"admin": {
"instances": 1,
"shmMB": 1000,
"completion": {
"minFailedInstances": 1,
"minSucceededInstances": 1
},
"dockerImage": "docker_image_0",
"resourcePerInstance": {
"cpu": 44,
"gpu": 8,
"memoryMB": 501760,
"storageGB": 300,
"ports": {
"tensorboard_http": 0,
"jupyter_http": 0,
"vnc_http": 0,
"vnc": 0
}
},
"commands": [
"cd /root",
"bash setup.sh",
"sleep infinity"
],
"taskRetryCount": 0
}
},
"deployments": [],
"secrets": {},
"defaults": {
"virtualCluster": "total"
},
"extras": {
"gpuType": "TeslaV100SXM216GB",
"nfsList": [
{
"name": "data",
"mountPoint": "/root/data"
},
{
"name": "dataset",
"mountPoint": "/root/dataset"
},
{
"name": "archive",
"mountPoint": "/root/archive"
},
{
"name": "ssddata",
"mountPoint": "/root/ssddata"
},
{
"name": "ssddataset",
"mountPoint": "/root/ssddataset"
}
],
"glusterfsList": []
}
}
{
"protocolVersion": 2,
"name": "4gpu_instance",
"description": "",
"contributor": "",
"type": "job",
"jobRetryCount": 1,
"prerequisites": [
{
"type": "dockerimage",
"uri": "10.137.144.40:8888/sitonholy/cuda10.0-cudnn7-novnc-jupyter-tensorboard:v1.0",
"name": "docker_image_0"
}
],
"parameters": {
"VNC_PASSWD": "123456", // 改成自己的强密码!
"TENSORBOARD_PATH": "/root/demo/TensorBoard",
"paiAzRDMA": "true"
},
"taskRoles": {
"admin": {
"instances": 1,
"shmMB": 50,
"completion": {
"minFailedInstances": 1,
"minSucceededInstances": 1
},
"dockerImage": "docker_image_0",
"resourcePerInstance": {
"cpu": 22,
"gpu": 4,
"memoryMB": 250880,
"storageGB": 150,
"ports": {
"tensorboard_http": 0,
"jupyter_http": 0,
"vnc_http": 0,
"vnc": 0
}
},
"commands": [
"cd /root",
"bash setup.sh",
"sleep infinity"
],
"taskRetryCount": 0
}
},
"deployments": [],
"secrets": {},
"defaults": {
"virtualCluster": "total"
},
"extras": {
"gpuType": "TeslaV100SXM216GB",
"nfsList": [
{
"name": "data",
"mountPoint": "/root/data"
},
{
"name": "dataset",
"mountPoint": "/root/dataset"
},
{
"name": "archive",
"mountPoint": "/root/archive"
},
{
"name": "ssddata",
"mountPoint": "/root/ssddata"
},
{
"name": "ssddataset",
"mountPoint": "/root/ssddataset"
}
],
"glusterfsList": []
}
}
三、3090共享集群
禁止在集群中使用代理和内网穿透!!!
1. 数据存储规范
目前设置了以下几种共享存储,可供用户访问:
/root/siton-tmp:缓存盘,会在任务关机48h后自动清空,保存镜像时也不会被保存,因此不能长时间存放数据。
/root/siton-gpfs-[name]:容量100G,用户个人的共享存储空间,可以由用户自己共享给他人。
/root/siton-gpfs-archive/[name]:数据备份空间,容量较大,用户可以在该空间下创建一个以自己姓名拼音为名称的目录(不符合命名规范的目录和文件可能会被清理),将自己需要备份的数据存放在此。此外,由于集群用户较多,请大家注意节省空间。
/root/siton-gpfs-pubdata:存放公共数据集,所有用户拥有只读权限,如需要上传数据集请联系管理员。
2. 任务管理
用户创建任务时需注意以下几点:
任务关机 48小时后将清空缓存盘中的数据,请在关机前将重要数据存放到共享存储中 。
任务关机7天后,将自动进行释放操作,请及时备份数据,并注意保存镜像 (保存镜像不会保存缓存盘中的数据)。
任务关机后运算卡将会释放,再次开机时可能面临空闲运算卡不足无法开机的情况。
3. 系统镜像
集群提供了默认的镜像,用户可以先使用默认镜像创建任务后通过conda、pip、apt等方式配置自己的环境。
注意环境不会安装到挂载盘中,用户需要通过保存镜像保存环境。
注: apt若找不到包,请执行update操作。
四、共享集群常见问题
1. 如何配置VNC?
参考上述config文件,配置好VNC相关的密码和端口设置以后,初始化机器。在本地机器上通过vnc软件输入计算节点的IP和VNC端口号(IP:PORT)即可。
2. 如何登陆网关以连接外网?
在~/.bashrc
或者~/.zshrc
等终端配置文件中加入如下行,并对底部所述的相应变量进行替换:
alias weblogin="curl \"http://202.113.18.106:801/eportal/?c=ACSetting&a=Login&loginMethod=1&protocol=http%3A&hostname=202.113.18.106&port=&iTermType=1&wlanuserip=IP_ADDR&wlanacip=null&wlanacname=jn1_&redirect=null&session=null&vlanid=0&mac=00-00-00-00-00-00&ip=IP_ADDR&enAdvert=0&jsVersion=2.4.3&DDDDD=USER_ID&upass=USER_PWD&R1=0&R2=0&R3=0&R6=0¶=00&0MKKey=123456&buttonClicked=&redirect_url=&err_flag=&username=&password=&user=&cmd=&Login=\""
alias weblogout="curl \"http://202.113.18.106:801/eportal/?c=ACSetting&a=Logout&loginMethod=1&runRadius=1&DDDDD=&protocol=http%3A&hostname=202.113.18.106&port=&iTermType=1&wlanuserip=null&wlanacip=null&wlanacname=null&redirect=null&session=null&vlanid=undefined&mac=00-00-00-00-00-00&ip=&queryACIP=0&jsVersion=2.4.3\""
# IP_ADDR 计算节点的IP地址
# USER_ID 网关账号
# USER_PWD 网关密码
保存并退出后 source ~/.bashrc
或者 source ~/.zshrc
。
再输入 weblogin
即可登陆成功,相应地输入weblogout
即可登出。