简介
因为自己电脑的gpu不足,想要使用学校的gpu。学校的基本配置如下
系统是centos7.3.里面有8个V100
因为没有root权限,所以只能在文件夹下安装自己的所有东西,刚开始想要安装anaconda,然后在安装其他的cuda,cudnn,pytorch-gpu,然而在测试程序中无法使用GPU加速,很难受,然后放弃使用anaconda,反而可以了。
服务器的简单链接
因为自己的电脑的系统是ubuntu16.04,所以也比较方便,如果是win下的话,可以使用xshell,xftp。
链接的话使用ssh,我的是
ssh zhangyuting314@10.16.23.122
想要传输文件的话,可以打开文件后,左侧有一个Connect to Sever,如图
sftp://zhangyuting314@10.16.23.122/home/zhangyuting314
这样子就可以简单的使用了。
安装python2.7
如果你想要安装的是python3的话,估计没有必要安装pip了,好像是自带的。
1.下载python2.7
wget /ftp/python/2.7.5/Python-2.7.5.tgz
2.解压,然后到Python的文件路径下
tar -xzf Python-2.7.5.tgzcd Python-2.7.5
3.进行编译,--prefix这个路径需要修改一下,其实就是编译的路径了
./configure --prefix=/home/zhangyuting314/python2
4.安装
make -jmake install
5.配置环境,将PATH修改成自己的
vim ~/.bashrcexport PATH=/home/zhangyuting314/python2/bin:$PATHsource ~/.bashrc
6.测试
键入python,就可以看到自己安装的版本了
安装pip
下载pip-9.0.1,最后我会升级到19.01
wget /packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
解压以及安装
tar -zxvf pip-9.0.1.tar.gzcd pip-9.0.1python setup.py install
最后的一部出现了
ImportError: No module named setuptools
然后那就先安装setuptools
wget --no-check-certificate /packages/source/s/setuptools/setuptools-12.0.3.tar.gztar xvf setuptools-12.0.3.tar.gzcd setuptools-12.0.3python setup.py install
安装完之后,在回头安装pip
cd ~cd pip-9.0.1python setup.py install
现在基本上安装完成了,查看pip的版本
pip -V
然后在升级一下
pip install --upgrade pip
安装cuda9.0
下载地址
下载完成以后,传输到服务器中,
对.run添加权限,安装。
chmod +x cuda_9.0.176_384.81_linux.run./cuda_9.0.176_384.81_linux.run
照如下步骤进行安装
Do you accept the previously read EULA?accept/decline/quit:accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?(y)es/(n)o/(q)uit: nInstall the CUDA 9.0 Toolkit?(y)es/(n)o/(q)uit: yEnter Toolkit Location[ default is /usr/local/cuda-9.0 ]: 直接按enterDo you want to install a symbolic link at /usr/local/cuda?(y)es/(n)o/(q)uit: yInstall the CUDA 9.0 Samples?(y)es/(n)o/(q)uit: y
接下来添加环境,里面不需要修改了,注意里面是大写的HOME,不是home
vim ~/.bashrcexport PATH=$HOME/cuda9.0/bin:$PATHexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/cuda9.0/lib64/
然后激活环境
source ~/.bashrc
看是否安装好,键入。
nvcc -V
安装cudnn7.4
这个cudnn必须和cuda适配哦
下载地址
注册下载完成以后,传输到服务器中
然后解压,解压之后的文件是cuda文件
tar -xzvf cudnn-9.0-linux-x64-v7.4.1.5.tgz
复制
cp cuda/include/cudnn.h ~/cuda9.0/include/cp cuda/lib64/libcudnn* ~/cuda9.0/lib64chmod a+r ~/cuda9.0/include/cudnn.h ~/cuda9.0/lib64/libcudnn*
这样子就安装好了cudnn了
安装pytorch-gpu
找到pytorch的官网,里面右需要的命令取安装pytorch,如图
pip install torch torchvision
这里给一个测试程序吧
# coding=utf-8import torchimport torch.nn as nnfrom torch.autograd import Variableimport torch.utils.data as Dataimport torchvisionimport time# import matplotlib.pyplot as plttorch.manual_seed(1)EPOCH = 1BATCH_SIZE = 50LR = 0.001DOWNLOAD_MNIST = Falseif_use_gpu = 1# 获取训练集datasettraining_data = torchvision.datasets.MNIST(root='./MNIST_data/', # dataset存储路径train=True, # True表示是train训练集,False表示test测试集transform=torchvision.transforms.ToTensor(), # 将原数据规范化到(0,1)区间download=DOWNLOAD_MNIST,)# 打印MNIST数据集的训练集及测试集的尺寸print(training_data.train_data.size())print(training_data.train_labels.size())# torch.Size([60000, 28, 28])# torch.Size([60000])# plt.imshow(training_data.train_data[0].numpy(), cmap='gray')# plt.title('%i' % training_data.train_labels[0])# plt.show()# 通过torchvision.datasets获取的dataset格式可直接可置于DataLoadertrain_loader = Data.DataLoader(dataset=training_data, batch_size=BATCH_SIZE,shuffle=True)# 获取测试集datasettest_data = torchvision.datasets.MNIST(root='./MNIST_data/', # dataset存储路径train=False, # True表示是train训练集,False表示test测试集transform=torchvision.transforms.ToTensor(), # 将原数据规范化到(0,1)区间download=DOWNLOAD_MNIST,)# 取前全部10000个测试集样本test_x = Variable(torch.unsqueeze(test_data.test_data, dim=1).float(), requires_grad=False)# test_x = test_x.cuda()## (~, 28, 28) to (~, 1, 28, 28), in range(0,1)test_y = test_data.test_labels# test_y = test_y.cuda()class CNN(nn.Module):def __init__(self):super(CNN, self).__init__()self.conv1 = nn.Sequential( # (1,28,28)nn.Conv2d(in_channels=1, out_channels=16, kernel_size=5,stride=1, padding=2), # (16,28,28)# 想要con2d卷积出来的图片尺寸没有变化, padding=(kernel_size-1)/2nn.ReLU(),nn.MaxPool2d(kernel_size=2) # (16,14,14))self.conv2 = nn.Sequential( # (16,14,14)nn.Conv2d(16, 32, 5, 1, 2), # (32,14,14)nn.ReLU(),nn.MaxPool2d(2) # (32,7,7))self.out = nn.Linear(32 * 7 * 7, 10)def forward(self, x):x = self.conv1(x)x = self.conv2(x)x = x.view(x.size(0), -1) # 将(batch,32,7,7)展平为(batch,32*7*7)output = self.out(x)return outputcnn = CNN()if if_use_gpu:cnn = cnn.cuda()optimizer = torch.optim.Adam(cnn.parameters(), lr=LR)loss_function = nn.CrossEntropyLoss()for epoch in range(EPOCH):start = time.time()for step, (x, y) in enumerate(train_loader):b_x = Variable(x, requires_grad=False)b_y = Variable(y, requires_grad=False)if if_use_gpu:b_x = b_x.cuda()b_y = b_y.cuda()output = cnn(b_x)loss = loss_function(output, b_y)optimizer.zero_grad()loss.backward()optimizer.step()if step % 100 == 0:print('Epoch:', epoch, '|Step:', step,'|train loss:%.4f' % loss.item())duration = time.time() - startprint('Training duation: %.4f' % duration)cnn = cnn.cpu()test_output = cnn(test_x)pred_y = torch.max(test_output, 1)[1].data.squeeze()accuracy = sum(pred_y == test_y) / test_y.size(0)print('Test Acc: %.4f' % accuracy)
参考博客
/weixin_40085833/article/details/84325114