主頁 >  其他 > ubuntu18.04配置deepo深度學習環境(cuda + cudnn + nvidia-docker + deepo)--超級細致,并把遇到的錯誤和所有解決方案都列出來了

ubuntu18.04配置deepo深度學習環境(cuda + cudnn + nvidia-docker + deepo)--超級細致,并把遇到的錯誤和所有解決方案都列出來了

2021-12-19 08:21:14 其他

0 了解本機基本資訊

0 參考檔案

主要整體是這篇
1.安裝cuda和cudnn
2.安裝cuda和cudnn
3.安裝cuda和cudnn
4.安裝cuda和cudnn
1.安裝nvidia-docker2
2.安裝nvidia-docker2
利用deepo做深度學習環境-官方英文
利用deepo做深度學習環境-中文翻譯

1 顯卡資訊

nvidia-smi
在這里插入圖片描述

root@master:/home/hqc# ubuntu-drivers devices
	== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
	modalias : pci:v000010DEd00001B06sv000010DEsd0000120Fbc03sc00i00
	vendor   : NVIDIA Corporation
	model    : GP102 [GeForce GTX 1080 Ti]
	driver   : nvidia-driver-460-server - distro non-free
	driver   : nvidia-driver-450-server - distro non-free
	driver   : nvidia-driver-390 - distro non-free
	driver   : nvidia-driver-418-server - distro non-free
	driver   : nvidia-driver-470 - distro non-free
	driver   : nvidia-driver-470-server - distro non-free
	driver   : nvidia-driver-460 - distro non-free
	driver   : nvidia-driver-495 - distro non-free recommended
	driver   : xserver-xorg-video-nouveau - distro free builtin

提示資訊recommend495版本,因此無需重新安裝,

2 查看是否安裝了cuda/cudnn

root@master:/home/hqc# cat /usr/local/cuda/version.txt
	cat: /usr/local/cuda/version.txt: 沒有那個檔案或目錄
	
root@master:/home/hqc# nvcc -V
	
	Command 'nvcc' not found, but can be installed with:
	
	apt install nvidia-cuda-toolkit

都沒有,參考這篇博客

3 關于cuda和cudnn的說明

deepo這個鏡像中已經封裝了cuda和cudnn,同時直接配置好了絕大多數深度學習的環境,

那為啥還要在本機上安裝cuda和cudnn呢?
因為本地開發需要,或者拿到一個現成的深度學習程式需要本地先測驗一下是否可運行,

1 安裝cuda

nvidia官網下載
在這里插入圖片描述
別的版本cuda下載

1 下載

root@master:/home/hqc# wget https://developer.download.nvidia.com/compute/cuda/11.5.1/local_installers/cuda_11.5.1_495.29.05_linux.run

在這里插入圖片描述
下載速度也太慢了🤪

2 執行

root@master:/home/hqc# sudo sh cuda_11.5.1_495.29.05_linux.run

在這里插入圖片描述
選擇continue
出現原因:可能是驗證nivdia-docker2時拉取了一個11.0版本的cuda
在這里插入圖片描述
輸入accept
在這里插入圖片描述
注:一定不能再次安裝driver
操作:移到driver項,按enter鍵即去掉勾選,然后install,

3 成功

root@master:/home/hqc# sudo sh cuda_11.5.1_495.29.05_linux.run
	===========
	= Summary =
	===========
	
	Driver:   Not Selected
	Toolkit:  Installed in /usr/local/cuda-11.5/
	Samples:  Installed in /root/, but missing recommended libraries
	
	Please make sure that
	 -   PATH includes /usr/local/cuda-11.5/bin
	 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.5/lib64, or, add /usr/local/cuda-11.5/lib64 to /etc/ld.so.conf and run ldconfig as root
	
	To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.5/bin
	***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 495.00 is required for CUDA 11.5 functionality to work.
	To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
	    sudo <CudaInstaller>.run --silent --driver
	
	Logfile is /var/log/cuda-installer.log

出現此輸出時便代表安裝成功

4 配置

root@master:/home/hqc# vi ~/.bashrc

# 在檔案結尾添上這兩句指令
export PATH="/usr/local/cuda-11.5/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.5/lib64:$LD_LIBRARY_PATH"

# source一下使之生效
root@master:/home/hqc# source ~/.bashrc

在這里插入圖片描述

5 驗證

root@master:/home/hqc# cd /usr/local/cuda-11.5/samples/1_Utilities/deviceQuery

