随着人工智能技术的发展,计算资源需求不断增长,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日