初心者はまずこれを見てください
以前は CPU を使用してトレーニングを行ってきましたが、最近シングルカード 1080Ti グラフィックス ホストを入手したため、GPU トレーニングの勉強を始めました。GPU を使用したトレーニングでは必ず CUDA を使用します。私が初めて CUDA を使い始めたとき、非常に頭が痛く、Xiaobai に対して非常に不親切でした。ほぼ 1 日を費やし、途中で何度もやめたくなりました。難しかったですが、ネット上には複雑な記事がたくさんあって、本当に長い間いじっていました。そこで、この記事を書きました。新しいエントリーレベルの GPU マシン、CUDA をインストールしたい友人、CUDA をインストールしたい友人、寄り道しないで、私のようにならないでください。同じように時間の無駄です。
初心者が理解するのが最も難しいのは、CUDA と cuDNN が何であるか、そしてインストールのプロセスと手順です。ここで簡単に説明します。まず、マシンの /usr/local ディレクトリに cuda または cuda-xx.xx フォルダがあるかどうかを確認します。存在しない場合、99.99% はマシンに CUDA がインストールされていないことを意味します。nvidia-smi または nvcc --version コマンドで表示される CUDA バージョン番号は意味がありませんので、信頼しないでください。
CUDA が GPU ディープ ラーニングのランタイム ライブラリである場合、cuDNN はトレーニング高速化ツールであり、この 2 つは併用する必要があるため、一般的な機械学習にはトレーニング エンジン (tensorflow-gpu) + CUDA + cuDNN が必要です。cuDNN をインストールしないことは不可能であり、cuDNN のバージョンは CUDA のバージョンと一致する必要があります。詳細については、以下のブログ投稿を参照してください。
グラフィックカードドライバーがインストールされているかどうかを確認してください
NVIDIA グラフィックス カードがインストールされているかどうかを確認します
lspci | grep -i nvidia
グラフィックス カード情報の表示
nvidia-smi
このパターンが表示された場合は、グラフィックス カード ドライバーがインストールされていることを意味します。通常、インストールされている Ubuntu にはグラフィック カード ドライバーが含まれています。Alibaba Cloud で GPU クラウド ホスト A100 をレンタルしたときに、グラフィック カード ドライバーがありませんでした。ドライバーがない場合は、グラフィック カード ドライバーを手動でインストールする必要があります。
まずソースを追加します。
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
インストール可能なドライバーを確認します。
ubuntu-drivers devices
インストールするのに最適なドライバーを見つけて、「推奨」とマークされているドライバーをインストールします。通常、これは最大のデジタル バージョンを持つドライバーです。
sudo apt install nvidia-driver-XXX
自動的にインストールすることもできます。
sudo ubuntu-drivers autoinstall
エラーが報告されなければ、インストールは成功しています。この時点では、nvidia-smi コマンドを呼び出してもグラフィック カード情報が表示されない場合があります。システムを再起動すると表示されるので、心配しないでください。
CUDAをインストールする
私が初めて CUDA に触れたとき、nvidia-smi コマンドで表示される CUDA Version の値が CUDA がインストールされていることを意味していると考えていました。しかし、後で知ったのですが、ここでの CUDA とは、このグラフィックス カードがサポートする CUDA の最大バージョン番号を指します。したがって、CUDA を公式 Web サイトから手動でダウンロードする必要があり、バージョン番号をこれより大きくすることはできません。CUDA のインストールについては詳しく説明しませんが、ここで説明した以外には落とし穴はほとんどありませんので、簡単に紹介します。
まず、Ubuntu 20.04 のデフォルトの g++9 バージョンが高すぎるため、CUDA のインストールに失敗するため、最初に g++ バージョンを下げる必要があります。
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
sudo update-alternatives --display gcc
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1
sudo update-alternatives --display g++
次に、公式サイトから対応する CUDA をダウンロードしますが、ここで初心者にとって最も不親切なのは、「対応する CUDA」とは何ですか? ? ? 先ほど述べた GPU でサポートされる最大 CUDA バージョンに加えて、Tensorflow に対応する CUDA バージョンも考慮する必要があります。これは次の場所にあります。
https://www.tensorflow.org/install/source_windows
たとえば、Alibaba Cloud GPU ホストは通常 CUDA11 + cuDNN8 を使用するため、tf-gpu バージョン 2.4.0 で使用する必要があります。対応する CUDA がわからない場合は、CUDA10.1 + cuDNN7.6 + tensorflow-gpu 2.2.0 の組み合わせを使用することをお勧めします。
インストールする CUDA のバージョンがわかったら、非常に簡単です。NVIDIA 公式 Web サイトにアクセスして、対応するバージョンを直接ダウンロードするだけです。
https://developer.nvidia.com/cuda-toolkit-archive
20.04 がある場合は 20.04 を使用し、ない場合は最大のもの (通常は 18.04) を選択します。インストールには runfile を使用することをお勧めします。次の 2 つの文は非常に簡単です。
wget https://developer.download.nvidia.com/compute/cuda/11.1.1/local_installers/cuda_11.1.1_455.32.00_linux.run
sudo sh cuda_11.1.1_455.32.00_linux.run
最初の文は cuda_xxxx_linux.run スクリプトをダウンロードすることであり、2 番目の文はスクリプトを実行することです。ポップアップ インストール インターフェイスで [続行] を選択します。インストールを終了することを選択した場合は、インストールが失敗したことを意味します。失敗ログのパスを指定し、その理由を自分で確認しました。通常、これは次の問題です。 gcc のバージョン ダウングレード方法については上記で説明したため、詳細は説明しません。
このステップでは「accept」と入力します
次に、インストール項目を選択します。通常、グラフィックス カード ドライバーがインストールされているため、ここで最初のドライバーをチェックしないことをお勧めします。他のドライバーはデフォルトでインストールされます。
成功したら、環境変数を設定する必要があります。この手順は重要です。最初は CUDA がインストールされていると思ってこの手順を無視しましたが、TF の実行中に GPU が見つかりませんでした。
sudo vim ~/.bashrc
最後の行が増えます
$ export PATH=/usr/local/cuda-10.1/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64\
${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
フォルダー パスには特に注意してください。フォルダーが直接 /usr/local/cuda である場合もあれば、別のバージョン番号である場合もあります。フォルダーが存在することを確認してください。
source ~/.bashrc
最後に環境変数を更新します。
CUDA が正しくインストールされているかどうかを確認します: (フォルダー パスが存在する必要があり、上記の環境変数を設定するパスと一致している必要があることに注意してください)
cat /usr/local/cuda/version.txt
ここで特に注意してください:
最初はCUDAのこともよくわからず、この文を実行しても反応がなく、このメソッドは無効だと思いました。nvidia-smi または nvcc --version ディレクティブの両方を使用すると、CUDA のバージョン番号が表示されます。ただし、CUDA環境の設定がうまくできておらず、この2つのバージョン番号も取得できないため、正確ではありません。上記の方法で CUDA のバージョンを確認する必要があります。
cuDNNをインストールする
cuDNN は CUDA よりもインストールが簡単で、対応するバージョンの圧縮パッケージをダウンロードし、ファイルを指定したディレクトリにコピーして許可を与えるだけです。
公式サイトのダウンロードアドレス:(要登録)
https://developer.nvidia.com/cudnn
コピーされたパスは、上で指定した環境変数のパスでなければならないことに特に注意してください。
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h
sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*
cuDNN バージョンのメソッドを確認します。
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
新しいバージョンでは場所が変更されているため、この文は実行後は有効ではない可能性があることに注意してください。次を使用する必要があります。
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
ここでもう一度パスの問題に注目してください。
この時点で、CUDN + cuDNN のインストールは完了しています。関連するトレーニング ファイルを実行して、GPU 情報の出力があるかどうかを確認したり、GPU のステータスを監視したりできます。
watch -n 1 nvidia-smi
まだ CPU トレーニングを使用している場合は、上記の手順に従って何が問題だったかを確認する必要があります。
調子はどうですか、幸せですか?