ディープラーニング環境構築 - NvidiaドライバーとCudaのインストール


序文

正直に言うと、著者は卒業後何年も働いていますが、開発環境の構成には未だに混乱するような問題が多くありますが、幸いなことに著者は昔からメモを書く習慣があり、それを記録しています。以前はプライベートクラウドで作成していましたが、今回はそれを整理して共有するとともに、手順の説明に加えて、その理由も可能な限り説明し、読者がロジックを明確にできるようにします。

注: この記事は Linux システムを対象としています。


1. 環境設定とファイル

この記事で使用する環境構成は次のとおりです。

  • グラフィックドライバー: nvdia430
    • ファイル名: NVIDIA-Linux-x86_64-430.14
  • キュー: キュー-10.0
    • ファイル名: cuda_10.0.130_410.48_linux
  • 非表示:非表示7.5
    • ファイル名: cudnn-10.0-linux-x64-v7.5.0.56

使用しているグラフィックス カード ドライバーは 430 バージョンであり、cuda10.0 に含まれる 410 バージョンのドライバーと一致していないことがわかりますが、大きな問題ではなく、430 ドライバーは cuda-10 と完全に互換性があります。ただし、インストールされているディスプレイ ドライバーが cuda のデフォルトのディスプレイ ドライバーのバージョンとあまりにも異なる場合、非互換性が発生するかどうかは不明であることに注意してください。

さらに、最新バージョンでは主要な深層学習フレームワークのサポートが理想的ではない可能性があるため、異なる cuda および cudnn バージョンの選択が非常に重要です。たとえば、tensorflow のプリコンパイル済みインストール パッケージは cuda10.0 のみをサポートし、その他のバージョンはサポートされません。手動でコンパイルする必要があります; cuda10 が最初に登場したとき、pytorch の libtorch は cuda9 のみをサポートしているため、必要に応じて選択してください。

2. インストール手順

2.1 インストール関連の依存関係

sudo apt-get install build-essential #这是编译环境,包含make,GCC G++等

作成者のコンピュータでは、コンパイル環境がインストールされて初めてグラフィックス カード ドライバを正常にインストールできますが、情報を確認したところ、作成者によって与えられた依存関係が異なることがわかりました。以下は部分的な概要です。コンパイル環境のみがインストールされている場合、がインストールされていますが、グラフィック カード ドライバーを正常にインストールできません。次のパッケージをインストールしてみてください。

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

2.2 公式ドライバーをインストールする

nvidia の公式 Web サイトにアクセスして、対応するドライバー https://www.nvidia.com/Download/index.aspx?lang=cn をダウンロードし
ここに画像の説明を挿入
、ダウンロードするグラフィックス カードに対応するドライバーを選択します。

2.3 nouveau を無効にしてグラフィカル インターフェイスを閉じる (Xserver)

Nouveau は、NVIDIA グラフィックス カード用にサードパーティによって開発されたオープン ソース 3D ドライバーであり、NVIDIA によって認識およびサポートされていません。Nouveau Gallium3D は、ゲーム速度の点では NVIDIA の公式プライベート ドライバーには遠く及びませんが、Linux がさまざまな複雑な NVIDIA グラフィックス カード環境に簡単に対応できるようになり、ユーザーはシステムのインストール後にデスクトップに入り、良好な表示を得ることができます。したがって、多くの Linux ディストリビューションにはデフォルトで Nouveau ドライバが統合されており、NVIDIA グラフィックス カードを使用するときにデフォルトでインストールされます。これは特にエンタープライズ バージョンの Linux に当てはまり、グラフィカル インターフェイスをサポートするほとんどすべてのエンタープライズ Linux ディストリビューションには Nouveau が含まれています。

しかし、個人のデスクトップ ユーザーにとっては、成長段階にある Nouveau は完璧ではなく、エンタープライズ版とは異なり、グラフィカル インターフェイスを正常に表示したいだけでなく、3D 特殊効果が必要になる場合が多く、Nouveau では完成できないことがほとんどです。 、NVIDIAの公式プライベートドライバーをインストールする際にユーザーのNouveauが邪魔になり、Nouveauを強制終了しないとインストール時に必ずエラーが発生します。

