V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Cineray
V2EX  ›  程序员

有什么方便的实验室共享 GPU 方案?

  •  
  •   Cineray · 46 天前 · 3858 次点击
    这是一个创建于 46 天前的主题,其中的信息可能已经有所发展或是发生改变。

    实验室一台服务器大概有 10 多个人用,以前都是使用一个账号,大家合理分配时间。

    现在老师要求各自建立自己的账号,但是有一个问题,因为大家的运行环境不一样,包括 cuda/python 版本等。

    所以我想建立一个隔离环境,大家有一定的 sudo apt 权限,但是又不会因为环境冲突装坏系统。

    目前看到的是有的用 docker/LCX ,感觉有些臃肿,求问有没有更好的方式?

    如果有管理器就更好了,方便及时添加/删除用户。

    另外我们有多台机器,有什么好的方法可以智能分配账号/算力资源吗?

    38 条回复    2024-03-13 16:30:20 +08:00
    dododada
        1
    dododada  
       46 天前
    docker 。
    我记得站里有个这种帖子的。
    jiny2048
        2
    jiny2048  
       46 天前
    装好必要的软件,不给 sudo 权限,每个人自己用 conda
    多台服务器用 ansible 分发/管理帐号
    gpu 没必要做分配/虚拟化,抢占式/商量着来就行了
    litguy
        3
    litguy  
       46 天前
    docker 或者 lxd
    个人更喜欢后面这个,因为和虚拟机用起来差不多
    hallDrawnel
        4
    hallDrawnel  
       46 天前
    和 2 楼差不多,不给 sudo 权限,每个人自己用 conda 管理自己的环境就行,驱动管理员负责更新。
    然后大家去抢就好了 10 个人。
    retanoj
        5
    retanoj  
       46 天前
    要是想在操作系统级别支持自定义安装软件,那还是 docker / LCX 吧。
    不是臃肿的问题,是你给了 sudo 一定滥用和冲突。
    CheckTime
        6
    CheckTime  
       46 天前
    硬盘够大就行,每个人登录在自己目录下面安装自己的 conda 环境。不用给 sudo 权限,有必须要装的系统包打申请
    steveway
        7
    steveway  
       46 天前
    https://github.com/shenuiuin/LXD_GPU_SERVER
    目前在用是这个方案,确实如楼上朋友所说,需要硬盘够大。
    但其实用下来,除了 lxc 完全隔离之外,小问题还是有不少的,如果实验室对 linux 都比较熟悉,直接分帐号使用就好了。
    happyxhw101
        8
    happyxhw101  
       46 天前
    cuda 统一版本
    每个人建自己的账户,/home/xxx ,用 conda 安装自己的 python 环境
    不给 sudo 权限,需要安装软件的统一一个人负责
    Busby
        9
    Busby  
       46 天前
    Docker 大法好。非计算机专业很难保证每个人的水平,还是各玩各的好。
    guoyijun163
        10
    guoyijun163  
       46 天前
    用 pve+container(LXC),pve 宿主机上装显卡的 kernel 驱动,container 里装运行时(不过这样驱动版本是需要一致匹配的)
    大家各自拿着一个 container 有 root 权限,除了动不了 kernel ,换不了驱动版本外其他都能自己装
    bjtujtonlyone
        11
    bjtujtonlyone  
       46 天前
    CUDA 就装一个,包括一些臃肿的数据集都是在管理员目录,有命令可以软链接;其他的 python 环境用户自己 conda 虚拟。
    bthulu
        12
    bthulu  
       46 天前
    一人买一台服务器不久好了
    binarywizard
        13
    binarywizard  
       46 天前
    可以使用英伟达的 MIG 方案,切分 GPU 卡
    jacy
        14
    jacy  
       46 天前
    hyper-v 开小鸡分给大家,虽然臃肿,但大家想怎么搞怎么搞
    Woolaman
        15
    Woolaman  
       46 天前
    不太理解。既然是服务器,当然每个人有自己的账号啊,不然怎么写代码、debug 、看数据?
    至于计算资源的分配,用专门的资源调度软件管理不就行了吗,例如 slurm 、htcondor 。
    你把作业提交上去,别人的作业结束了,你的任务就开始了啊,大家协商一下最大作业时间就行了,例如 48h 、72h 。
    我是做物理的,蒙卡模拟啥的,要是说错了,勿喷!
    dode
        16
    dode  
       46 天前
    Docker ,每个用户独立使用私钥登录,都加入到 docker 组
    hiphooray
        17
    hiphooray  
       46 天前
    遇到了同样的情况,4 个人用,而且并没有专人负责服务器的维护工作。
    因此为了方便起见,每个人都申请自己独立的拥护,自己维护自己的开发环境,然后配上了足够大容量的硬盘。
    GPU 分配就更粗暴了,在微信群里喊一声,用了哪张卡,要用多久,就行了。
    Huelse
        18
    Huelse  
       46 天前
    不要给 sudu 权限,遇到不懂非要硬来的直接给你搞崩
    Argon
        19
    Argon  
       46 天前   ❤️ 1
    我这边用下来有个提醒。楼上说的 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/
    kangyue9999
        20
    kangyue9999  
       46 天前 via Android
    几种办法
    1.设备独享型,使用 openlava 配置一下,没人按需按时间抓机器丢任务去跑,优点:应用兼容性好。缺点:容易造成资源浪费(比如一个人跑的任务可能只用很少的 GPU ,但是整个机器都归他了)
    2.vgpu 共享型,去买个 NVIDIA vgpu 的授权,然后每台服务器可以去配置资源分割。优点:不浪费 GPU ,缺点:应用程序支持可能有限。
    3 VGPU+调度器型:算是 1,2 的合体,用 vgpu+opennebula 。缺点是一二缺点的集合体,再加上配置估计不简单。
    debuggerx
        21
    debuggerx  
       46 天前 via Android
    把服务器部署成 runner 你们提交任务上去 排队执行
    skies457
        22
    skies457  
       46 天前   ❤️ 1
    目前实验室正在使用的方案:
    - Kubernetes 作为集群基础架构
    - GitLab 提供单点登录服务
    - Harbor 提供自定义环境的镜像托管
    - JupyterLab ( https://z2jh.jupyter.org/en/stable/)为每个人提供可选配置的独立执行环境
    ruimz
        23
    ruimz  
       46 天前 via iPhone
    open ondemand ,开源 HPC 管理
    https://github.com/OSC/ondemand
    flyqie
        24
    flyqie  
       46 天前
    这类环境最好不要用 docker 。。

    docker 在这类环境下隔离不太好做。

    要上的话建议 lxc 或者它的上层 lxd 。
    ruimz
        25
    ruimz  
       46 天前 via iPhone
    @ruimz 这个 ondemond 可以分账号,一个账号搞坏不破坏系统,cuda python 不同版本环境隔离,有网页管理,支持多机集群,支持网页直接开 Jupyter notebook 。
    一开始是给学校用超算开发的,所以和楼主描述的实验室环境的需求几乎完全一致
    Cineray
        26
    Cineray  
    OP
       46 天前
    @ruimz #25 感谢推荐,不过部署 HPC 有点大炮打蚊子的感觉😂
    xudong
        27
    xudong  
       46 天前 via iPhone
    kubeflow
    good4you
        28
    good4you  
       46 天前   ❤️ 1
    鄙人有五年 HPC 使用经验,推荐使用:slurm

    这个已经是很完善的体系,在北美非常常见,从高校到美国国防部都在使用。由于系统发展比较成熟,部署难度很可能远小于自己捣鼓 docker 之类的。具体的我没有了解,还请楼主移步: https://slurm.schedmd.com/documentation.html
    terencelau
        29
    terencelau  
       45 天前
    只有一台服务器的话就 Docker 部署 JupyterHub 吧,文件上传下载还可以部署一个 file browser ,如果能多几台服务器再考虑 K8S 或者 SLURM 。我现在用的方案是 K8S 底座 + Kubeflow
    ttyhtg
        30
    ttyhtg  
       45 天前 via Android
    看了楼上诸位回复,受益良多,哈哈
    totoroyyw
        31
    totoroyyw  
       45 天前
    SLURM 或者 Docker 挂显卡
    stevenshum
        32
    stevenshum  
       45 天前
    看到很多人推荐 HPC ,想问一下单台服务器怎么部署和使用 HPC ?
    dayeye2006199
        33
    dayeye2006199  
       45 天前 via Android
    多账号 ssh 和 conda

    conda 可以管理 cuda 版本的吧?
    Sayuri
        34
    Sayuri  
       45 天前
    用 nvidia-container-runtime 来在 docker 里面跑 GPU 。
    大家约定好一个固定的 cuda 版本,硬性要求环境用容器部署就行了。
    Famio
        35
    Famio  
       45 天前
    我的想法是 lsf ,虚拟化都不用做,大家的任务都丢队列,顺序处理,架构上来说很省事,原生 linux os 该咋用咋用,没有虚拟化、容器化的运维负载。
    ZedRover
        36
    ZedRover  
       45 天前
    cuda 不统一版本最好用 docker ,宿主机上用最新的 nvdriver ,容器内 cuda 版本随意。用 conda 只能解决 python 环境,很多上古代码需要很低的 cuda 版本才能跑起来,很多 torch 2 的新功能需要新的 cuda ,不是说一句统一版本就能解决的
    pslucifer
        37
    pslucifer  
       45 天前
    @skies457 正解
    doublebu
        38
    doublebu  
       45 天前
    用 LXD ,有大佬已经写过教程了: https://zhuanlan.zhihu.com/p/421271405

    目前白嫖朋友的工作站就是这样的,除了 GPU 外,自己装 tailscale 这种组网工具也可以,而且有 systemd 的支持.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1046 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:05 · PVG 07:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.