阿里云服务器vgn5i配NVIDIA CUDA TF2测试成功

先吐槽会

说实在话,本来感觉这个服务器挺牛的,什么TSLA P4,稍微不注意全是坑。以前也没买过类似的GPU卡,完全不知道配置vgn5i P4/4竟然是2G的显存,啥玩意????还不够我配置一个深度服务的。不过就当GPU服务器玩玩,看得上的只是阿里云的带宽,不像本地网速,卡卡卡。。

驱动的安装那就又是一个坑,玩了我整整一天时间,和客服各种交流,终于可以运行调起nvidia, cuda, cudnn服务了。赶紧记录一下吧。

驱动安装

安装的参考目录:
(1)阿里云GPU实例中安装GRID驱动
(2)在vgn6i和vgn5i实例中安装GRID驱动(Linux)
(3)安装Anaconda环境
(4)Tensorflow环境安装与配置

驱动安装并测试

话不多少,开始干。。。

安装Ubuntu 16.04 64-bit系统

进入控制台,进入自己的实例列表,在当前实例的操作菜单栏中,选择更多下的实例状态,点击停止,然后在磁盘和镜像中,选择切换操作系统,切记一定要选择阿里云提供的纯净的Ubuntu 16.04 64-bit的系统。市场的系统,会给你安装特别多的插件,容易出问题。
设置密码,安装完成以后,使用远程连接工具进行服务器的连接。

安装Nvidia Cuda驱动

1、查看是否存在blacklist-nouveau.conf文件。

ls /etc/modprobe.d/blacklist-nouveau.conf

2、如果文件存在,则跳过本步骤。如果文件不存在,则执行命令vim /etc/modprobe.d/blacklist-nouveau.conf创建文件,并在文件中添加以下内容禁用nouveau。

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0

3、生成kernel initramfs。

rmmod nouveau
update-initramfs -u

注:我在执行第一条命令的时候,报错了,啥玩意。。。不过还是硬着头皮继续吧。第二条命令正常执行,如果有错,那也继续,万一不影响呢。心态要好,继续吧。。。
4、重启实例。

reboot

5、远程连接实例,依次运行以下命令升级系统并安装KDE桌面。

apt-get update
apt-get upgrade
apt-get install kubuntu-desktop

注:不管用不用KDE桌面这玩意,都装吧。只为了GPU更好用。
6、重启实例。

reboot

7、远程连接实例,下载驱动包:

wget http://nvdia-driver-410.oss-cn-shenzhen.aliyuncs.com/NVIDIA-Linux-x86_64-410.39-grid.run      

注:一定要下载阿里云指定的这个驱动,千万别自作聪明。
8、安装GRID驱动

chmod 777 NVIDIA-Linux-x86_64-410.39-grid.run
./NVIDIA-Linux-x86_64-410.39-grid.run

9、运行命令nvidia-smi测试驱动安装结果。
如果返回以下类似结果,说明驱动已经安装成功了。
在这里插入图片描述
10、当然别以为这样就行了,也许其他的非GRID驱动能看到这张图就能够调起GPU来,但是这玩意儿不是,我用代码测试了,不太行。所以,继续做验证吧:
添加License服务器并激活License:
(1)切换到/etc/nvidia目录:

 cd /etc/nvidia。

(2)创建gridd.conf文件:

cp gridd.conf.template gridd.conf

(3)在gridd.conf文件中添加License服务器的信息。

ServerAddress=<License服务器的IP>
ServerPort=<License服务器的端口(默认为7070)>
FeatureType=2
EnableUI=TRUE

注:一般人应该没用过这玩意,这玩意应该是nvidia这家公司想多赚钱,开启的一个认证的凭证。每次使用的时候,去请求nvidia公司,征得许可,才可调用到gpu模块,唉,技术这玩意真能赚钱。不过,阿里云是有免费的测试凭证的,可以去和客服要一下。

11、运行命令安装x11vnc。

apt-get install x11vnc

注:装吧,别想了。。
12、运行命令lspci | grep NVIDIA查询GPU BusID

本示例中,查询到的GPU BusID为00:07.0。

13、配置X Server环境并重启。
(1)运行命令nvidia-xconfig --enable-all-gpus --separate-x-screens
(2)编辑/etc/X11/xorg.conf,在Section "Device"段添加GPU BusID,如本示例中为BusID “PCI:0:7:0”
在这里插入图片描述
14、重启实例。

reboot

15、运行命令安装GLX测试程序。

apt-get install mesa-utils                    

注:别问,继续
16、运行命令startx启动X Server。

apt-get install xinit
startx

17、开启一个新的SSH客户端终端,运行命令启动x11vnc。

x11vnc -display :1

18、安装Anaconda环境
(1)安装软件

wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh 

注:安装过程中,一直按着enter键,如果有停顿,就写yes。
(2)安装完成后,激活环境

source ~/.bashrc

(3)给anaconda添加镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
conda config --set show_channel_urls yes

(4)创建python3.7 的环境

conda create --name tf2 python=3.7

注:需要等一会,有耐心。
(5)激活tf2,并安装tensorflow 2.1.0 环境

conda activate tf2
pip install tensorflow==2.1.0

(6)安装 CUDA Toolkit 和 cuDNN

conda install cudatoolkit=10.1
conda install cudnn=7.6.5

19、测试
(1)新建一个测试gpu的文件,vi test1.py

import tensorflow as tf
from tensorflow.keras.layers import Flatten,Conv2D,Dropout,Input,Dense,MaxPooling2D
from tensorflow.keras.models import Model
import numpy as np

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

# 载入Mnist手写数据集
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

x_train = np.expand_dims(x_train,-1)
x_test = np.expand_dims(x_test,-1)
# 作为输入
inputs = Input([28,28,1])
x = Conv2D(32, kernel_size= 5,padding = 'same',activation="relu")(inputs)
x = MaxPooling2D(pool_size = 2, strides = 2, padding = 'same',)(x)
x = Conv2D(64, kernel_size= 5,padding = 'same',activation="relu")(x)
x = MaxPooling2D(pool_size = 2, strides = 2, padding = 'same',)(x)
x = Flatten()(x)
x = Dense(1024)(x)
x = Dense(256)(x)
out = Dense(10, activation='softmax')(x)

# 建立模型
model = Model(inputs,out)

# 设定优化器,loss,计算准确率
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 利用fit进行训练
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)

(3)执行该文件

python test1.py

(4)再开启一个远程连接,监控 nvidia使用情况:

watch -n 0.1 nvidia-smi

在这里插入图片描述
如果上述紫色框内容有值,那么恭喜你,如果没有,那无能为力了。

20、感慨
这玩意儿太麻烦了,配置这么低,NVIDIA还要收服务费,黑心商家!!!
今天刚测试好,赶紧花了半个小时记录一下,如果有同样入坑的小伙伴,那就来参考参考吧。点点小心心++++

安装Docker nvidia

参考内容:https://viencoding.com/article/215

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值