元のブログ:[Doiテクニカルチーム](http://blog.doiduoyi.com/)
リンクアドレス:[https://blog.doiduoyi.com/authors/1584446358138](https://blog.doiduoyi.com/authors/1584446358138)
当初の意図:優れた土井技術チームの学習経験を記録する
目次
序文
グラフィックドライバをインストールする
nouveauドライバーを無効にする
ドライバーをダウンロード
古いドライバーをアンインストールします
新しいドライバーをインストールする
CUDAをアンインストールします
CUDAをインストールします
CUDAをダウンロードしてインストールします
インストールが成功したかどうかをテストします
CUDNNをダウンロードしてインストールします
テストインストール結果
参照
最近、さまざまなグラフィックカードドライバーバージョンでのPaddlePaddleのインストールと使用法を研究しているので、UbuntuでCUDAとCUDNNをインストールおよびアンインストールする方法と、学習プロセスを記録する方法も学びました。誰もが学ぶことができる一方で、彼らはまた彼らの記憶を強化しています。この記事では、例としてCUDA8.0とCUDNN7.05のアンインストール、例としてCUDA10.0とCUDNN7.4.2のインストールについて説明します。
sudo vim /etc/modprobe.d/blacklist.conf
テキストの最後に追加します。
blacklist nouveau
options nouveau modeset=0
次に、以下を実行します。
sudo update-initramfs -u
再起動後、次のコマンドを実行します。画面出力がない場合は、nouveauが正常に無効になっていることを意味します。
lsmod | grep nouveau
公式ウェブサイトのダウンロードアドレス:https://www.nvidia.cn/Download/index.aspx?lang = cn、自分のグラフィックカードに応じて対応するバージョンのグラフィックカードドライバーをダウンロードします。たとえば、作成者のグラフィックカードはRTX2070です。
ダウンロードが完了すると、インストールパッケージが提供されます。バージョンが異なると、ファイル名が異なる場合があります。
NVIDIA-Linux-x86_64-410.93.run
次の操作はすべて、コマンドインターフェイスで操作し、次のショートカットキーを実行してコマンドインターフェイスに入り、ログインする必要があります。
Ctrl-Alt+F1
次のコマンドを実行してX-Windowサービスを無効にします。無効にしないと、グラフィックスドライバーをインストールできません。
sudo service lightdm stop
次の3つのコマンドを実行して、元のグラフィックスドライバーをアンインストールします。
sudo apt-get remove --purge nvidia*
sudo chmod +x NVIDIA-Linux-x86_64-410.93.run
sudo ./NVIDIA-Linux-x86_64-410.93.run --uninstall
ドライバファイルを実行することにより、新しいドライバを直接インストールできます。デフォルトは常に次のとおりです。
sudo ./NVIDIA-Linux-x86_64-410.93.run
次のコマンドを実行して、X-Windowサービスを開始します
sudo service lightdm start
最後に、restartコマンドを実行して、システムを再起動します。
reboot
**注:**システムの再起動後にログインが繰り返されると、ほとんどの場合、間違ったバージョンのグラフィックスドライバーがインストールされます。自分のマシンにインストールされているグラフィックカードバージョンをダウンロードする必要があります。
そもそもCUDAをアンインストールしたのはなぜですか?グラフィックカードRTX2070を変更したためです。CUDA8.0とCUDNN7.0.5のオリジナルインストールは正常に使用できません。CUDA10.0とCUDNN7.4.2をインストールする必要があるので、まずは元のCUDAをアンインストールします。以下のコマンドはすべてrootユーザーの下で操作されることに注意してください。
CUDAのアンインストールは非常に簡単です。1つのコマンドで十分です。主な実行はCUDAに付属のアンインストールスクリプトです。読者は、自分のcudaバージョンに従ってアンインストールスクリプトを見つける必要があります。
sudo /usr/local/cuda-8.0/bin/uninstall_cuda_8.0.pl
アンインストール後もフォルダが残っています。CUDA8.0は以前にインストールされていました。一緒に削除できます:
sudo rm -rf /usr/local/cuda-8.0/
このように、CUDAがアンインストールされても。
インストールされているCUDAおよびCUDNNバージョン:
次のインストール手順はすべて、rootユーザーの下で操作されます。
公式サイトにアクセスできます:[CUDA10ダウンロードページ](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal)、
自分のシステムバージョンに一致するCUDAをダウンロードします。ページは次のとおりです。
ダウンロードが完了したら、ファイルに実行権限を付与します。
chmod +x cuda_10.0.130_410.48_linux.run
インストールパッケージを実行し、インストールを開始します。
. /cuda_10.0.130_410.48_linux.run
インストールを開始した後、指示を読む必要があります。Ctrl+ C
を使用して直接読み取るか、 Spacebar
を使用してゆっくり読み取ることができます。次に、構成します。ここで説明します。
(条件に同意しますか、インストールを続行することに同意する必要があります)
accept/decline/quit: accept
(最新のドライバーが既にインストールされているため、ここにドライバーをインストールしないでください。インストールすると、古いバージョンのグラフィックカードドライバーがインストールされ、ログインが繰り返される可能性があります)
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?(y)es/(n)o/(q)uit: n
Install the CUDA 10.0 Toolkit?(CUDA 10をインストールするかどうかは、ここにインストールする必要があります)(y)es/(n)o/(q)uit: y
ツールキットの場所を入力します(インストールパス、デフォルトを使用し、Enterキーを押すだけです)
[ default is /usr/local/cuda-10.0]:
Do you want to install a symbolic link at /usr/local/cuda?(ソフトリンクを作成することに同意します)(y)es/(n)o/(q)uit: y
Install the CUDA 10.0 Samples?(インストールしてテストする必要はありません、それ自体があります)(y)es/(n)o/(q)uit: n
Installing the CUDA Toolkit in/usr/local/cuda-10.0...(インストール開始)
インストールが完了したら、環境変数を構成し、 vim〜 / .bashrc
の最後に次の構成情報を追加できます。
export CUDA_HOME=/usr/local/cuda-10.0export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
最後に、コマンド source〜 / .bashrc
を使用して効果的にします。
コマンド nvcc -V
を使用して、インストールされているバージョン情報を表示できます。
test@test:~$ nvcc -V
nvcc:NVIDIA(R) Cuda compiler driver
Copyright(c)2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
次のコマンドを実行します。
cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
make
. /deviceQuery
通常の状況での出力:
. /deviceQuery Starting...
CUDA Device Query(Runtime API)version(CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0:"GeForce RTX 2070"
CUDA Driver Version / Runtime Version 10.0/10.0
CUDA Capability Major/Minor version number:7.5
Total amount of global memory:7950MBytes(8335982592 bytes)(36) Multiprocessors,(64) CUDA Cores/MP:2304 CUDA Cores
GPU Max Clock rate:1620MHz(1.62 GHz)
Memory Clock rate:7001 Mhz
Memory Bus Width:256-bit
L2 Cache Size:4194304 bytes
Maximum Texture Dimension Size(x,y,z) 1D=(131072), 2D=(131072,65536), 3D=(16384,16384,16384)
Maximum Layered 1D Texture Size,(num) layers 1D=(32768),2048 layers
Maximum Layered 2D Texture Size,(num) layers 2D=(32768,32768),2048 layers
Total amount of constant memory:65536 bytes
Total amount of shared memory per block:49152 bytes
Total number of registers available per block:65536
Warp size:32
Maximum number of threads per multiprocessor:1024
Maximum number of threads per block:1024
Max dimension size of a thread block(x,y,z):(1024,1024,64)
Max dimension size of a grid size(x,y,z):(2147483647,65535,65535)
Maximum memory pitch:2147483647 bytes
Texture alignment:512 bytes
Concurrent copy and kernel execution: Yes with3 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing(UVA): Yes
Device supports Compute Preemption: Yes
Supports Cooperative Kernel Launch: Yes
Supports MultiDevice Co-op Kernel Launch: Yes
Device PCI Domain ID / Bus ID / location ID:0/1/0
Compute Mode:<Default(multiple host threads can use ::cudaSetDevice()with device simultaneously)>
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version =10.0, CUDA Runtime Version =10.0, NumDevs =1
Result = PASS
CUDNNの公式ダウンロードWebサイト(https://developer.nvidia.com/rdp/cudnn-download)にアクセスし、[ダウンロード]をクリックしてダウンロードバージョンの選択を開始します。もちろん、ダウンロードする前にログインする必要があります。バージョンインターフェイスは次のとおりです。「cuDNNライブラリ」を選択します。 Linux`:
ダウンロード後は、次のように圧縮されたパッケージになります。
cudnn-10.0-linux-x64-v7.4.2.24.tgz
次に解凍します。コマンドは次のとおりです。
tar -zxvf cudnn-10.0-linux-x64-v7.4.2.24.tgz
解凍後、次のファイルを取得できます。
cuda/include/cudnn.h
cuda/NVIDIA_SLA_cuDNN_Support.txt
cuda/lib64/libcudnn.so
cuda/lib64/libcudnn.so.7
cuda/lib64/libcudnn.so.7.4.2
cuda/lib64/libcudnn_static.a
次の2つのコマンドを使用して、これらのファイルをCUDAディレクトリにコピーします。
cp cuda/lib64/* /usr/local/cuda-10.0/lib64/
cp cuda/include/* /usr/local/cuda-10.0/include/
コピーが完了したら、次のコマンドを使用してCUDNNのバージョン情報を表示できます。
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
これで、CUDA10とCUDNN7.4.2のインストールが完了しました。対応する[GPU](https://cloud.tencent.com/product/gpu?from=10680)バージョンのPytorchをインストールして、正常に使用できるかどうかをテストできます。インストールは次のとおりです。
pip3 install https://download.pytorch.org/whl/cu100/torch-1.0.0-cp35-cp35m-linux_x86_64.whl
pip3 install torchvision
次に、次の手順を使用してインストールをテストします。
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
classNet(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)inenumerate(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")
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 inrange(1,11):train(model, device, train_loader, optimizer, epoch)if __name__ =='__main__':main()
以下の情報が正常に出力された場合は、インストールされていることを示しています。
Train Epoch:1[0/60000(0%)] Loss:2.365850
Train Epoch:1[640/60000(1%)] Loss:2.305295
Train Epoch:1[1280/60000(2%)] Loss:2.301407
Train Epoch:1[1920/60000(3%)] Loss:2.316538
Train Epoch:1[2560/60000(4%)] Loss:2.255809
Train Epoch:1[3200/60000(5%)] Loss:2.224511
Train Epoch:1[3840/60000(6%)] Loss:2.216569
Train Epoch:1[4480/60000(7%)] Loss:2.181396
Recommended Posts