Ubuntu 14.04 LTSでAWS EC2 g2.2xlargeインスタンスを実行しています。 TensorFlowモデルのトレーニング中にGPUの使用率を観察したいと思います。 「nvidia-smi」を実行しようとするとエラーが発生します。
ubuntu@ip-10-0-1-213:/etc/alternatives$ cd /usr/lib/nvidia-375/bin
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ ls
nvidia-bug-report.sh nvidia-debugdump nvidia-xconfig
nvidia-cuda-mps-control nvidia-persistenced
nvidia-cuda-mps-server nvidia-smi
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ ./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.
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ dpkg -l | grep nvidia
ii nvidia-346 352.63-0ubuntu0.14.04.1 AMD64 Transitional package for nvidia-346
ii nvidia-346-dev 346.46-0ubuntu1 AMD64 NVIDIA binary Xorg driver development files
ii nvidia-346-uvm 346.96-0ubuntu0.0.1 AMD64 Transitional package for nvidia-346
ii nvidia-352 375.26-0ubuntu1 AMD64 Transitional package for nvidia-375
ii nvidia-375 375.39-0ubuntu0.14.04.1 AMD64 NVIDIA binary driver - version 375.39
ii nvidia-375-dev 375.39-0ubuntu0.14.04.1 AMD64 NVIDIA binary Xorg driver development files
ii nvidia-modprobe 375.26-0ubuntu1 AMD64 Load the NVIDIA kernel driver and create device files
ii nvidia-opencl-icd-346 352.63-0ubuntu0.14.04.1 AMD64 Transitional package for nvidia-opencl-icd-352
ii nvidia-opencl-icd-352 375.26-0ubuntu1 AMD64 Transitional package for nvidia-opencl-icd-375
ii nvidia-opencl-icd-375 375.39-0ubuntu0.14.04.1 AMD64 NVIDIA OpenCL ICD
ii nvidia-prime 0.6.2.1 AMD64 Tools to enable NVIDIA's Prime
ii nvidia-settings 375.26-0ubuntu1 AMD64 Tool for configuring the NVIDIA graphics driver
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$ lspci | grep -i nvidia
00:03.0 VGA compatible controller: NVIDIA Corporation GK104GL [GRID K520] (rev a1)
ubuntu@ip-10-0-1-213:/usr/lib/nvidia-375/bin$
$ inxi -G
Graphics: Card-1: Cirrus Logic Gd 5446
Card-2: NVIDIA GK104GL [GRID K520]
X.org: 1.15.1 driver: N/A tty size: 80x24 Advanced Data: N/A out of X
$ lspci -k | grep -A 2 -E "(VGA|3D)"
00:02.0 VGA compatible controller: Cirrus Logic Gd 5446
Subsystem: XenSource, Inc. Device 0001
Kernel driver in use: cirrus
00:03.0 VGA compatible controller: NVIDIA Corporation GK104GL [GRID K520] (rev a1)
Subsystem: NVIDIA Corporation Device 1014
00:1f.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)
CUDA 7とcuDNNをインストールするには、次の手順に従いました。
$Sudo apt-get -q2 update
$Sudo apt-get upgrade
$Sudo reboot
================================================== ======================
再起動後、「$ Sudo update-initramfs -u」を実行してinitramfsを更新します
ここで、/ etc/modprobe.d/blacklist.confファイルを編集してnouveauをブラックリストに追加してください。エディターでファイルを開き、ファイルの最後に次の行を挿入します。
ブラックリストnouveauブラックリストlbm-nouveauオプションnouveau modeset = 0 alias nouveau off alias lbm-nouveau off
ファイルを保存して終了します。
ビルドに不可欠なツールをインストールし、initramfsを更新して、次のように再起動します。
$Sudo apt-get install linux-{headers,image,image-extra}-$(uname -r) build-essential
$Sudo update-initramfs -u
$Sudo reboot
================================================== ======================
再起動後、次のコマンドを実行してNvidiaをインストールします。
$Sudo wget http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run
$Sudo chmod 700 ./cuda_7.0.28_linux.run
$Sudo ./cuda_7.0.28_linux.run
$Sudo update-initramfs -u
$Sudo reboot
================================================== ======================
システムが起動したので、次を実行してインストールを確認します。
$Sudo modprobe nvidia
$Sudo nvidia-smi -q | head`enter code here`
「nvidia.png」のような出力が表示されるはずです。
次のコマンドを実行します。 $
cd ~/NVIDIA_CUDA-7.0_Samples/1_Utilities/deviceQuery
$make
$./deviceQuery
ただし、Tensorflowがモデルをトレーニングしている間、「nvidia-smi」はまだGPUアクティビティを表示しません。
ubuntu@ip-10-0-1-48:~$ ipython
Python 2.7.11 |Anaconda custom (64-bit)| (default, Dec 6 2015, 18:08:32)
Type "copyright", "credits" or "license" for more information.
IPython 4.1.2 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcublas.so.7.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcudnn.so.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcufft.so.7.5 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:135] successfully opened CUDA library libcurand.so.7.5 locally
ubuntu@ip-10-0-1-48:~$ nvidia-smi
Thu Mar 30 05:45:26 2017
+------------------------------------------------------+
| NVIDIA-SMI 346.46 Driver Version: 346.46 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 Off | 0000:00:03.0 Off | N/A |
| N/A 35C P0 38W / 125W | 10MiB / 4095MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
BIOSからのセキュアブートコントロールを無効にすることで、GTX 950mおよびUbuntu 18.04を搭載したASUSラップトップで「NVIDIAドライバと通信できなかったため、NVIDIA-SMIが失敗しました」を解決しました。
K80 GPUを搭載したGoogle Compute EngineのUbuntu 16.04(Linux 4.14カーネル)でも同じエラーが発生していました。カーネルを4.14にアップグレードすると、問題は解決しました。 Linuxカーネルを4.14から4.15にアップグレードした方法は次のとおりです。
Step 1:
Check the existing kernel of your Ubuntu Linux:
uname -a
Step 2:
Ubuntu maintains a website for all the versions of kernel that have
been released. At the time of this writing, the latest stable release
of Ubuntu kernel is 4.15. If you go to this
link: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/, you will
see several links for download.
Step 3:
Download the appropriate files based on the type of OS you have. For 64
bit, I would download the following deb files:
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-headers-
4.15.0-041500_4.15.0-041500.201802011154_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-headers-
4.15.0-041500-generic_4.15.0-041500.201802011154_AMD64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-image-
4.15.0-041500-generic_4.15.0-041500.201802011154_AMD64.deb
Step 4:
Install all the downloaded deb files:
Sudo dpkg -i *.deb
Step 5:
Reboot your machine and check if the kernel has been updated by:
uname -a
カーネルがアップグレードされ、nvidia-smiが機能することを願っています。
以下を実行して、適切なNVIDIAドライバーを取得します。
Sudo ubuntu-driversデバイス
次に、正しいものを選んで実行します。
Sudo apt install
AWS DeepAMI P2インスタンスを使用していますが、Nvidia-driverコマンドが機能せず、GPUがトーチまたはtensorflowライブラリを見つけられないことが突然わかりました。その後、次の方法で問題を解決しました。
nvcc --version
が機能しない場合は実行します
次に、以下を実行します
apt install nvidia-cuda-toolkit
問題が解決することを願っています。
添付のリンクが最新ではないため、実用的な回答を提供してくれた@Heapifyに感謝し、彼の回答を更新したいと思います。
ステップ1:Ubuntu Linuxの既存のカーネルを確認します。
uname -a
ステップ2:
Ubuntuは、リリースされたカーネルのすべてのバージョンのWebサイトを維持しています。この記事の執筆時点では、Ubuntuカーネルの最新の安定版リリースは4.15です。次のリンクにアクセスすると、 http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/ に、ダウンロード用のリンクがいくつか表示されます。
ステップ3:
使用しているOSのタイプに基づいて適切なファイルをダウンロードします。 64ビットの場合、次のdebファイルをダウンロードします。
// UP-TO-DATE 2019-03-18
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-headers-4.15.0-041500_4.15.0-041500.201802011154_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-headers-4.15.0-041500-generic_4.15.0-041500.201802011154_AMD64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v4.15/linux-image-4.15.0-041500-generic_4.15.0-041500.201802011154_AMD64.deb
ステップ4:
ダウンロードしたすべてのdebファイルをインストールします。
Sudo dpkg -i *.deb
ステップ5:
マシンを再起動して、カーネルが以下によって更新されているかどうかを確認します。
uname -aenter code here
NVIDIA 367.57ドライバーとCUDA 7.5をTensorflowとともにg2.2xlarge Ubuntu 14.04LTSインスタンスにインストールする必要がありました。例えばnvidia-graphics-drivers-367_367.57.orig.tar
テンソルフローモデルのトレーニング中に、GRID K520 GPUが動作するようになりました。
ubuntu@ip-10-0-1-70:~$ nvidia-smi
Sat Apr 1 18:03:32 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 367.57 Driver Version: 367.57 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GRID K520 Off | 0000:00:03.0 Off | N/A |
| N/A 39C P8 43W / 125W | 3800MiB / 4036MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 2254 C python 3798MiB |
+-----------------------------------------------------------------------------+
ubuntu@ip-10-0-1-70:~/NVIDIA_CUDA-7.0_Samples/1_Utilities/deviceQuery$ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GRID K520"
CUDA Driver Version / Runtime Version 8.0 / 7.0
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 4036 MBytes (4232052736 bytes)
( 8) Multiprocessors, (192) CUDA Cores/MP: 1536 CUDA Cores
GPU Max Clock rate: 797 MHz (0.80 GHz)
Memory Clock rate: 2500 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 524288 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 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: 2048
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 with 2 copy engine(s)
Run time limit on kernels: No
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 PCI Domain ID / Bus ID / location ID: 0 / 0 / 3
Compute Mode:
< Default (multiple Host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 8.0, CUDA Runtime Version = 7.0, NumDevs = 1, Device0 = GRID K520
Result = PASS
上記のどれも私を助けませんでした。
私はKubernetesをGoogle Cloudとテスラk-80 gpu。
このガイドに従って、すべてを正しくインストールしたことを確認してください。 https://cloud.google.com/kubernetes-engine/docs/how-to/gpus
私はいくつかの重要なものを見逃していました:
COSノードの場合:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/cos/daemonset-preloaded.yaml
UBUNTUノードの場合:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/container-engine-accelerators/master/nvidia-driver-installer/ubuntu/daemonset-preloaded.yaml
更新がノードにロールされたことを確認します。アップグレードがオフの場合、それらを再起動します。
ドッカーでこの画像nvidia/cuda:10.1-base-ubuntu16.04を使用します
GPUの制限を設定する必要があります!これは、ノードドライバーがポッドと通信できる唯一の方法です。 yaml設定で、これをコンテナの下に追加します:
resources:
limits:
nvidia.com/gpu: 1
上記の解決策を試してみましたが、私にとっては以下が有効でした。
Sudo apt-get update
Sudo apt-get install --no-install-recommends nvidia-384 libcuda1-384 nvidia-opencl-icd-384
Sudo reboot