想在服务器上查看GPU数量,最快的方法是登录系统后执行nvidia-smi命令,输出结果最上方会直接显示服务器里装了几块GPU,以及每块的型号、显存和当前占用情况。
这个操作在Linux和Windows服务器上通用,但不同场景下的查看方式、命令细节和判断逻辑还不一样,接下来按系统类型、实际使用场景和常见坑位,把这个问题聊透。
Linux服务器查看GPU数量的常用命令
Linux服务器是跑深度学习、AI推理、科学计算的主力平台,绝大部分GPU服务器装的是Ubuntu Server或CentOS系统,查GPU数量这件事,本质上就是问系统“你认识几块显卡”,但不同工具看到的维度不一样。
nvidia-smi:最直接的GPU查看工具
只要服务器装的是NVIDIA显卡且驱动正常,nvidia-smi就是最权威的答案来源,执行命令后,输出信息分为上下两大部分,上半部分是GPU概览,下半部分是进程占用情况。
nvidia-smi
输出结果开头几行长这样(不同驱动版本略有差异):
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.08 Driver Version: 545.23.08 CUDA Version: 12.3 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 NVIDIA A100-PCIE-40GB On | 00000000:01:00.0 Off | 0 |
| 0 32C P0 45W / 250W | 0MiB / 40960MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
看GPU数量就看表格的索引列,从0开始递增,比如索引0、1、2、3就是4块GPU,注意这里不是看表格行数,而是看最大索引值加一,因为有时某块卡故障会导致编号跳号。
想更简洁地只看数量,用这条命令:
nvidia-smi --query-gpu=index,name,memory.total --format=csv
输出类似:
index, name, memory.total
0, NVIDIA A100-PCIE-40GB, 40960 MiB
1, NVIDIA A100-PCIE-40GB, 40960 MiB
统计有几行就有几块卡,信息干净不啰嗦。
用lspci命令查看GPU硬件信息
nvidia-smi依赖NVIDIA驱动工作,如果驱动没装好或者用的是AMD、Intel的显卡,这条命令就失灵了,这时用Linux自带的硬件探测命令lspci,它直接从PCIe总线层面读设备信息,不依赖显卡驱动。
lspci | grep -i vga
lspci | grep -i nvidia
第一条命令会列出所有VGA兼容的显示控制器,第二条会把NVIDIA相关的设备全部筛出来,注意lspci输出的是PCI设备描述,如果开了核显,VGA设备可能只显示一颗集显,真正的独立GPU型号会以“NVIDIA Corporation”开头的3D控制器或VGA兼容控制器形式出现。
更完整的信息可以加-v参数看详细配置,但日常查数量用不上那么细,只需要数行数即可。
通过CUDA工具确认GPU可用数量
服务器装了CUDA Toolkit之后,可以用NVIDIA官方提供的deviceQuery工具来验证GPU是否对CUDA可用,这个工具在CUDA安装目录的samples/1_Utilities/deviceQuery下,需要自己编译一下,或者直接运行:
nvidia-smi -L
这条命令更简洁,每行输出一块GPU的UUID和型号信息:
GPU 0: NVIDIA A100-PCIE-40GB (UUID: GPU-12345678-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
GPU 1: NVIDIA A100-PCIE-40GB (UUID: GPU-87654321-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
这是大多数运维和算法工程师检查“CUDA认不认这块卡”的首选方式,Ubuntu 22.04及更高版本系统里,还可以用nvidia-smi topo -m查看GPU间的拓扑连接关系,多卡训练时这个信息很有用。
Windows服务器怎么看显卡型号与GPU数量
Windows Server系统在中小企业里仍有不少存量,不少跑远程桌面、视频渲染或中小模型推理的服务器就是Windows环境,查看GPU数量的方法比Linux更图形化,但精确度取决于用的哪个工具。
任务管理器:图形界面快速查看
按Ctrl + Shift + Esc打开任务管理器,切到“性能”标签页,左侧列表里会按顺序列出GPU,GPU 0”、“GPU 1”等,每个GPU条目下方会标注显卡型号名称。
这个方法的局限很明显:任务管理器默认只显示当前会话可见的GPU,如果服务器是远程桌面连接,部分渲染型GPU会被系统隐藏,导致数量偏少,所以任务管理器适合快速瞄一眼,不适合作为最终确认手段。
设备管理器查看显卡型号
在“此电脑”上右键选“管理”,进入“设备管理器”,展开“显示适配器”一栏,每个条目对应一块显卡,这个方法能看清楚具体型号,NVIDIA GeForce RTX 4090”或“NVIDIA L4”,而且不会受远程会话影响,因为它在系统设备层面枚举所有硬件。
不过设备管理器也有个小坑:某些计算卡(比如NVIDIA的Tesla系列)不承载显示输出,可能显示在“其他设备”或“未知设备”里,需要看是否带有黄色感叹号,如果驱动正常安装,它们会出现在“显示适配器”下。
命令行方式:nvidia-smi同样适用
Windows下只要装了NVIDIA驱动,在CMD或PowerShell里同样可以执行:
nvidia-smi -L
输出格式和Linux完全一致,数行数就是GPU数量。这是跨平台最统一、最不容易出错的查看方式,强烈建议优先用命令行,而不是图形界面点来点去。
多GPU服务器怎么区分GPU编号与使用状态
很多用户问“怎么看有几个GPU”,真实场景往往是“我明明买了4卡机器,怎么系统里只看到2块”,这就涉及到GPU编号、总线地址、显存状态这几个概念。
理解nvidia-smi的GPU编号规则
GPU编号在驱动加载时按PCIe总线探测顺序分配,通常从0开始连续编号,但不是绝对的物理位置顺序,有可能物理插槽上第一槽位的卡被识别成GPU 1,第二槽位反而成了GPU 0。
执行以下命令查看更详细的总线信息:
nvidia-smi --query-gpu=index,pci.bus_id,name,serial --format=csv
输出里能看到每块GPU的PCIe总线ID,比如00000000:01:00.0,这个ID和lspci输出的地址是对应的,如果怀疑某块卡没被识别,可以对比系统PCIe设备列表来排查。
AI训练任务里,PyTorch或TensorFlow默认按GPU编号分配数据,所以确认编号顺序对多卡并行训练很重要,想看到“这个进程在用哪块卡”的实时状态,用:
nvidia-smi --query-compute-apps=pid,gpu_uuid,used_memory --format=csv
用watch命令实时监控GPU使用率
单次执行nvidia-smi只能看到监控的那一刻状态,训练跑起来之后,想知道每块卡是否真的在用、显存占了多少、利用率是否打满,用动态刷新更直观:
watch -n 1 nvidia-smi
这条命令每隔1秒刷新一次,终端顶部持续更新,相当于给GPU装了实时监控仪表盘,要退出按Ctrl + C。
如果只想刷新利用率而不刷显存信息,加过滤参数:
watch -n 2 nvidia-smi --query-gpu=index,utilization.gpu,memory.used --format=csv
查看GPU温度与风扇状态
多卡机柜部署时,GPU散热直接影响性能,命令里这些字段能一并查看:
nvidia-smi --query-gpu=index,temperature.gpu,fan.speed,power.draw --format=csv
输出结果里,温度单位是摄氏度,风扇转速是百分比,功率是瓦特,正常情况下,A100或H100满载时温度在70-85摄氏度之间,超过90度就得检查散热风道或者机柜空调了。
服务器配置里的GPU数量与算力怎么匹配
查完GPU数量之后,更多人关心的是怎么选配置,毕竟“服务器装了几张卡”不是目的,能用起来干活才是目的。
深度学习训练需要几张GPU
大多数深度学习项目的起步配置是单卡,模型参数量小于10亿的,一张24GB显存的RTX 3090或4090就能跑,参数量超过70亿的模型,单卡显存就不够用了,要么上80GB的A100/H100,要么做多卡张量并行。
行业共识认为,中小团队做微调和推理,4卡A100或8卡4090是性价比较高的组合,8卡是PCIe服务器常见的满配状态,再往上就得用HGX整机或HGX基板加NVSwitch,成本指数级上升。
GPU型号与显存怎么选
不同型号的GPU在显存带宽、算力、互连技术上差别明显,列出主流型号对比:
| 型号 | 显存容量 | 显存带宽 | 适用场景 |
|---|---|---|---|
| RTX 4090 | 24GB GDDR6X | 0 TB/s | 微调、推理、中小规模训练 |
| RTX 6000 Ada | 48GB GDDR6 | 960 GB/s | 专业图形、科学计算 |
| L40S | 48GB GDDR6 | 864 GB/s | 推理、渲染、多实例GPU |
| A100 40GB/80GB | 40/80GB HBM2e | 6/2.0 TB/s | 大规模训练、大模型 |
| H100 80GB | 80GB HBM3 | 35 TB/s | 大模型训练、高性能计算 |
选择逻辑很简单:先看显存能不能装下模型和中间激活值,再看算力是否满足训练时长,最后看带宽会不会拖后腿,推理场景对算力要求低于训练,但对显存带宽和延迟更敏感。
租用GPU服务器价格与本地自建怎么选
这个问题的答案取决于使用频次和预算,常租云GPU的用户里,按小时租用适合短期项目验证,按月/年租用适合长期稳定训练,国内主流云厂商的4卡A100配置月租通常在数万元区间,具体价格要看机型、地域和促销活动。
如果只是偶尔跑个实验,租机更划算,省去机房带宽、电费和硬件折旧,如果每周都要跑训练,自建服务器的长期成本更有优势,尤其是GPU资源能被团队充分复用的情况下。还有个折中方案:本地搭一台双卡机器做日常开发,大任务再临时租集群,这种方式在中小AI公司里相当普遍。
查看GPU时常见问题与排查
GPU数量查看过程中经常会遇到不如预期的情况,这里列几个最常见的场景。
nvidia-smi不显示GPU
执行nvidia-smi报错提示“No devices were found”时,先确认物理安装是否到位,再检查驱动是否与系统内核匹配,在Ubuntu系统里可以运行:
sudo ubuntu-drivers autoinstall
然后重启机器,如果仍不识别,排除PCIe供电不足的因素,多块大功率GPU同时插在普通主板上,经常因为供电分配不均导致部分卡不被识别。
虚拟机里看不到GPU
大多数云虚拟机默认不直通GPU,除非购买了GPU云实例,如果自己用VMware或KVM搭建虚拟机,必须在虚拟机设置里将物理GPU以PCI直通(PCI Passthrough)方式绑定到虚拟机上,否则虚拟机里只有虚拟显卡,查不到物理GPU。
多卡服务器只识别部分GPU
这种情况大概率是PCIe供电或主板插槽带宽问题,用lspci确认系统是否枚举到所有显卡,如果系统能看到但nvidia-smi看不到,则说明驱动对某张卡的初始化失败,尝试把卡互换插槽来判断是硬件问题还是槽位问题,另外某些消费级主板限制了最大PCIe设备数,比如部分B760芯片组配多张显卡时只能识别2-3张,这就是平台选型的问题了。
Q&A:GPU查看常见疑问汇总
问:nvidia-smi查到GPU数量为0,但设备管理器里能看到显卡,是什么原因?
答:设备管理器能看到说明硬件枚举正常,但驱动可能未正确安装或驱动版本太旧,重新安装匹配的NVIDIA驱动,注意笔记本和桌面版驱动不通用。
问:显卡数量是看“GPU 0”到“GPU 3”共4块,还是看“4 GPUs”字样?
答:在某些命令输出里,比如nvidia-smi --query-gpu=name --format=csv,noheader | wc -l,统计输出行数更准确,图形界面里看索引编号从0到3就是4块卡。
问:服务器上有集成显卡和独立显卡,nvidia-smi的GPU数量会不会算上集显?
答:不会。nvidia-smi只统计NVIDIA独立显卡,Intel或AMD的集显不在此列,这在GPU服务器上没影响,但如果用的是消费级CPU带核显的机器,GPU数量只看N卡数量即可。
查看服务器GPU数量的核心就一条路径:nvidia-smi -L 数行数,配合lspci验证硬件层识别情况,必要时看设备管理器或任务管理器,掌握这条路径后,无论面对Linux还是Windows服务器,都能在三分钟内确认这台机器到底有几块卡、型号是什么、是否全部在正常工作。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/795755.html