root@master:/usr/local/cuda-11.5/samples/1_Utilities/deviceQuery# sudo make
	/usr/local/cuda/bin/nvcc -ccbin g++ -I../../common/inc  -m64    --threads 0 --std=c++11 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_86,code=compute_86 -o deviceQuery.o -c deviceQuery.cpp
	nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
	/usr/local/cuda/bin/nvcc -ccbin g++   -m64      -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_86,code=compute_86 -o deviceQuery deviceQuery.o 
	nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
	mkdir -p ../../bin/x86_64/linux/release
	cp deviceQuery ../../bin/x86_64/linux/release

root@master:/usr/local/cuda-11.5/samples/1_Utilities/deviceQuery# ./deviceQuery
	./deviceQuery Starting...
	
	 CUDA Device Query (Runtime API) version (CUDART static linking)
	
	Detected 1 CUDA Capable device(s)
	
	Device 0: "NVIDIA GeForce GTX 1080 Ti"
	  CUDA Driver Version / Runtime Version          11.5 / 11.5
	  CUDA Capability Major/Minor version number:    6.1
	  Total amount of global memory:                 11178 MBytes (11721506816 bytes)
	  (028) Multiprocessors, (128) CUDA Cores/MP:    3584 CUDA Cores
	  GPU Max Clock rate:                            1582 MHz (1.58 GHz)
	  Memory Clock rate:                             5505 Mhz
	  Memory Bus Width:                              352-bit
	  L2 Cache Size:                                 2883584 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 shared memory per multiprocessor:        98304 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:                     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 Managed Memory:                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 = 11.5, CUDA Runtime Version = 11.5, NumDevs = 1
	Result = PASS

最后出現Result = PASS,才最終說明安裝成功,

6 查看

root@master:/usr/local/cuda-11.5/samples/1_Utilities/deviceQuery# nvcc -V
	nvcc: NVIDIA (R) Cuda compiler driver
	Copyright (c) 2005-2021 NVIDIA Corporation
	Built on Thu_Nov_18_09:45:30_PST_2021
	Cuda compilation tools, release 11.5, V11.5.119
	Build cuda_11.5.r11.5/compiler.30672275_0

Build cuda_11.5.r11.5/compiler.30672275_0

2 安裝cudnn

官網下載

登錄之前需要注冊會員,可能會報一些錯誤,注冊好了登錄還需要填一些東西,麻煩,隨便填好了,網速也慢,

1 下載

下載cuDNN Library for Linux即可,安裝cuDNN v8.3.0版本
在這里插入圖片描述
在這里插入圖片描述
下載速度好慢阿,等待吧,

2 安裝

# 進入下載安裝包的目錄進行查看
root@master:/home/hqc# cd 下載
root@master:/home/hqc/下載# ls
	Anaconda3-5.3.1-Linux-x86_64.sh     iwlwifi-cc-46.3cfab8da.0
	cudnn-11.5-linux-x64-v8.3.0.98.tgz  iwlwifi-cc-46.3cfab8da.0.tgz

# 解壓縮
root@master:/home/hqc/下載# tar -zxvf cudnn-11.5-linux-x64-v8.3.0.98.tgz
	cuda/include/cudnn.h
	cuda/include/cudnn_adv_infer.h
	cuda/include/cudnn_adv_infer_v8.h
	cuda/include/cudnn_adv_train.h
	cuda/include/cudnn_adv_train_v8.h
	cuda/include/cudnn_backend.h
	cuda/include/cudnn_backend_v8.h
	cuda/include/cudnn_cnn_infer.h
	cuda/include/cudnn_cnn_infer_v8.h
	...

# 復制解壓出的cuda檔案到用戶檔案夾中
root@master:/home/hqc/下載# cp cuda/lib64/* /usr/local/cuda-11.5/lib64/
root@master:/home/hqc/下載# cp cuda/include/* /usr/local/cuda-11.5/include/
root@master:/home/hqc/下載# cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 沒有任何輸出

# 更改一種方法仍然沒有輸出
root@master:/home/hqc/下載# sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
root@master:/home/hqc/下載# sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ 
root@master:/home/hqc/下載# sudo chmod a+r /usr/local/cuda/include/cudnn.h 
root@master:/home/hqc/下載# sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
root@master:/home/hqc/下載# cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

查看cudnn資訊不輸出問題-參考評論
目前還沒解決,----已解決

