为每台服务器创建用户,有一个网页面板展示所有服务器的使用情况(主要是 GPU),大家相当于竞争状态,看到哪台服务器空了,有需要了,就把项目重新部署到空余的服务器上跑。
相当程度上,能够充分利用每个 gpu ,如果大家积极性高的话,不停的 switch 可以充分利用所有自愿(比较牵强)
劣势太明显了,有时候跑着停了一下或者正在改代码、debug ,显卡就被别人用上了。你就要重复部署自己的项目到空余的服务器上,而且文件碎片严重,也比较浪费存储空间,很多时候大家的项目都是复制了好几遍在各个服务器上。一些大的数据集、静态文件也散落各地。
比较为难的是,服务器的配置不一样的,有的老 titan ,有的 3090 、Tesla ,大家都不管模型大小都倾向于在新服务器上跑,有些旧服务器都是空闲状态。
注意不能改造、重做系统,因为大家都历史遗留 checkpoint 各种文件、特定环境,而且各系统横跨各种版本。
目前用 rsync 写了脚本,但是由于文件规则复杂(有时候只同步代码,有时候又要同步模型),很麻烦,而且很容易出错,想象你在几台服务器上,那个跑 A 实验,这个跑 B 实验,有时还要把两者结果传来传去。甚至做实验旧了,都忘记了实验结果在哪台服务器上。
1
haiyang1992 2021-12-19 21:06:42 +08:00 via Android
我们用 condor 来统一管理,开发配置实验什么的都在一台服务器上,其他服务器只负责跑实验,正在考虑迁移到 slurm ,系统是 rhel 有系里专门的 it 来管理
|
2
haiyang1992 2021-12-19 21:08:57 +08:00 via Android
存储的话是 nfs 挂载 raid 阵列,所以所有服务器看到的都是同一套文件系统,不需要同步文件。
|
3
Donahue 2021-12-19 21:15:27 +08:00
@haiyang1992 不会因为内网带宽导致数据加载慢吗,有些数据集是几万张图片,有些数据集是单个文件但是非常大 1-10GB ,你们内网是万兆吗
|
4
haiyang1992 2021-12-19 21:26:35 +08:00 via iPhone
@Donahue #3 是万兆,可能因为我们这个不是 GPU 集群吧,实验室不是搞深度学习的。不过这个时候网络速度也不能算瓶颈了而是硬盘速度?
|
5
CrossEntropy 2021-12-19 21:40:23 +08:00
用了浪潮的 AIStation 集群方案
|
6
CrossEntropy 2021-12-19 21:42:27 +08:00
但是之前意外停电集群挂过几次,现在准备试试 OpenPAI 。
|
7
XiLingHost 2021-12-19 21:43:05 +08:00
建议存储和计算分离,最好搞虚拟化集群
|
8
paopjian 2021-12-19 23:04:05 +08:00
这么多服务器得话得用超算架构了吧,我们学校是 Slurm
|
9
Scirocco 2021-12-20 00:17:40 +08:00
我们也 OP 这种竞争方式,效率极低,由于服务器太多了,甚至大家都不知道有哪些是空着的。
还有几台服务器不能上网,导致 git clone 都用不了,软件也装不了,大家都不愿意用。 插眼一波,看看有没有好的解决方法 |
10
Scirocco 2021-12-20 00:20:06 +08:00
不过我们是做通信的,虽然天天都在用服务器,但是其实很多人只会基础操作,不知道换架构会不会学习成本太高。
(况且感觉老师会嫌太麻烦,不予考虑 |
11
rayhy 2021-12-20 01:11:35 +08:00 via Android
挺难搞的,同求靠谱方案。我们也是新旧服务器都有,系统版本也乱七八糟。目前我们的方案是每个服务器上都装 docker ,每个人一个 docker 容器。其实就是拿 docker 当虚拟机用。每个 docker 都绑了几个 host 机器的端口,可以正常的搞 ssh ,tensorboard 那些东西。然后实验室按小组分服务器。搞一个方向的人用固定的服务器,这样服务器上不需要搞各个方向的数据集。
其实学校里搞这些最大问题是,如果没有专门的管理人员,基本上都是靠学生自己维护。搞太复杂的方案,懂得人一毕业就完蛋了。 |
12
noqwerty 2021-12-20 01:11:59 +08:00
这么多机器而且都有显卡的话,可能用 Slurm / Torque 管理会更好一些。我们只有一台机器有显卡所以不存在这个问题。。
|
13
Jakarta 2021-12-20 02:12:28 +08:00 1
只用过学校的 slurm ,国内外很多高校都在用。但是这玩意只适合有 IT 运维专人管理的情形。
如果是实验室规模,我建议使用 Determined ,我没用过,可以参考这篇文章 https://zhuanlan.zhihu.com/p/422462131 |
15
Mithril 2021-12-20 09:09:01 +08:00
野生放养就是了,除非有专门人维护,不然一毕业全完蛋。
而且用网络存储速度比服务器里自带的 SSD 差远了。测试的时候你可能觉得单机跑没啥问题,等你有个三五台服务器,每台都在撸数据的话,IO 直接炸掉。到时候你就发现限制你性能的不是 GPU ,而是 IO 。GPU 大部分时间都在等 IO 。而且有的框架写的垃圾,调 IO 很频繁。 最好的办法是你自己写个程序来回搬运数据,谁要用某台机器了,就把他的数据搬过去。 但还是那句话,你就算写了这东西,等你毕业了也全完蛋。所以还是别折腾了,抢吧。 |
16
shakoon 2021-12-20 09:17:48 +08:00
搞一个虚拟化集群,把现有服务器都加入进去,然后就分配一台占用了所有资源的虚拟机,开若干个用户,每个人都随时可以去使用,无需任何检查和等待,也不用到处复制文件。
|
17
SJ2050cn 2021-12-20 09:57:38 +08:00
用 slurm 吧
|
18
Rheinmetal 2021-12-20 10:12:35 +08:00
理论上超融合架构成一个集群效率高
比如全部用 proxmox ve 做成资源池 |
19
z740713651 2021-12-20 11:16:40 +08:00
EasyBot 自动化机器人?
https://www.bilibili.com/video/BV1ki4y197i7 |
20
GrayXu 2021-12-20 15:03:41 +08:00
|
21
mjikop1231 2021-12-20 15:20:08 +08:00
|
22
zxCoder 2021-12-21 11:14:05 +08:00
我们直接分配到人。。。。。直接野生使用
|
23
hhs66317 2021-12-24 14:44:37 +08:00
服务器都在一个机房的话,存储用 NFS 挺好的,万兆内网,这样至少最烦人的文件同步就不用担心了
|