Xserver は Linux のグラフィカル インターフェイスです。

//etc/modprobe.d/blacklist.conf ファイルを変更し、このファイルの末尾に次のコマンドを追加します。

blacklist nouveau
options nouveau modeset = 0

変更後の図に示すように:
ここに画像の説明を挿入

次に、コマンドを実行して起動ファイルを更新し、再起動します。

sudo update-initramfs -u
sudo reboot

再起動後に nouveau が閉じられているかどうかを確認し、次のコマンドを入力します。

lsmod | grep nouveau

出力がない場合、nouveau は無効になります。
最後に GUI を閉じます。

 service lightdm stop

コンピュータに lightdm グラフィカル インターフェイスがインストールされていない可能性がありますが、gdm3 を使用していることに注意してください。この場合、次のコマンドを実行する必要があります。

service gdm3 stop

または、lightdm のインストール後に閉じる (経験上、今後もインストールする必要がある可能性が高いため、これをお勧めします)。インストール コマンドは次のとおりです。

sudo apt install lightdm

2.4 ドライバーをインストールする

グラフィックス カード ドライバーのインストール ファイルが配置されているディレクトリを入力し、次のコマンドを実行してインストールします。

sudo ./NVIDIA-Linux-x86_64-430.14.run –no-opengl-files

ダウンロードしたドライバーのバージョンが私のものと異なる可能性があるため、自分のファイル名を参照してください。また、パラメーター –no-opengl-files は、OpenGL ファイルをインストールしないことを意味します。このパラメーターにより、入力できない問題を回避できます。インストール プロセス中にグラフィカル インターフェイスが表示されます
。受け入れるか、最後まで続行してください。インストールが完了したら、次のコマンドを実行して、インストールが成功したかどうかを確認します。

nvidia-smi

成功すると、次のように表示されます。
ここに画像の説明を挿入
ディスプレイ ドライブの cuda バージョンが 10.2 であることがわかりますが、これからインストールする cuda10.0 とは競合していないようです。
次に、Xserver を起動し、再起動してバグを確認します。

service lightdm start
sudo reboot

Xserver が正常に起動できない場合、またはログイン インターフェイスでスタックした場合は、上記のインストール手順で Xserver が正しく閉じられなかったか、ドライバのインストール中にパラメータ –no-opengl-files が追加されなかった可能性が非常に高いです。確認してください。の場合、エラー処理方法は次のバグ処理の章に集中しています。

2.5 cudaをインストールする

グラフィックス カード ドライバーをインストールした後、cuda のインストールを開始します。また、nvidia の cuda ページに移動して、対応するインストール パッケージをダウンロードする必要があります。

cuda ダウンロードページ: https://developer.nvidia.com/cuda-downloads

ホームページではデフォルトでバージョン 10.1 が提供されています。必要なのは 10.0 です。レガシー リリースをクリックして以前のバージョンをダウンロードします。自分の
ここに画像の説明を挿入
ここに画像の説明を挿入
システム バージョンに応じてダウンロードします。作成者は ubuntu18 を使用しています。
ここに画像の説明を挿入
最初のベース インストーラーをダウンロードすると、通常どおり使用できます。パッチ 1はパッチです。必要に応じてダウンロードすることもできます。

次に、インストールを開始します。最初に Xserver を閉じてから、cuda10 インストール ファイルを実行する必要があることに注意してください。

service lightdm stop
sudo ./cuda_10.0.130_410.48_linux.run

このとき、確認を求めるメッセージが多数表示されますが、上記でグラフィックス カード ドライバーが正常にインストールされているため、ここで再度インストールする必要はありません。

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 XXX.XX ?

ここでは「いいえ」を選択し、残りは「はい」または受け入れる

インストールが成功したら、システム変数の追加を開始します。ここで、プロファイルに追加するか、自分のユーザーの .bashrc ファイルに追加するかを選択できます。

vim ~/.bashrc #打开配置文件
添加以下变量:
export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-10.0

追加後の効果は図に示すとおりです:
ここに画像の説明を挿入
これらの変数により、Python は cuda ライブラリとヘッダー ファイルを見つけて、見つからないなどのエラーを回避できます
。source コマンドを実行して、bashrc ファイルを有効にします。