3 驗證

root@master:/home/hqc/下載# cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
	#define CUDNN_MAJOR 8
	#define CUDNN_MINOR 3
	#define CUDNN_PATCHLEVEL 0
	--
	#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
	
	#endif /* CUDNN_VERSION_H */
	
# 代表版本為cudnn8.3.0

更改為cudnn_version.h即可,因為最新的版本資訊在cudnn_version.h里了,不在cudnn.h里

3 安裝nivdia-docker2

按官網安裝教程操作
在這里插入圖片描述
查看官網發現:不需要在本機上安裝CUDA,只需要有驅動即可
因此決定,在下載cuda和cudnn的同時安裝一下nivdia-docker,

具體指令安裝nvidia-docker2

1 加入源

root@master:/home/hqc# 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
	OK
	deb https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/$(ARCH) /
	#deb https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/$(ARCH) /
	deb https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/$(ARCH) /
	#deb https://nvidia.github.io/nvidia-container-runtime/experimental/ubuntu18.04/$(ARCH) /
	deb https://nvidia.github.io/nvidia-docker/ubuntu18.04/$(ARCH) /

2 更新

root@master:/home/hqc# sudo apt-get update

3 下載

root@master:/home/hqc# sudo apt-get install -y nvidia-docker2
	正在讀取軟體包串列... 完成
	正在分析軟體包的依賴關系樹       
	正在讀取狀態資訊... 完成       
	下列軟體包是自動安裝的并且現在不需要了:
	  chromium-codecs-ffmpeg-extra lib32gcc1 libc6-i386 libopencore-amrnb0 libopencore-amrwb0
	  linux-hwe-5.4-headers-5.4.0-42
	使用'sudo apt autoremove'來卸載它(它們),
	將會同時安裝下列軟體:
	  libnvidia-container-tools libnvidia-container1 nvidia-container-toolkit
	下列【新】軟體包將被安裝:
	  libnvidia-container-tools libnvidia-container1 nvidia-container-toolkit nvidia-docker2
	升級了 0 個軟體包,新安裝了 4 個軟體包,要卸載 0 個軟體包,有 123 個軟體包未被升級,
	需要下載 1,075 kB 的歸檔,
	解壓縮后會消耗 4,747 kB 的額外空間,
	獲取:1 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  libnvidia-container1 1.7.0-1 [69.5 kB]
	獲取:2 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  libnvidia-container-tools 1.7.0-1 [22.7 kB]
	獲取:3 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  nvidia-container-toolkit 1.7.0-1 [977 kB]
	獲取:4 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  nvidia-docker2 2.8.0-1 [5,528 B]
	已下載 1,075 kB,耗時 6(170 kB/s)                                                                 
	正在選中未選擇的軟體包 libnvidia-container1:amd64,
	(正在讀取資料庫 ... 系統當前共安裝有 221226 個檔案和目錄,)
	正準備解包 .../libnvidia-container1_1.7.0-1_amd64.deb  ...
	正在解包 libnvidia-container1:amd64 (1.7.0-1) ...
	正在選中未選擇的軟體包 libnvidia-container-tools,
	正準備解包 .../libnvidia-container-tools_1.7.0-1_amd64.deb  ...
	正在解包 libnvidia-container-tools (1.7.0-1) ...
	正在選中未選擇的軟體包 nvidia-container-toolkit,
	正準備解包 .../nvidia-container-toolkit_1.7.0-1_amd64.deb  ...
	正在解包 nvidia-container-toolkit (1.7.0-1) ...
	正在選中未選擇的軟體包 nvidia-docker2,
	正準備解包 .../nvidia-docker2_2.8.0-1_all.deb  ...
	正在解包 nvidia-docker2 (2.8.0-1) ...
	正在設定 libnvidia-container1:amd64 (1.7.0-1) ...
	正在設定 libnvidia-container-tools (1.7.0-1) ...
	正在設定 nvidia-container-toolkit (1.7.0-1) ...
	正在設定 nvidia-docker2 (2.8.0-1) ...
	
	組態檔 '/etc/docker/daemon.json'
	 ==> 系統中的這個檔案或者是由您創建的,或者是由腳本建立的,
	 ==> 軟體包維護者所提供的軟體包中也包含了該檔案,
	   您現在希望如何處理呢? 您有以下幾個選擇:
	    Y 或 I  :安裝軟體包維護者所提供的版本
	    N 或 O  :保留您原來安裝的版本
	      D     :顯示兩者的區別
	      Z     :把當前行程切換到后臺,然后查看現在的具體情況
	 默認的處理方法是保留您當前使用的版本,
	*** daemon.json (Y/I/N/O/D/Z) [默認選項=N] ? N
	正在處理用于 libc-bin (2.27-3ubuntu1.2) 的觸發器 ...
