1、说明
nvidia-smi
是 NVIDIA System Management Interface 的缩写,是 NVIDIA 提供的一个命令行工具,用于查看和管理 NVIDIA GPU 设备的信息。执行这个命令通常可以获取关于系统上安装的 NVIDIA GPU 的实时状态和性能信息。
一般来说,nvidia-smi
提供了以下信息:
- GPU 列表: 显示系统上所有的 NVIDIA GPU 设备的列表,包括它们的索引、名称、UUID 等。
- 实时状态: 显示 GPU 的实时使用情况,包括 GPU 的利用率、显存使用情况、温度等。
- 进程信息: 显示当前正在使用 GPU 的进程信息,包括进程 ID、显存占用等。
这对于监控 GPU 的使用情况、调试 GPU 程序或确保 GPU 驱动程序正常安装非常有用。
2、举例
这是 nvidia-smi
命令的输出结果,其中包含了关于两块 NVIDIA GPU 设备的详细信息:
-
设备列表:
GPU 0
: NVIDIA GeForce ...(具体型号已被截断)GPU 1
: NVIDIA GeForce ...(具体型号已被截断)
-
实时状态:
GPU 0
的状态:Fan
: 风扇速度,30%Temp
: 温度,25摄氏度Perf
: 性能状态,P8Pwr:Usage/Cap
: 电源使用情况,13W / 350WMemory-Usage
: 显存使用情况,16016MiB / 24576MiBGPU-Util
: GPU 利用率,0%Compute M.
: 计算模式,Default
GPU 1
的状态:Fan
: 风扇速度,61%Temp
: 温度,63摄氏度Perf
: 性能状态,P2Pwr:Usage/Cap
: 电源使用情况,296W / 350WMemory-Usage
: 显存使用情况,7894MiB / 24576MiBGPU-Util
: GPU 利用率,98%Compute M.
: 计算模式,Default
-
进程信息:
GPU 0
上的进程:- 进程 ID(PID)为
3712792
- 类型为
C
(Compute) - 进程名为
...s/labelsystem/bin/python3
- 使用了
16014MiB
的 GPU 内存
- 进程 ID(PID)为
GPU 1
上的进程:- 进程 ID(PID)为
2811288
- 类型为
C
(Compute) - 进程名为
...vs/torchspeech/bin/python
- 使用了
7892MiB
的 GPU 内存
- 进程 ID(PID)为
这个输出告诉了关于两块 GPU 设备的各种信息,包括它们的使用情况、温度、电源使用等。
3、总结
-
Driver Version(驱动程序版本): NVIDIA 显卡的驱动程序版本。
-
CUDA Version(CUDA 版本): 计算统一设备架构(CUDA)的版本。
-
GPU Name(GPU 名称): 显示在系统中的 GPU 设备的名称。
-
Persistence-M(持久性模式): 显示 GPU 是否处于持久性模式。在这里,"Off" 表示不在持久性模式。
-
Bus-Id(总线 ID): 显卡的总线 ID,可以用于唯一标识系统中的每个 GPU。
-
Disp.A(显示适配器): 显示适配器信息,包括显卡是否处于激活状态(On)或关闭状态(Off)。
-
Volatile Uncorr. ECC(不稳定的 ECC 错误): 显存的错误纠正码(ECC)状态。
-
Fan(风扇): 显卡风扇的当前运行情况,包括百分比和温度。
-
Temp(温度): 显卡的当前温度。
-
Perf(性能): 显卡的性能状态。
-
Pwr:Usage/Cap(功耗): 显卡的功耗使用情况,包括当前功耗和最大功耗。
-
Memory-Usage(显存使用情况): 显卡当前正在使用的显存量。
-
GPU-Util(GPU 利用率): 显卡的利用率,表示 GPU 目前的工作负载。
-
Compute M.(计算模式): 显卡当前的计算模式。
-
Memory-Total(显存总量): 显卡的总显存容量。
-
Processes(进程): 显示当前正在使用显存的进程,包括进程的 ID、类型和显存使用情况。
在 NVIDIA 的 nvidia-smi
工具中,Type
列显示了 GPU 上运行的进程的类型。以下是常见的几种类型:
-
C: Compute:表示这是一个计算进程,通常指的是使用 GPU 进行计算任务的进程,比如深度学习训练、推理等。
-
G: Graphics:表示这是一个图形渲染进程,通常指的是使用 GPU 进行图形渲染的应用程序,比如游戏、图形编辑软件等。
-
CI: Compute Instance:表示这是一个计算实例,通常出现在使用了 NVIDIA 的多实例 GPU (MIG) 功能的情况下。MIG 允许将单个 GPU 分割成多个独立的计算实例,每个实例都可以独立运行计算任务。
-
GI: Graphics Instance:类似于 CI,表示这是一个图形实例,通常出现在使用 MIG 功能的情况下,用于图形渲染任务。
-
X: Unknown:如果
Type
列显示为未知或未识别的类型,这可能表示进程类型无法识别或工具无法正确解析进程类型。
查看具体的进程
ps -ef | grep <PID>
使用指定的GPU
device_map = {"": 1} # 指定使用 GPU 1
model = AutoModelForCausalLM.from_pretrained(
model_name,
trust_remote_code=True,
device_map=device_map,
torch_dtype=torch.float16)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# 指定使用的设备
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# 加载模型和 tokenizer
model = AutoModelForCausalLM.from_pretrained("your-model-name").to(device)
tokenizer = AutoTokenizer.from_pretrained("your-tokenizer-name")
# 输入文本
input_text = "Your input text here."
# 编码输入文本
inputs = tokenizer(input_text, return_tensors="pt").to(device)
# 进行预测
with torch.no_grad():
outputs = model(**inputs)
# 输出结果
print(outputs)