创建虚拟机,选择Ubuntu 64bit
CPU:4core,不打开IOMMU【有些文档提到要打开,实际上不需要,否则虚拟机无法启动】
Memory:32GB Reserved
Disk:100GB Thin provision
引导方式选择:EFI
此时不能分配显卡,否则虚拟机无法启动!!!
虚拟机配置参考:https://blogs.vmware.com/apps/2018/09/using-gpus-with-virtual-machines-on-vsphere-part-2-vmdirectpath-i-o.html
Ubuntu 18.0.4 Desktop 64bit
分区方案:
SWAP, 16GB或32GB
/boot, 1000M
/,主分区,50GB
/efi,50MB,这个必须有,否则无法下一步【物理机,这一步不需要】
/home,allocate all the space
装好之后,进入系统。
######################################################
1、更换软件安装源
######################################################
更换源之后安装包的速度明显加快!
最佳实践,装完之后,点击图形界面,安装最新的更新。
######################################################
2、打开root访问权限
######################################################
1、开启root用户,首先给root用户设置一个密码:
$ sudo passwd root
2. 使用root用户登陆
$ sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在最后增加greeter-show-manual-login=true
保存退出。注销后可看到登陆框已显示,可输入用户名。
3. 关闭guest用户
$ sudo vi /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在最后增加allow-guest=false
保存退出。注销后可看到已经没有guest用户登陆的选项。
————————————————
这里可以新安装Openssh-server,能够ssh登录
######################################################
3、安装Openssh-server
######################################################
sudo apt install openssh-server
vi /etc/ssh/sshd_confi
找到:#PermitRootLogin prohibit-password
修改为:PermitRootLogin yes
之后,就可以通过ssh客户端和图形界面登录到系统了。
用root登录,即可!
######################################################
root图形界面登录设置:
######################################################
默认不能登录,需要修改以下参数文件实现。
第三步:进入/etc/pam.d目录,修改gdm-autologin和gdm-password文件
vi gdm-autologin
注释掉auth required vvpam_succeed_if.so user != root quiet_success这一行,保存
vi gdm-password
注释掉 auth required pam_succeed_if.so user != root quiet_success这一行,保存
Logout当前管理员账户,通过图形界面登录到root账户
第四步:修改/root/.profile文件
vi /root/.profile
将文件末尾的mesg n || true这一行修改成tty -s && mesg n, 保存
第五步:重启系统,输入root用户名和密码,登录系统。
######################################################
4、安装VMware Tools
######################################################
ubuntu 18.0.4
没有运行./vmware-distr-tools -d的选项,一步步安装
######################################################
5、配置显卡直通
######################################################
千万注意,不能在安装操作系统之前分配显卡,这是无法启动的。
还有一定要注意,如果虚拟机无法启动,关闭主机【草他妈的,垃圾设计冷关机几分钟才行】
另外,测试用NVIDIA Quadro P600,是一个GPU和声卡,二者都需要PCI直通进来。
两个PCI设备都已经正确添加。
非常重要!非常重要!非常重要
确保使用ESXi和Nvidia官方认证的显卡,一般都是企业级的。如果是消费级GPU,官方不支持,如NVIDIA Quadro、RTX系列,需要做非官方支持的设置,让ESXi DirectPATH I/O不要捕获,VMware识别到NVIDIA的品牌后,在reset过程中用到的方法企业级和消费级卡不相同,因此务必要设置。参考如下:
https://www.reddit.com/r/Amd/comments/72ula0/tr1950x_gtx_1060_passthrough_with_esxi/?utm_source=amp&utm_medium=&utm_content=post_body
以Quadro P600消费级显卡为例:
设备名称:GP107GL [Quadro P600]
设备ID: 1CB2
设备Vendor:10DE(NVIDIA)
则需要在passthrough的map中,设置不需要esxi接管reset、interrupt等。
vi /etc/vmware/passthru.map
在NVIDIA标签之下,删除现有内容,加入:
NVIDIA
设备ID Vendor ID 指令 开关
10de 1cb2 d3d0 false
重启服务器。
此处关于显卡被ESXi接管确实有很多模式,具体不清楚如何设置,但是可以肯定的是需要企业级显卡,个人级显卡问题很多。
7) If an only if your VM is unstable past this point you can attempt a final step which will require the host reboot. Edit your /etc/vmware/passthru.map and modify the bridge keyword into a different value. Accepted values are: d3d0, link, bridge, default
https://communities.vmware.com/thread/598626
2020-04-23 几经尝试,虚拟机无法识别显卡。
放弃安装物理机,可能是因为ubuntu版本、驱动等问题导致的。
据称,对于企业级显卡nVIDIA Driver支持显卡passthrough,而消费级显卡,不支持,所以一旦Ubuntu系统中对ESXi配置passthrough直通的显卡安装了驱动(尤其是这两年的新驱动),虚拟机则无法识别到显卡,nvidia-smi无效。
进入系统,查看是否有PCI设备。
root@dladmin-virtual-machine:~# lspci |grep NVIDIA
03:00.0 VGA compatible controller: NVIDIA Corporation GP107GL [Quadro P600] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)
查看系统驱动:
这是默认的SVGA VMware Tools的驱动:
root@dladmin:~# ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:0f.0 ==
modalias : pci:v000015ADd00000405sv000015ADsd00000405bc03sc00i00
vendor : VMware
model : SVGA II Adapter
manual_install: True
driver : open-vm-tools-desktop – distro free
这个设备是NVIDIA显卡的驱动
== /sys/devices/pci0000:00/0000:00:16.0/0000:0b:00.0 ==
modalias : pci:v000010DEd00001CB2sv000010DEsd000011BDbc03sc00i00
vendor : NVIDIA Corporation
model : GP107GL [Quadro P600]
driver : nvidia-driver-390 – distro non-free
driver : nvidia-driver-435 – distro non-free recommended
driver : nvidia-driver-430 – distro non-free
driver : xserver-xorg-video-nouveau – distro free builtin
最后安装了435,支持CUDA10.1,如果需要CUDA10.2,则需要至少440以上Driver。
两部:
- 写到nouveau驱动,用blacklist方法,重启lsmod | grep nouveau,看到没有了nouveau模块
- 安装驱动电方法是命令行,apt install nvidia-driver-435。
因为我没有更新ppa 的repository,所以系统没有发现440的驱动。因为我计划安装tensorflow 2.0版本只需要CUDA10.1以上。
######################################################
6、卸载系统自带显卡直通
######################################################
之前用网上推荐方法把opensource的nouveau驱动屏蔽卸载,但是操大大爷的,重启居然无法启动了!!!
卸载方法如下:
1.打开blacklist。
sudo vim /etc/modprobe.d/blacklist.conf
没有vim命令的先安装vim命令
sudo apt-get install -y vim-gtk
2.在文件末尾添加
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
3.禁用nouveau内核
echo options nouveau modeset=0
安装新的驱动,使用图形界面
最好用自带的图形化工具,安装推荐的Driver。
显示安装成功,需要重启。
注意到上述驱动不是最新的。
如果用tensorflow,CUDA10.1版本,最少需要驱动418以上;
如果需要CUDA10.2,那么至少需要440以上版本。
推荐使用:图形驱动程序PPA存储库允许我们安装NVIDIA beta驱动程序,但是这种方法存在不稳定的风险。首先,将ppa:graphics-drivers/ppa存储库添加到系统中:
root用户运行:
add-apt-repository ppa:graphics-drivers/ppa
apt update
然后安装440版本的驱动:
apt-get install –reinstall nvidia-driver-440
更新graphic repository,然后安装440版本的driver。
阿里的源,但是依然不快,驱动大约500M左右。
然后重启系统
######################################################
7、Xmanager设置
######################################################
部署Xmanager,图形化连接到虚拟机
https://blog.csdn.net/weixin_43441227/article/details/103546376
vi /usr/share/lightdm/lightdm.conf.d/目录,打开50-unity-greeter.conf 文件,添加信息
加入以下设置:user-session=ubuntu
greeter-show-manual-login=true
all-guest=false
使用 vi /root/.profile命令修改文件,找到mesg n,修改为:tty -s && mesg n
重启,使用root登录,这部分之前已经做过了。
- 配置XDCP设置
3.1 安装LightDM
sudo apt install lightdm
3.2 配置LightDM
vim /etc/lightdm/lightdm.conf
若不存在请创建
3.3 关闭防火墙
sudo service ufw stop
3.4 重启XDMCP服务
sudo systemctl disable gdm
sudo systemctl stop gdm
sudo systemctl enable lightdm
sudo systemctl start lightdm
3.5 创建Xmanager连接
安装用户新的桌面环境(xfce),选择lightdm
sudo apt-get update
sudo apt-get install xubuntu-desktop
重启XDMCP进程来使其生效
sudo service lightdm restart
4. 使用xmanager连接
######################################################
8、安装CUDA、CUDNN、TensorRT
######################################################
https://www.tensorflow.org/install/gpu
Add NVIDIA package repositories
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
sudo apt-key adv –fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
Install NVIDIA driver
sudo apt-get install –no-install-recommends nvidia-driver-418
Reboot. Check that GPUs are visible using the command: nvidia-smi
Install development and runtime libraries (~4GB)
这个地方命令的意思好像就是安装了CUDA10.1,因此进入系统后,/usr/local/cuda这个链接执行的就是/cuda-10.1的文件夹,而cuda-10.2的文件夹下面没有文件。而实际上我的显卡driver是435,对应的cuda是10.2. 如果想修改cuda的版本,那么只需要删除/usr/local/cuda,然后创建一个新的link指向cuda-10.2
sudo apt-get install –no-install-recommends
cuda-10-1
libcudnn7=7.6.4.38-1+cuda10.1
libcudnn7-dev=7.6.4.38-1+cuda10.1
重启一下,遇到过nvidia-smi执行报错的事情。
实际上我原有驱动版本是435,经过上述安装后,驱动版本变为440,不知什么原因,CUDA里包含驱动吧。
#######################################################################
9 安装配置 CUDNN
########################################################################
流程是:解压,拷贝,配置环境变量
解压
$ tar -zxvf cudnn-10.1-linux-x64-v7.4.2.24.tgz
拷贝
$ cd cudnn-10.1-linux-x64-v7.4.2.24
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
修改权限
$ sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h /usr/local/cuda-10.1/lib64/libcudnn*
将下面内容追加到~/.bashrc:
export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export CUDNN_PATH="/usr/local/cuda-10.1/lib64/libcudnn.so"
验证cnDNN
下面命令不报错就OK。
$ echo -e ‘#include"cudnn.h"\n void main(){}’ | nvcc -x c – -o /dev/null -lcudnn
最后验证,没有报错。
root@dladmin-SA5248L:~# nvcc –version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
#####################################################################################
10、安装tensorRT
######################################################################################
Install TensorRT. Requires that libcudnn7 is installed above.
sudo apt-get install -y –no-install-recommends libnvinfer6=6.0.1-1+cuda10.1
libnvinfer-dev=6.0.1-1+cuda10.1
libnvinfer-plugin6=6.0.1-1+cuda10.1
#####################################################################################
11、安装Anaconda
#####################################################################################
为安装tensorflow做准备,anaconda会创建和维护不同的python环境,并且可以用pip的方式安装tensorflow。
./Anaconda3-2020.02-Linux-x86_64.sh
更新一下源:清华大学源,比较快
conda config –add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config –set show_channel_urls yes
安装完毕之后,logout,然后重新登录。
此时which python,可以看到是anaconda的路径。pip也改为anaconda的路径,并且pip —version显示为20.2版本,可以安排tensorflow。
#####################################################################################
12、安装Tensorflow for GPU
#####################################################################################
直接一个命令行安装。tensorflow 2.0版本部分GPU与CPU版本,用一个命令安装即可。
pip install –user –upgrade tensorflow
此时,可以看到已经安装了tensorflow 2.1最新版本,是融合了CPU和GPU的版本。
验证安装结果:
python3
在命令行输入:
import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))”
可以看到输出系统信息、显卡信息等,说明成功了。
由于是测试,显卡比较差,但是也能work。TensorFlow要求GPU Compute Capability超过2才能安装,测试的先看居然6.1.
#############################################################
12、部署Jupyter Notebook
#####################################################################################
最后配置jupyter notebook
########################################################################
默认anaconda已经安装好了jupyter notebook,就像Mac os版本相同。
在conda的base环境中装好jupyter进行配置,生成.jupyter文件
配置jupyter notebook
jupyter notebook –generate-config –allow-root
2. 获取登陆jupyter所需要的密码(为了安全)
进入python,输入以下,得到sha值
$ python
from notebook.auth import passwd
passwd()
保存这个sha值
‘sha1:06d1342a7e50:773300970025e410a47ebb54fc2ece132d28c7a0’
- 会输出一串sha值,复制sha值,用于后续填入
c.NotebookApp.password
中,接着exit()退出python,输入以下,修改jupyter配置文件:
vi ~/.jupyter/jupyter_notebook_config.py
修改jupyter配置文件,参数设置含义依次为:
c.NotebookApp.ip=’‘
c.NotebookApp.password = u’sha1:363b48908207:875c647f80ad39c668db77628a244f15fc416bb9′
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888
c.NotebookApp.allow_root = True
c.NotebookApp.allow_remote_access = True
#c.NotebookApp.notebook_dir = ‘/home’
设置为""意思是支持任何ip地址连接,也可以修改成自己(宿主机IP);
设置登陆jupyter的密码转成的sha值;如果不设置就会自动生成一堆token值,也可以的;
设置为禁止自动启动浏览器,因为服务器中没有浏览器,为了避免错误而设;
设置port接口为8888,自己设置的端口号,别与已有端口号冲突即可;
设置支持root权限登陆
设置支持远程连接,否则可能出现不能远程连接的报错
4. 后台启动jupyter,并把log日志记录在当前文件夹下的nohup.out文件中,在浏览器中输入以下即可,http://<宿主IP>:8888
nohup jupyter notebook &
http://xxx.xx.xx.xx:8888
验证,在浏览器中输入以下即可,########################################################################
运行测试,在jupyter web界面上,新建一个python3类型的文件,粘贴一下测试代码:
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation=’relu’),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=’softmax’)
])
model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=[‘accuracy’])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
然后找到【CELL】- 运行,开始下载MINIST训练文件,然后即可查看到5个EPOCH的执行结果和精度数值。
在运行期间,运行nvidia-smi,可以看到GPU跑起来了。
暂无评论