# 此處我選擇的N:保留您當前使用的版本(默認)

4 重啟docker

root@master:/home/hqc# sudo systemctl restart docker

5 驗證

root@master:/home/hqc# sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
	Unable to find image 'nvidia/cuda:11.0-base' locally
	11.0-base: Pulling from nvidia/cuda
	54ee1f796a1e: Pull complete 
	f7bfea53ad12: Pull complete 
	46d371e02073: Pull complete 
	b66c17bbf772: Pull complete 
	3642f1a6dfb3: Pull complete 
	e5ce55b8b4b9: Pull complete 
	155bc0332b0a: Pull complete 
	Digest: sha256:774ca3d612de15213102c2dbbba55df44dc5cf9870ca2be6c6e9c627fa63d67a
	Status: Downloaded newer image for nvidia/cuda:11.0-base
	Wed Dec 15 08:38:22 2021       
	+-----------------------------------------------------------------------------+
	| NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
	|-------------------------------+----------------------+----------------------+
	| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
	| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
	|                               |                      |               MIG M. |
	|===============================+======================+======================|
	|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
	| 23%   30C    P8     8W / 250W |    148MiB / 11178MiB |      0%      Default |
	|                               |                      |                  N/A |
	+-------------------------------+----------------------+----------------------+
	                                                                               
	+-----------------------------------------------------------------------------+
	| Processes:                                                                  |
	|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
	|        ID   ID                                                   Usage      |
	|=============================================================================|
	+-----------------------------------------------------------------------------+
# Unable to find image 'nvidia/cuda:11.0-base' locally,需要先拉取

表示安裝成功!

4 拉取deepo鏡像配置深度學習環境

官網參考

1 拉取deepo完整版

出現錯誤:拉取不下來,可能是deepo這個鏡像太大了,而docker默認的儲存目錄/var/lib/docker的空間不夠

root@master:/home/hqc# docker pull ufoym/deepo
	Using default tag: latest
	latest: Pulling from ufoym/deepo
	6e0aa5e7af40: Pull complete 
	d47239a868b3: Pull complete 
	49cbb10cca85: Pull complete 
	4450dd082e0f: Pull complete 
	b4bc5dc4c4f3: Pull complete 
	5353957e2ca6: Pull complete 
	f91e05a16062: Pull complete 
	7a841761f52f: Pull complete 
	698198ce2872: Pull complete 
	05a2da03249e: Downloading [==================================================>]  804.9MB/804.9MB
	b1761864f72a: Download complete 
	29479e68065f: Download complete 
	3b8001916a15: Downloading [==================================================>]  3.871GB/3.871GB
	latest: Pulling from ufoym/deepo
	6e0aa5e7af40: Downloading [====>                                              ]  2.489MB/26.71MB
	d47239a868b3: Download complete 
	49cbb10cca85: Download complete 
	4450dd082e0f: Download complete 
	b4bc5dc4c4f3: Downloading [============================================>      ]  7.625MB/8.486MB
	5353957e2ca6: Download complete 
	f91e05a16062: Download complete 
	7a841761f52f: Downloading [>                                                  ]  537.5kB/664.6MB
	698198ce2872: Waiting 
	05a2da03249e: Waiting 
	b1761864f72a: Waiting 
	29479e68065f: Waiting 
	3b8001916a15: Waiting 
	error pulling image configuration: read tcp 172.27.228.135:60664->104.18.125.25:443: read: connection reset by peer
# 拉取失敗

并且系統報var磁區空間不足
在這里插入圖片描述

2 解決問題

方法:決定將鏡像完整遷移并更改目標路徑目錄為默認下載目錄

