从容器到共享:lxd搭建多人共用gpu服务器的最佳实践!-k8凯发旗舰

k8凯发旗舰
从容器到共享:lxd搭建多人共用gpu服务器的最佳实践!
来源: 黄翰/
华南理工大学
49
0
0
2023-07-25

随着人工智能技术的发展,计算资源需求不断增长,gpu服务器的价格也居高不下,这导致许多团队和个人难以承受单独购买gpu服务器的成本。因此,多人共用gpu服务器的需求变得越来越迫切。然而,多人共用gpu服务器的实现面临一个大问题:如何在保证各个用户隔离操作系统的同时,高效地共享计算资源和数据资源?

mmexport1686059235395

为解决这一问题,我们向大家推荐一种高效、安全、灵活的工具——lxd。lxd作为一种高效的容器管理工具,可以实现容器级别的隔离和高效的资源共享,非常适用于多人共用gpu服务器的场景。下面我们将探讨lxd相比于其他方案的优势,并详细介绍如何使用lxd搭建多人共用gpu服务器,希望能为读者提供一种高效、安全的多人共用gpu服务器方案。

一、多人共用gpu服务器方案对比

为了在隔离操作系统的同时实现高效的资源共享,当前已经有多种方案被提出,包括linux多用户方案、虚拟机、docker、openpai和lxd。

linux多用户方案是指多个linux用户共用一台gpu服务器。这种方案的优点是可以充分利用gpu的计算能力,因为多个用户可以共享一块或多块gpu。但是,这种方案在调度和管理上存在问题,同时需要解决多用户之间的隔离问题。此外,linux多用户方案可能存在安全问题,因为不同用户之间可以访问同一台服务器上的文件和数据。

虚拟机方案是指使用虚拟机技术来实现多用户共用一台gpu服务器。这种方案可以实现gpu资源的隔离和调度,同时也可以兼容不同操作系统。但是,虚拟机方案存在性能损失和资源利用率低的问题。

docker方案可以实现gpu资源的隔离和调度,同时也可以实现轻量级的容器管理。但是,由于docker使用的是共享内核的方式,容器之间的隔离性较差,容易出现安全问题。

openpai是一个提供完整的人工智能模型训练和资源管理能力的开源平台,它易于扩展,支持各种规模的on-premise、on-cloud和混合环境。但是openpai方案需要相当复杂的配置,不适合小规模使用的场景。

lxd是一种轻量级的容器管理系统,是linux容器的一种实现。与虚拟机不同,容器可以在同一台服务器上运行多个操作系统实例,同时共享主机的内核和硬件资源。lxd提供了管理容器的工具和api,可以轻松地启动、停止、管理和监控容器,以及在多个容器之间移动应用程序和数据。lxd的容器具备隔离性且能够做到轻量级管理,使lxd可以在多用户共用的gpu服务器上实现容器级别的隔离,让多个用户在共享gpu服务器计算资源的同时,不会相互影响。

二、lxd安装与配置

我们将以ubuntu18.04为例简要介绍lxd的安装步骤和配置。在开始之前,需要先完成以下前期准备工作:

(1)在宿主机上安装好gpu对应的nvidia显卡驱动。请注意:尽量不要安装最新版的驱动,能用上对应的cuda版本即可。

(2)在宿主机上安装所需的cuda和cudnn加速文件。宿主机装好cuda后,lxc容器只需要挂载宿主机cuda的目录就能实现动态切换cuda版本的效果,且能随着宿主机cuda版本的改变而更新。

完成以上准备后,lxd安装和配置的详细步骤如下:

  • 获取root权限,使用snap直接安装lxd

  • 初始化lxd

  • 使用`lxc profile`进行默认配置,这些配置适用于所有lxc容器

  • 配置国内镜像,加快下载镜像的速度,并配置一个共享挂载卷

  • 创建一个模板容器,后续所有用户容器都是基于该模板创建的

  • 将`/etc/apt/sources.list`修改为清华源,然后使用`apt update`命令更新源,并安装一些必要工具

  • 安装miniconda3,并配置好pip源和conda源

  • 安装与宿主机版本一致的nvidia驱动,nvidia-container-runtime和docker

  • 修改`~/.bashrc`下的环境变量,动态配置cuda版本

  • 删除容器内的缓存并退出容器,在宿主机中将模板容器保存为模板镜像

  • 为新用户启动容器

三、lxd容器管理

在lxd中,宿主机会给每个使用者创建一个linux用户,每个linux用户都对应一个容器,容器内是一个完整的操作系统,用户可在容器中进行任意操作而不影响宿主机和其他容器。为了方便管理linux用户和容器,我们提供了一系列脚本,用于创建、删除用户与容器以及动态分配gpu等。

脚本代码的仓库为:https://github.com/scut-ial/lxd-scripts。将脚本克隆至宿主机的`/var/scripts/`目录下即可使用。为了方便使用脚本,也可以在`~/.bashrc`下配置命令别称。

管理员管理用户和容器的步骤如下:

  • 创建用户和容器:输入`add_user`,然后输入使用者的用户名、邮箱、公钥

  • 删除用户和容器:输入`del_user {username}`

  • 配置cron定时任务,定时监控gpu使用情况

四、lxd容器使用方法

在管理员创建用户和容器后,用户可使用linux用户名并通过ssh命令登录至宿主机来进行容器操作。下面以用户test为例:

  • ssh登陆后,用户会看到操作菜单,可根据菜单提示进行操作

  • 用户输入1,可进入容器内部

  • 用户输入2,可进入容器管理子菜单,可以启动和停止容器,查看容器配置信息等

  • 用户输入3,可进入端口映射菜单,可将容器内的端口映射到宿主机上

  • 用户输入4,可进入gpu分配菜单,gpu分配的规则如下:

(1)gpu是抢占式的,一旦分配给某个用户后,不能再分配给其他人;

(2)gpu分配有时长限制,时间以小时为单位,最长分配96小时;

(3)gpu分配到期后,系统会每4小时发送提醒邮件,若超过24小时仍不释放,系统会强制释放;

(4)系统会定时检查gpu使用情况,若连续多次发现gpu分配后闲置的情况,也会强制释放gpu资源。

  • 用户输入5,可修改当前用户的公钥

五、总结

在本文中,我们详细介绍了使用lxd搭建多人共用gpu服务器的方法,以及lxd相较于其他方案的优势。通过使用lxd,我们可以在保证容器级别隔离的前提下,高效地共享计算资源和数据资源,从而满足多人共用gpu服务器的需求。此外,lxd在灵活性和安全性方面具有优势,可以保证数据隔离和安全性,同时提供更好的用户体验。

mmexport1686059686419

总编:黄翰

责任编辑:刘廷辉

文字:刘浩龙

图片:刘浩龙

校稿:何莉怡

时间:2023年7月16日


登录用户可以查看和发表评论, 请前往  登录 或  注册
scholat.com 学者网
免责声明 | 关于k8凯发旗舰 | 联系k8凯发旗舰
联系k8凯发旗舰:
网站地图