实验室GPU服务器共享方案 LXD

本文介绍了如何在资源有限的实验室环境中,使用LXD(Linux Container)来满足深度学习实践和学习的需求。LXD是一种轻量级的虚拟化方案,支持GPU共享,避免了虚拟机和Docker的局限。文章详细阐述了从LXD的安装到配置GPU支持的全过程,适合实验室管理员参考。
摘要由CSDN通过智能技术生成

LXD安装

需求

实验室有两台配置不高,显卡还算可以的服务器,用来作为深度学习的实践和学习。但是实验室人多,隔离环境必不可少,但是服务器cpu和内存并不高,跑虚拟机太重太浪费,跑docker又不合适。于是有了LXD的方案。

需求列表

  • 不同用户之间不能相互影响
  • 用户要能方便地访问自己的“虚拟机”
  • 用户要有足够大的权限,能自由地安装程序,能自由地访问网络
  • 用户不被允许直接操作宿主机
  • 用户要能够使用 GPU
  • 为满足这些需求,额外的开销应该小得可以忽略
  • 管理员应该能轻松地添加新的用户

方案发现

前面说了虚拟机太重,在机器本身配置不高的情况下负担太重,而且显卡是1080&1080ti(两台机器分别为1080*2, 1080ti*2),并不支持显卡虚拟化,也就是说一张卡只能在在同一时间供给一个虚拟机,这显然太浪费了。
考虑过docker,但是docker毕竟是应用级的容器,单进程,文件系统冗余太多,操作久了整个docker文件非常庞大,并不适合将它当虚拟机用。
我们需要的是开销小的虚拟机或者说环境隔离,安全性并不重要,在搜索中发现了docker的前身LXC(Linux Container),一个系统级的容器,非常适合我们的需求,可以当作一个低开销的虚拟机。
至于LXC和Docker的区别,这里就不进行细表了,毕竟我也了解的不多,只能说LXC更符合我的需求。
互联网是强大的,需求明确的话大概率能够找到比较匹配的解决方案,找到一篇博客为实验室建立公用GPU服务器,可以说是和我的需求基本一样,完美符合我的要求,正准备着手开始干,又找到一篇LXD容器的博客可爱的 LXD 系统容器,发现LXD似乎对于新手更加友好,操作封装的更好,而且更新。意外之喜是LXD能够支持前两篇博客并没有提到的 nvidia.runtime,能够和nvidia docker一样很好的支持nvidia显卡,这样就规避了宿主机和容器的nvidia driver和cuda的版本必须一致的大坑(毕竟容器不是自己在用,环境并不可控)。
LXC & LXD 官网
闲话说完,下面开始环境搭建。

LXD环境安装

基础环境:

OS: Ubuntu 18.04 bionic
CPU: Intel Xeon E5-1620 v4 (可能是最垃圾的E5 v4,只有4个物理核心)
Mem: 16GB
GPU: 1080TI * 2
操作时间: 2018年10月31日

1. 换源 & 更新

装完系统后首先就是换源,基本是复制地址,然后粘贴到 /etc/apt/sources.list 覆盖原文件,具体操作请参考相应源网站,比较理想的源有:

中科大源
清华源

学校的源有教育网出口,对于校园网用户是个最佳的选择

aliyun源

等等其他公司的镜像源

换源之后,更新一下,再安装必要的工具

sudo apt update
sudo apt upgrade
sudo apt install vim openssh-server
sudo apt install git gcc g++ make cmake build-essential curl

2. 安装驱动、CUDA和LXD等工具

18.04的apt源里集成了很多16.04里并没有的东西,nvidia驱动和cuda都可以通过apt安装,避开很多坑且操作更加简单,但是这里我们apt安装的驱动最高为390,cuda为9.1,比较尴尬,我们需要cuda9.2。这里,网上很多教程都是单独安装驱动再安装cuda,说是cuda带的驱动有问题,经测试,直接在官网下的cuda安装包直接安装配套的cuda和驱动在我的机器上是没有问题的,所以直接下载安装包安装,安装后重启。

# 卸载可能存在的nvidia驱动
sudo apt-get remove --purge nvidia*
​
#把 nouveau 驱动加入黑名单并禁用用 nouveau 内核模块
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
​
# 在文件 blacklist-nouveau.conf 中加入如下内容:
blacklist nouveau
options nouveau modeset=0
​
# 保存退出,执行
sudo update-initramfs -u

# 安装驱动,地址是官网给的cuda下载地址
wget https://developer.nvidia.com/compute/cuda/9.2/Prod2/local_installers/cuda_9.2.148_396.37_linux https://developer.nvidia.com/compute/cuda/9.2/Prod2/patches/1/cuda_9.2.148.1_linux

# 下载cuda9.2的base包和patch包后,需要改名(文件不带后缀),并给执行权限
mv cuda_9.2.148.1_linux cuda_9.2.148.1_linux.run
mv cuda_9.2.148_396.37_linux cuda_9.2.148_396.37_linux.run
sudo chmod +x cuda_9.2.148_396.37_linux.run cuda_9.2.148.1_linux.run

# 安装cuda和打patch,一路默认选项,可以忽略提示
sudo ./cuda_9.2.148_396.37_linux.run
sudo ./cuda_9.2.148.1_linux.run

# 安装lxd
sudo apt install lxd lxd-client lxd-tools

# 安装nvidia-runtime-tools
# 添加源
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
distribution=
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值