# 查看系統記憶體情況
root@master:/home/hqc# df -h
	檔案系統         容量  已用  可用 已用% 掛載點
	udev              32G     0   32G    0% /dev
	tmpfs            6.3G  2.1M  6.3G    1% /run
	/dev/nvme0n1p6    29G  1.7G   25G    7% /
	/dev/nvme0n1p10   94G   18G   72G   20% /usr
	tmpfs             32G     0   32G    0% /dev/shm
	tmpfs            5.0M  4.0K  5.0M    1% /run/lock
	tmpfs             32G     0   32G    0% /sys/fs/cgroup
	/dev/nvme0n1p9   9.4G   37M  8.8G    1% /tmp
	/dev/nvme0n1p7   946M  176M  706M   20% /boot
	/dev/nvme0n1p8    47G   13G   32G   29% /home
	/dev/nvme0n1p11  9.4G  6.6G  2.4G   74% /var
	/dev/loop0       640K  640K     0  100% /snap/gnome-logs/106
	/dev/nvme0n1p1    96M   32M   65M   33% /boot/efi
	/dev/loop1       2.7M  2.7M     0  100% /snap/gnome-system-monitor/174
	/dev/loop2        56M   56M     0  100% /snap/core18/2246
	/dev/loop4       768K  768K     0  100% /snap/gnome-characters/761
	/dev/loop3       219M  219M     0  100% /snap/gnome-3-34-1804/77
	/dev/loop5       248M  248M     0  100% /snap/gnome-3-38-2004/87
	/dev/loop7       128K  128K     0  100% /snap/bare/5
	/dev/loop6        43M   43M     0  100% /snap/snapd/14066
	/dev/loop8       384K  384K     0  100% /snap/gnome-characters/550
	/dev/loop9       2.5M  2.5M     0  100% /snap/gnome-calculator/748
	/dev/loop10      1.0M  1.0M     0  100% /snap/gnome-logs/100
	/dev/loop11       63M   63M     0  100% /snap/gtk-common-themes/1506
	/dev/loop12       62M   62M     0  100% /snap/core20/1242
	/dev/loop13      219M  219M     0  100% /snap/gnome-3-34-1804/72
	/dev/loop14       33M   33M     0  100% /snap/snapd/13640
	/dev/loop15      2.5M  2.5M     0  100% /snap/gnome-calculator/884
	/dev/loop16       56M   56M     0  100% /snap/core18/2253
	/dev/loop17       62M   62M     0  100% /snap/core20/1270
	/dev/loop18      2.3M  2.3M     0  100% /snap/gnome-system-monitor/148
	/dev/loop19      522M  522M     0  100% /snap/pycharm-community/261
	/dev/loop20       66M   66M     0  100% /snap/gtk-common-themes/1519
	/dev/loop21      243M  243M     0  100% /snap/gnome-3-38-2004/76
	tmpfs            6.3G   16K  6.3G    1% /run/user/121
	tmpfs            6.3G   72K  6.3G    1% /run/user/1000
# 發現/usr目錄下的存盤空間最多,因此打算把這個作為默認下載目錄

具體操作參考這篇檔案

# 停止docker
root@master:/home/hqc# service docker stop
# 或
root@master:/home/hqc# systemctl stop docker.service

# 創建一個/usr下用來存放鏡像的新目錄
root@master:/home/hqc# mkdir -p /usr/hqc/docker_root

# 將原目錄下的所有鏡像檔案拷貝到這個目錄中
root@master:/home/hqc# cp -R /var/lib/docker/* /usr/hqc/docker_root

# 找到/etc/docker下的daemon.json修改配置
root@master:/home/hqc# cd /etc/docker
root@master:/etc/docker# ls
	daemon.json  daemon.json.dpkg-dist  key.json
root@master:/etc/docker# vim daemon.json
	{
	  "data-root":"/usr/hqc/docker_root",# 添加這一行,注意末尾有逗號
	  "registry-mirrors": ["https://zwir0uyv.mirror.aliyuncs.com"]
	}

# 重新配置
root@master:/etc/docker# systemctl daemon-reload

# 再次運行docker
root@master:/etc/docker# systemctl start docker.service

# 再次查看默認目錄
root@master:/etc/docker# docker info |grep "Docker Root Dir"
	WARNING: No swap limit support
	 Docker Root Dir: /usr/hqc/docker_root
# 成功更改

3 再次拉取deepo-拉取成功

