随着人工智能技术的发展,计算资源需求不断增长,gpu服务器的价格也居高不下,这导致许多团队和个人难以承受单独购买gpu服务器的成本。因此,多人共用gpu服务器的需求变得越来越迫切。然而,多人共用gpu服务器的实现面临一个大问题:如何在保证各个用户隔离操作系统的同时,高效地共享计算资源和数据资源?
为解决这一问题,我们向大家推荐一种高效、安全、灵活的工具——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安装和配置的详细步骤如下:
三、lxd容器管理
在lxd中,宿主机会给每个使用者创建一个linux用户,每个linux用户都对应一个容器,容器内是一个完整的操作系统,用户可在容器中进行任意操作而不影响宿主机和其他容器。为了方便管理linux用户和容器,我们提供了一系列脚本,用于创建、删除用户与容器以及动态分配gpu等。
脚本代码的仓库为:https://github.com/scut-ial/lxd-scripts。将脚本克隆至宿主机的`/var/scripts/`目录下即可使用。为了方便使用脚本,也可以在`~/.bashrc`下配置命令别称。
管理员管理用户和容器的步骤如下:
四、lxd容器使用方法
在管理员创建用户和容器后,用户可使用linux用户名并通过ssh命令登录至宿主机来进行容器操作。下面以用户test为例:
(1)gpu是抢占式的,一旦分配给某个用户后,不能再分配给其他人;
(2)gpu分配有时长限制,时间以小时为单位,最长分配96小时;
(3)gpu分配到期后,系统会每4小时发送提醒邮件,若超过24小时仍不释放,系统会强制释放;
(4)系统会定时检查gpu使用情况,若连续多次发现gpu分配后闲置的情况,也会强制释放gpu资源。
五、总结
在本文中,我们详细介绍了使用lxd搭建多人共用gpu服务器的方法,以及lxd相较于其他方案的优势。通过使用lxd,我们可以在保证容器级别隔离的前提下,高效地共享计算资源和数据资源,从而满足多人共用gpu服务器的需求。此外,lxd在灵活性和安全性方面具有优势,可以保证数据隔离和安全性,同时提供更好的用户体验。
总编:黄翰
责任编辑:刘廷辉
文字:刘浩龙
图片:刘浩龙
校稿:何莉怡
时间:2023年7月16日