实验室一台服务器大概有 10 多个人用,以前都是使用一个账号,大家合理分配时间。
现在老师要求各自建立自己的账号,但是有一个问题,因为大家的运行环境不一样,包括 cuda/python 版本等。
所以我想建立一个隔离环境,大家有一定的 sudo apt 权限,但是又不会因为环境冲突装坏系统。
目前看到的是有的用 docker/LCX ,感觉有些臃肿,求问有没有更好的方式?
如果有管理器就更好了,方便及时添加/删除用户。
另外我们有多台机器,有什么好的方法可以智能分配账号/算力资源吗?
![]() | 1 dododada 2024-03-12 16:38:21 +08:00 docker 。 我记得站里有个这种帖子的。 |
![]() | 2 jiny2048 2024-03-12 16:39:49 +08:00 装好必要的软件,不给 sudo 权限,每个人自己用 conda 多台服务器用 ansible 分发/管理帐号 gpu 没必要做分配/虚拟化,抢占式/商量着来就行了 |
![]() | 3 litguy 2024-03-12 16:40:26 +08:00 docker 或者 lxd 个人更喜欢后面这个,因为和虚拟机用起来差不多 |
![]() | 4 hallDrawnel 2024-03-12 16:42:29 +08:00 和 2 楼差不多,不给 sudo 权限,每个人自己用 conda 管理自己的环境就行,驱动管理员负责更新。 然后大家去抢就好了 10 个人。 |
![]() | 5 retanoj 2024-03-12 16:44:10 +08:00 要是想在操作系统级别支持自定义安装软件,那还是 docker / LCX 吧。 不是臃肿的问题,是你给了 sudo 一定滥用和冲突。 |
6 CheckTime 2024-03-12 16:44:18 +08:00 硬盘够大就行,每个人登录在自己目录下面安装自己的 conda 环境。不用给 sudo 权限,有必须要装的系统包打申请 |
![]() | 7 steveway 2024-03-12 16:49:58 +08:00 https://github.com/shenuiuin/LXD_GPU_SERVER 目前在用是这个方案,确实如楼上朋友所说,需要硬盘够大。 但其实用下来,除了 lxc 完全隔离之外,小问题还是有不少的,如果实验室对 linux 都比较熟悉,直接分帐号使用就好了。 |
8 happyxhw101 2024-03-12 16:54:15 +08:00 cuda 统一版本 每个人建自己的账户,/home/xxx ,用 conda 安装自己的 python 环境 不给 sudo 权限,需要安装软件的统一一个人负责 |
![]() | 9 Busby 2024-03-12 16:56:40 +08:00 Docker 大法好。非计算机专业很难保证每个人的水平,还是各玩各的好。 |
![]() | 10 guoyijun163 2024-03-12 16:57:24 +08:00 用 pve+container(LXC),pve 宿主机上装显卡的 kernel 驱动,container 里装运行时(不过这样驱动版本是需要一致匹配的) 大家各自拿着一个 container 有 root 权限,除了动不了 kernel ,换不了驱动版本外其他都能自己装 |
11 bjtujtonlyone 2024-03-12 16:59:13 +08:00 CUDA 就装一个,包括一些臃肿的数据集都是在管理员目录,有命令可以软链接;其他的 python 环境用户自己 conda 虚拟。 |
12 bthulu 2024-03-12 17:39:52 +08:00 一人买一台服务器不久好了 |
![]() | 13 binarywizard 2024-03-12 17:45:04 +08:00 可以使用英伟达的 MIG 方案,切分 GPU 卡 |
![]() | 14 jacy 2024-03-12 17:51:39 +08:00 hyper-v 开小鸡分给大家,虽然臃肿,但大家想怎么搞怎么搞 |
![]() | 15 Woolaman 2024-03-12 18:05:38 +08:00 不太理解。既然是服务器,当然每个人有自己的账号啊,不然怎么写代码、debug 、看数据? 至于计算资源的分配,用专门的资源调度软件管理不就行了吗,例如 slurm 、htcondor 。 你把作业提交上去,别人的作业结束了,你的任务就开始了啊,大家协商一下最大作业时间就行了,例如 48h 、72h 。 我是做物理的,蒙卡模拟啥的,要是说错了,勿喷! |
16 dode 2024-03-12 18:53:57 +08:00 Docker ,每个用户独立使用私钥登录,都加入到 docker 组 |
17 hiphooray 2024-03-12 19:15:35 +08:00 遇到了同样的情况,4 个人用,而且并没有专人负责服务器的维护工作。 因此为了方便起见,每个人都申请自己独立的拥护,自己维护自己的开发环境,然后配上了足够大容量的硬盘。 GPU 分配就更粗暴了,在微信群里喊一声,用了哪张卡,要用多久,就行了。 |
18 Huelse 2024-03-12 19:38:51 +08:00 不要给 sudu 权限,遇到不懂非要硬来的直接给你搞崩 |
![]() | 19 Argon 2024-03-12 20:36:43 +08:00 ![]() 我这边用下来有个提醒。楼上说的 Docker 方案,假如 Docker 自身不是 rootless 的,那么有权限使用 docker 的用户实质上都能提权到 root 。我这边就遇到挂载 / 然后搞事的同学。 该帖其它楼的方案,比如 Proxmox VE 用 CT 共享 GPU 或者 LXD 共享,相比 Docker 的坏处是,对于缺少虚拟化经验的同学而言容易接触的资料不如 docker pull 来得多。但是话又说回来,写不明白 Dockerfile 只会连进容器内部敲命令的大有人在。搞不好他还会想装个 openssh-server ,这时候有着完整 systemd 支持的 LXC 容器,比 docker container 那就阳间太多了。 对于 LXD 有一个挺漂亮的 Web 面板,可以试试: https://lxdware.com/ |
20 2xvaHoK2LGxQ29R5 2024-03-12 20:57:55 +08:00 via Android 几种办法 1.设备独享型,使用 openlava 配置一下,没人按需按时间抓机器丢任务去跑,优点:应用兼容性好。缺点:容易造成资源浪费(比如一个人跑的任务可能只用很少的 GPU ,但是整个机器都归他了) 2.vgpu 共享型,去买个 NVIDIA vgpu 的授权,然后每台服务器可以去配置资源分割。优点:不浪费 GPU ,缺点:应用程序支持可能有限。 3 VGPU+调度器型:算是 1,2 的合体,用 vgpu+opennebula 。缺点是一二缺点的集合体,再加上配置估计不简单。 |
![]() | 21 debuggerx 2024-03-12 21:19:47 +08:00 via Android 把服务器部署成 runner 你们提交任务上去 排队执行 |
![]() | 22 skies457 2024-03-12 21:48:21 +08:00 ![]() 目前实验室正在使用的方案: - Kubernetes 作为集群基础架构 - GitLab 提供单点登录服务 - Harbor 提供自定义环境的镜像托管 - JupyterLab ( https://z2jh.jupyter.org/en/stable/)为每个人提供可选配置的独立执行环境 |
23 fbcskpebfr 2024-03-12 22:28:37 +08:00 via iPhone open ondemand ,开源 HPC 管理 https://github.com/OSC/ondemand |
![]() | 24 flyqie 2024-03-12 22:42:16 +08:00 这类环境最好不要用 docker 。。 docker 在这类环境下隔离不太好做。 要上的话建议 lxc 或者它的上层 lxd 。 |
25 fbcskpebfr 2024-03-12 23:00:22 +08:00 via iPhone @ruimz 这个 ondemond 可以分账号,一个账号搞坏不破坏系统,cuda python 不同版本环境隔离,有网页管理,支持多机集群,支持网页直接开 Jupyter notebook 。 一开始是给学校用超算开发的,所以和楼主描述的实验室环境的需求几乎完全一致 |
![]() | 27 xudong 2024-03-13 01:37:09 +08:00 via iPhone kubeflow |
![]() | 28 good4you 2024-03-13 03:27:38 +08:00 ![]() 鄙人有五年 HPC 使用经验,推荐使用:slurm 这个已经是很完善的体系,在北美非常常见,从高校到美国国防部都在使用。由于系统发展比较成熟,部署难度很可能远小于自己捣鼓 docker 之类的。具体的我没有了解,还请楼主移步: https://slurm.schedmd.com/documentation.html |
![]() | 29 terencelau 2024-03-13 07:42:21 +08:00 只有一台服务器的话就 Docker 部署 JupyterHub 吧,文件上传下载还可以部署一个 file browser ,如果能多几台服务器再考虑 K8S 或者 SLURM 。我现在用的方案是 K8S 底座 + Kubeflow |
30 ttyhtg 2024-03-13 08:19:22 +08:00 via Android 看了楼上诸位回复,受益良多,哈哈 |
![]() | 31 totoroyyw 2024-03-13 08:43:07 +08:00 SLURM 或者 Docker 挂显卡 |
32 stevenshum 2024-03-13 09:04:59 +08:00 看到很多人推荐 HPC ,想问一下单台服务器怎么部署和使用 HPC ? |
33 dayeye2006199 2024-03-13 09:18:40 +08:00 via Android 多账号 ssh 和 conda conda 可以管理 cuda 版本的吧? |
![]() | 34 Sayuri 2024-03-13 09:30:12 +08:00 用 nvidia-container-runtime 来在 docker 里面跑 GPU 。 大家约定好一个固定的 cuda 版本,硬性要求环境用容器部署就行了。 |
![]() | 35 Famio 2024-03-13 10:40:32 +08:00 我的想法是 lsf ,虚拟化都不用做,大家的任务都丢队列,顺序处理,架构上来说很省事,原生 linux os 该咋用咋用,没有虚拟化、容器化的运维负载。 |
![]() | 36 ZedRover 2024-03-13 11:02:47 +08:00 cuda 不统一版本最好用 docker ,宿主机上用最新的 nvdriver ,容器内 cuda 版本随意。用 conda 只能解决 python 环境,很多上古代码需要很低的 cuda 版本才能跑起来,很多 torch 2 的新功能需要新的 cuda ,不是说一句统一版本就能解决的 |
![]() | 38 doublebu 2024-03-13 16:30:20 +08:00 用 LXD ,有大佬已经写过教程了: https://zhuanlan.zhihu.com/p/421271405 目前白嫖朋友的工作站就是这样的,除了 GPU 外,自己装 tailscale 这种组网工具也可以,而且有 systemd 的支持. |