root@master:/home/hqc# docker pull ufoym/deepo
	Using default tag: latest
	latest: Pulling from ufoym/deepo
	6e0aa5e7af40: Pull complete 
	d47239a868b3: Pull complete 
	49cbb10cca85: Pull complete 
	4450dd082e0f: Pull complete 
	b4bc5dc4c4f3: Pull complete 
	5353957e2ca6: Pull complete 
	f91e05a16062: Pull complete 
	7a841761f52f: Pull complete 
	698198ce2872: Pull complete 
	05a2da03249e: Pull complete 
	b1761864f72a: Pull complete 
	29479e68065f: Pull complete 
	3b8001916a15: Pull complete 
	Digest: sha256:79473e5e182257ce0aff172670d32d09204c48785c5b5daff1830dad83f4a548
	Status: Downloaded newer image for ufoym/deepo:latest
	docker.io/ufoym/deepo:latest
# 下載成功!!!

4 驗證環境

中文翻譯官網

root@master:/home/hqc# nvidia-docker run --rm ufoym/deepo nvidia-smi
	docker: Error response from daemon: Unknown runtime specified nvidia.
	See 'docker run --help'.

5 解決問題

1 方案一

參考解決(還未解決)

2 方案二

可用nvidia-docker image ls陳述句先查看nvidia-docker是否安裝成功

root@master:/etc/docker# nvidia-docker image ls
	REPOSITORY                                                TAG         IMAGE ID       CREATED         SIZE
	registry.cn-beijing.aliyuncs.com/hqc-k8s/ali-array-plus   v2.5        7f4f56bbf3c8   3 days ago      928MB
	json-plus                                                 v1.2        fab5150c7c5e   5 days ago      928MB
	python                                                    latest      f48ea80eae5a   4 weeks ago     917MB
	nginx                                                     latest      ea335eea17ab   4 weeks ago     141MB
	quay.io/coreos/flannel                                    v0.15.1     e6ea68648f0c   4 weeks ago     69.5MB
	rancher/mirrored-flannelcni-flannel-cni-plugin            v1.0.0      cd5235cd7dc2   7 weeks ago     9.03MB
	hello-world                                               latest      feb5d9fea6a5   2 months ago    13.3kB
	registry.cn-beijing.aliyuncs.com/hqc-k8s/hello-world      v1.0        feb5d9fea6a5   2 months ago    13.3kB
	ufoym/deepo                                               latest      f07b2fdc30b2   6 months ago    14.3GB
# 和docker images查看一樣的效果,應該是已經裝好了

可嘗試執行一下sudo docker run --rm --gpus all nvidia/cuda:11.5 nvidia-smi,主要是將11.0-base換成11.5,可能是因為本機上安裝的是11.5,這個程序中remove掉了11.0-base,因此nvidia-docker可能失效了,

root@master:/etc/docker# sudo docker run --rm --gpus all nvidia/cuda:11.5 nvidia-smi
	Unable to find image 'nvidia/cuda:11.5' locally
	docker: Error response from daemon: manifest for nvidia/cuda:11.5 not found: manifest unknown: manifest unknown.
	See 'docker run --help'.

失敗,

3 方案三

也有博客是運行sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi這句指令,可試試

root@master:/etc/docker# sudo docker run --runtime=nvidia --rm nvidia/cuda nvidia-smi
	docker: Error response from daemon: Unknown runtime specified nvidia.
	See 'docker run --help'.
# 不行

4 方案四

或者嘗試修改/etc/docker/daemon.json檔案
在其中加入

{
    # "registry-mirrors": ["https://f1z25q5p.mirror.aliyuncs.com"],
    # 這句是之前配置的阿里云docker加速
    "runtimes": {
        "nvidia": {
            "path": "nvidia-container-runtime",
            "runtimeArgs": []
        }
    }
}

不過這種方法好像是centos系統中的操作,或許不大對
驗證過后果然不行,會造成的docker沒法啟動

5 方案五

參考官網操作
ubuntu下,運行sudo apt-get install nvidia-container-runtime指令

root@master:/etc/docker# sudo apt-get install nvidia-container-runtime
	正在讀取軟體包串列... 完成
	正在分析軟體包的依賴關系樹       
	正在讀取狀態資訊... 完成       
	下列軟體包是自動安裝的并且現在不需要了:
	  chromium-codecs-ffmpeg-extra lib32gcc1 libc6-i386 libopencore-amrnb0 libopencore-amrwb0 linux-hwe-5.4-headers-5.4.0-42
	使用'sudo apt autoremove'來卸載它(它們),
	下列【新】軟體包將被安裝:
	  nvidia-container-runtime
	升級了 0 個軟體包,新安裝了 1 個軟體包,要卸載 0 個軟體包,有 123 個軟體包未被升級,
	需要下載 4,984 B 的歸檔,
	解壓縮后會消耗 21.5 kB 的額外空間,
	獲取:1 https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/amd64  nvidia-container-runtime 3.7.0-1 [4,984 B]
	已下載 4,984 B,耗時 1(5,456 B/s)                 
	正在選中未選擇的軟體包 nvidia-container-runtime,
	(正在讀取資料庫 ... 系統當前共安裝有 221251 個檔案和目錄,)
	正準備解包 .../nvidia-container-runtime_3.7.0-1_all.deb  ...
	正在解包 nvidia-container-runtime (3.7.0-1) ...
	正在設定 nvidia-container-runtime (3.7.0-1) ...

# 驗證,還是不行
root@master:/etc/docker# nvidia-docker run --rm ufoym/deepo nvidia-smi
	docker: Error response from daemon: Unknown runtime specified nvidia.
	See 'docker run --help'.

6 方案六(最后成功的方案)

參考官網方案

root@master:/home/hqc# tee /etc/systemd/system/docker.service.d/override.conf <<EOF
> [Service]
> ExecStart=
> ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
> EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
# 輸入方法為:輸入第一行按enter鍵,在依次每行復制進去回車

# 更改組態檔使之生效
root@master:/home/hqc# sudo systemctl daemon-reload
# 重啟docker服務
root@master:/home/hqc# sudo systemctl restart docker

# 驗證
root@master:/home/hqc# nvidia-docker run --rm ufoym/deepo nvidia-smi
	Fri Dec 17 02:59:02 2021       
	+-----------------------------------------------------------------------------+
	| NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
	|-------------------------------+----------------------+----------------------+
	| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
	| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
	|                               |                      |               MIG M. |
	|===============================+======================+======================|
	|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
	| 23%   28C    P8     9W / 250W |     11MiB / 11178MiB |      0%      Default |
	|                               |                      |                  N/A |
	+-------------------------------+----------------------+----------------------+
	                                                                               
	+-----------------------------------------------------------------------------+
	| Processes:                                                                  |
	|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
	|        ID   ID                                                   Usage      |
	|=============================================================================|
	+-----------------------------------------------------------------------------+
# 成功!!

6 再次驗證

# 運行驗證,并使Deepo能夠在docker容器內使用GPU
root@master:/home/hqc# nvidia-docker run --rm ufoym/deepo nvidia-smi
	Fri Dec 17 03:04:18 2021       
	+-----------------------------------------------------------------------------+
	| NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
	|-------------------------------+----------------------+----------------------+
	| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
	| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
	|                               |                      |               MIG M. |
	|===============================+======================+======================|
	|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0 Off |                  N/A |
	| 23%   28C    P8     8W / 250W |     11MiB / 11178MiB |      0%      Default |
	|                               |                      |                  N/A |
	+-------------------------------+----------------------+----------------------+
	                                                                               
	+-----------------------------------------------------------------------------+
	| Processes:                                                                  |
	|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
	|        ID   ID                                                   Usage      |
	|=============================================================================|
	+-----------------------------------------------------------------------------+

# 將一個互動式shell放入一個容器,該容器不會在你退出之后自動洗掉,
root@master:/home/hqc# nvidia-docker run -it ufoym/deepo bash
# 進入python虛擬環境
root@2e0a741f5da1:/# python
	Python 3.6.9 (default, Jan 26 2021, 15:33:00) 
	[GCC 8.4.0] on linux
	Type "help", "copyright", "credits" or "license" for more information.
	>>> import tensorflow
		2021-12-17 03:06:21.636087: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64
		# 這段好像報錯了,但咱也不大懂為啥呀,好像是說不能使用GPU
		2021-12-17 03:06:21.636112: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
	>>> print(tensorflow.__name__, tensorflow.__version__)
		tensorflow 2.5.0
		# 好在可以正常顯示tensorflow版本
# 后面再次import tensorflow就沒出現之前的輸出資訊了,不知道為啥
	
	# 再驗證一下torch環境
	>>> import torch
	>>> print(torch.__name__, torch.__version__)
		torch 1.9.0.dev20210415+cu101
	# 沒出現問題

總之,總算成功拉!

5 總結

整個流程下來,好像本地cuda和cudnn都不是搭建的必須,由于網速和檔案很大的因素,可選擇安裝,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/385459.html

標籤:其他

上一篇:NMAP工具的使用:埠掃描

下一篇:synchronized的實作原理與應用&Java物件的記憶體布局

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more