source ~/.bashrc

最後に、cuda が正常にインストールされているかどうかを確認します。cuda をインストールするときに、関連するサンプルをインストールする必要があることに注意してください。この記事のチュートリアルに従えば、サンプルも正常にインストールされています。

cd /usr/local/cuda-10.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

次の情報が表示されれば、インストールは成功しています。
ここに画像の説明を挿入

2.6 cudnn のインストール

cuda をインストールした後、cudnn もインストールする必要があります: https://developer.nvidia.com/cudnn
ダウンロードする前に cudnn を登録する必要があることに注意してください。作者は cudnn バージョン 7.5 を使用しているため、それより前のバージョンを選択する必要もあります。ダウンロードするバージョン:
ここに画像の説明を挿入
ここに画像の説明を挿入
cudnn のインストール:
cudnn のインストールは簡単です。ファイルを解凍して cuda ルート ディレクトリにコピーするだけです。

tar -zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz #解压
cd cudnn-10.0-linux-x64-v7.5.0.56 #进入cudnn文件夹
sudo cp -r cuda/* /usr/local/cuda-10.0/ #将文件夹下的所有文件拷贝进cuda10下

この時点で作業は完了し、すべてのインストールが成功しました。

3. バグ対応

ここでは、著者がディスプレイ ドライブと cudnn で遭遇した関連するバグと解決策を紹介します。

3.1. 循環ログインまたは Xserver にアクセスできない

循環ログインまたはグラフィカル インターフェイスに入れない主な原因は、openGL のエラーであると推測されます。これは、インストール プロセス中に Xserver が無効になっていない、または nouveau が無効になっていないという操作に反映されています (ただし、理論的には、 nouveau なしではインストーラーを実行できず、エラーが報告されます) したがって、解決策は、現在のグラフィック カード ドライバーをアンインストールし、チュートリアルに従って再度インストールすることです。グラフィック カード ドライバーをアンインストールするコマンドは次のとおりです。

service lightdm stop #关闭Xerver服务
sudo /usr/bin/nvidia-uninstall #nvidia自带的卸载程序
sudo apt-get install autoremove --purge nvidia* #通过apt来卸载

上記 2 つのコマンドを再度実行すると、アンインストールを回避できます。

3.2. グラフィックス カード ドライバーが見つからず、nvidia-smi がエラーを報告する

cuda が正常に起動しないことが判明した場合は、nvidia-smi と入力してエラーを報告します。

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

ここには 2 つの可能性があります。最初の 1 つについてまず説明します。ドライバーのインストール直後にこのエラーが報告された場合は、nvidia ドライバーがカーネルによってロードされていないことが原因です。次のコマンドを実行して確認してください。カーネルファイルがあるかどうか:

cd /lib/modules
find . -name "*.ko" | grep -i nvidia

通常の状況での出力は次のようになります。
ここに画像の説明を挿入
比較して、nvidia.ko (または場合によっては nvidia_xxx.ko) ファイルが欠落しているかどうかを確認します。
見つからない場合は、カーネル ソースをインストールする必要があります。

sudo apt-get install linux-source
sudo apt-get install linux-headers-4.18.0-25-generic

4.18.0-25-generic は、コマンド uname -r の出力に由来します。2
番目のケースは、通常のインストール後、一定期間使用されていたが、ある日突然エラーが報告されるというものです。この場合、cuda 環境が最近変更されたため、グラフィック カード ドライバーが破損しています。
この場合、最も単純かつ失礼な方法は、すべての cuda ドライバーとグラフィック カード ドライバーをアンインストールして再インストールすることです。

service lightdm stop #关闭Xserver服务
sudo /usr/bin/nvidia-uninstall #nvidia自带的卸载程序
sudo apt-get autoremove --purge nvidia* #通过apt来卸载
sudo /usr/local/cuda-10.0/bin/uninstall_cuda_10.0.pl #卸载cuda

アンインストールが完了したら、再度インストールしてください。

おすすめ

転載: blog.csdn.net/TchaikovskyBear/article/details/129144438