服務器端的GPU使用
查看GPU信息
-
查看nvidia GPU信息:
# 輸入指令 lspci | grep -i nvidia # 結果如下: # 04:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 05:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 08:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 09:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 84:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 85:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 88:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # 89:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1)
輸出結果
04:00.0
,可用於后續查看詳細的信息 -
查看指定顯卡的詳細信息:
# 輸入指令: lspci -v -s 04:00.0 # 輸出結果: # 04:00.0 3D controller: NVIDIA Corporation Device 1db4 (rev a1) # Subsystem: NVIDIA Corporation Device 1214 # Flags: bus master, fast devsel, latency 0, IRQ 26, NUMA node 0 # Memory at c4000000 (32-bit, non-prefetchable) [size=16M] # Memory at 27800000000 (64-bit, prefetchable) [size=16G] # Memory at 27c00000000 (64-bit, prefetchable) [size=32M] # Capabilities: <access denied> # Kernel driver in use: nvidia # Kernel modules: nvidiafb, nouveau, nvidia_384_drm, nvidia_384
查看GPU的使用信息
-
nvidia-smi
其主要看
Memory-Usage
欄,避免使用了其他人已經占用了顯卡 -
一般使用如下指令,周期性查看顯卡的使用情況:
watch -n 10 nvidia-smi
每10s刷新一下顯示
指定GPU進行訓練
在查看了GPU的信息后,在訓練是指定空閑的GPU進行訓練。
-
在終端執行時指定GPU
CUDA_VISIBLE_DEVICES=0 python3 ***.py # 指定GPU集群中第一塊GPU使用,其他的屏蔽掉 # CUDA_VISIBLE_DEVICES=1 Only device 1 will be seen # CUDA_VISIBLE_DEVICES=0,1 Devices 0 and 1 will be visible # CUDA_VISIBLE_DEVICES="" No GPU will be visible
-
在配置文件頭上指定GPU,此方法和上述方法類似,以下舉個例子:
- 創建
.sh
文件; - 通過
chmod +x ***.sh
給文件加入可執行的屬性; - 在文件中寫入:
#! /bin/bash CUDA_VISIBLE_DEVICES=1 \ python model_main.py \ --model_dir=training/model \ --pipeline_config_path=training/pipeline.config \ --num_train_steps=25000
- 之后在執行時,通過
bash ***.sh
運行即可。
- 創建
-
在Python代碼中指定
import os os.environ["CUDA_VISIBLE_DEVICES"] = "0" #指定第一塊gpu
-
在tensorflow中指定GPU的使用
# allow_soft_placement=True : 如果你指定的設備不存在,允許TF自動分配設備
# log_device_placement=True : 是否打印設備分配日志
config = tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)
# 限制GPU資源的使用:兩者選其一即可
# 方式一:限制GPU使用率
config.gpu_options.per_process_gpu_memory_fraction = 0.4 #占用40%顯存
# 方式二:動態申請顯存
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)