News

实验室服务器使用说明

实验室现有GPU服务器集群。背面看更直观,最下面的2排8卡V100的机器采用100Gbps的InfiniBand网络连接。

严禁使用简单密码,一旦因简单密码被挟持,永久失去使用权。

一、独立服务器

实验室大部分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&para=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即可登出。

(Visited 17,435 times, 1 visits today)
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments