个人深度学习电脑配置,适合深度学习的电脑配置

首页 > 经验 > 作者:YD1662022-10-27 21:07:33

官网安装步骤:NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs (https://github.com/NVIDIA/nvidia-docker) 或者直接运行下面的命令:

##首先要确保已经安装了nvidia driver # 2. 添加源 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list # 2. 安装并重启 sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker

安装完成后可以新建一个容器测试一下:

sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:11.1-base

其中最后的参数nvidia/cuda:11.1-base 是Nvidia官方的镜像,需要根据工作站主机中实际安装的cuda版本进行修改,版本可以用nvcc -V查看。

进入容器之后可以跑一下nvidia-smi命令看看:

个人深度学习电脑配置,适合深度学习的电脑配置(21)

现在可以在docker里面正常使用GPU啦~

3.6 测试

这里通过一个简单的python脚本测试一下GPU训练是否一切正常,跑一个DL里面的Hello World程序,通过两种方法测试:本地conda和docker虚拟机。

以后的开发过程中一般还是使用Docker的方式来进行更为优雅。

1. 本地Conda环境方式:

先用conda新建一个python3.8 pytorch1.7 cuda11.0的虚拟环境:

conda create --name python_38-pytorch_1.7.0 python=3.8

创建完成后进入环境:

conda activate python_38-pytorch_1.7.0

检查一下是否切换到所需环境了:

which pip

如果看到使用的确实是我们设置的环境目录中的pip的话说明就ok。

接下来在环境中安装pytorch,可以参考官网的安装命令:Start Locally | PyTorch(https://pytorch.org/get-started/locally/)

个人深度学习电脑配置,适合深度学习的电脑配置(22)

输入以下命令进行安装:

pip install torch==1.7.0 cu110 torchvision==0.8.1 cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

环境配置就完成了,下面新建一个简单的测试脚本验证功能,新建mnist_train.py,内容如下:

import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import torch.backends.cudnn as cudnn from torchvision import datasets, transforms class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.conv2_drop = nn.Dropout2d() self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = F.relu(F.max_pool2d(self.conv1(x), 2)) x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) x = x.view(-1, 320) x = F.relu(self.fc1(x)) x = F.dropout(x, training=self.training) x = self.fc2(x) return F.log_softmax(x, dim=1) def train(model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device), target.to(device) optimizer.zero_grad() output = model(data) loss = F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % 10 == 0: print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( epoch, batch_idx * len(data), len(train_loader.dataset), 100. * batch_idx / len(train_loader), loss.item())) def main(): cudnn.benchmark = True torch.manual_seed(1) device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") print("Using device: {}".format(device)) kwargs = {'num_workers': 1, 'pin_memory': True} train_loader = torch.utils.data.DataLoader( datasets.MNIST('./data', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ])), batch_size=64, shuffle=True, **kwargs) model = Net().to(device) optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5) for epoch in range(1, 11): train(model, device, train_loader, optimizer, epoch) if __name__ == '__main__': main()

运行脚本,正常的话就可以看到训练输出了:

个人深度学习电脑配置,适合深度学习的电脑配置(23)

2. Docker环境方式:

首先还是新建一个Docker镜像,运行下面的命令:

sudo docker run -it --name train_mnist \ -v /etc/timezone:/etc/timezone \ -v /etc/localtime:/etc/localtime \ -v /home/pengzhihui/WorkSpace/_share:/home/workspace/_share \ --gpus all nvidia/cuda:11.1-base

就进入到了带gpu的ubuntu20.04容器中,效果可以参考文章开头的视频。按照前面的配置方法同样配置好pytorch和其他软件包,然后运行同样的脚本,也可以得到上述输出,说明gpu在docker中正常工作。

04

工作站维护篇

4.1 工作站系统备份还原

1. 备份

由于Linux本身万物皆文件的设计理念,加上root用户对几乎全部的系统文件都有访问和更改的权限,因此Linux系统的备份和还原其实非常简单,我们直接打包整个根文件系统就可以了。

我们可以使用tar命令来打包并压缩文件系统,不过这里在打包的过程中需要排除一些不需要文件,或者与新系统文件冲突的文件,包括/tmp、/proc、/lost found 等目录。

找一个你想保存备份文件的目录,运行下面的命令:

tar -cvpzf ubuntu_backup@`date %Y-%m %d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/lost found --exclude=/media --exclude=/mnt --exclude=/run /

我们会得到一个名为backup.tgz的压缩文件,这个文件包含我们需要备份的系统的全部内容。

2. 还原

如果系统没有出问题可以正常启动的话,那直接在刚刚的压缩包找找到想还原的文件替换就好了。而如果系统无法启动了,或者说想换一块硬盘克隆一样的系统,那么可以按一下步骤操作:

sudo su # 在tryUbuntu根目录下有media文件夹,里面是U盘文件夹和新安装的系统文件夹,在在里分别用(U盘)和(UBUNTU)表示 cd /media/(U盘) mount -o remount rw ./ # 将新系统根目录下/boot/grub/grub.cfg文件备份到U盘中 sudo cp /media/(Ubuntu)/boot/grub/grub.cfg ./ # 将新系统根目录下/etc/fstab文件备份到U盘中,fstab是与系统开机挂载有关的文件,grub.cfg是与开机引导有关的文件,所以这一步至关重要 sudo cp /media/(UBUNTU)/etc/fstab ./ # 这一步删除新装ubuntu全部的系统文件,有用的fstab及grub.cfg已经备份 cd /media/(UBUNTU) sudo rm -rf ./* # 将U盘中backup.tgz复制到该目录下并解压缩 cp /media/(U盘)/backup.tgz ./ sudo tar xvpfz backup.tgz ./ # 创建打包系统时排除的文件 sudo mkdir proc lost found mnt sys media

这一步完成后,在用我们在新系统中备份的fatab及grub.cfg 文件去替换压缩包中解压出来的同名文件,sudo reboot重启后就发现系统已经恢复到备份时的状态,包括各种框架,环境,系统设置~

以上,后面有更新的话还会继续补充,希望对大家有帮助~

历史文章点击→查看

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。

个人深度学习电脑配置,适合深度学习的电脑配置(24)

上一页23456下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.