最近很多运维工程师和深度学习开发者都在问同一个问题:服务器上这么多GPU,到底该怎么选?怎么管理?今天咱们就来好好聊聊这个话题,保证让你看完就能上手操作!

一、为什么需要GPU选卡命令?
现在的服务器动不动就装了好几块GPU卡,特别是做深度学习训练的时候,你可能需要把任务分配到特定的GPU上。比如你的服务器有四块卡,其中两块是RTX 4090,两块是A100,你想让某个任务只用A100,这时候就需要选卡命令了。
想象一下这个场景:你租了一台服务器,里面有8块GPU,结果你跑的任务把所有卡都占用了,其他同事的任务就没法跑了。这时候管理员肯定要找你麻烦!所以学会选卡命令,既能提高资源利用率,又能避免影响他人。
二、最常用的GPU选卡命令有哪些?
说到GPU选卡,大家最常用的就是环境变量设置了。这里我给大家列几个最实用的:
- CUDA_VISIBLE_DEVICES
这是最常用也最简单的命令 - NVIDIA-smi
用来查看GPU状态和设置持久模式 - nvidia-smi -i
针对特定GPU执行操作
举个例子,如果你只想用第0和第1块GPU,只需要在运行程序前设置:
export CUDA_VISIBLE_DEVICES=0,1
这样你的程序就只会看到这两块卡,其他卡对它来说就像不存在一样。这个方法在TensorFlow、PyTorch等各种深度学习框架中都适用。
三、CUDA_VISIBLE_DEVICES的详细用法
这个环境变量用起来其实很灵活,我来给你详细说说几种常见情况:
| 使用场景 | 命令示例 | 效果说明 |
|---|---|---|
| 使用单块GPU | CUDA_VISIBLE_DEVICES=0 | 只使用第一块GPU |
| 使用多块GPU | CUDA_VISIBLE_DEVICES=0,1,2 | 使用前三块GPU |
| 跳过某块GPU | CUDA_VISIBLE_DEVICES=1,2,3 | 跳过第0块,使用1、2、3块 |
| 不使用任何GPU | CUDA_VISIBLE_DEVICES= | 强制使用CPU模式 |
在实际使用中,你可以把这些命令直接放在运行脚本前面。比如:
CUDA_VISIBLE_DEVICES=0,1 python train.py
四、nvidia-smi命令的高级用法
除了环境变量,nvidia-smi这个工具也是个宝贝,功能比很多人想象的强大得多。先说说怎么查看GPU信息:
直接运行nvidia-smi就能看到所有GPU的状态,包括显存使用情况、温度、功耗等。但你可能不知道,它还能设置持久模式:
sudo nvidia-smi -pm 1
这个命令开启持久模式后,GPU的响应速度会更快。如果你需要重置某块GPU,可以这样:
sudo nvidia-smi -i 0 -r
这里的-i 0就是指定对第0块GPU进行操作。当某块卡因为某些原因卡住了,用这个命令重置一下往往就能解决问题。
五、在Python代码中动态选择GPU
有时候我们不想在命令行设置,希望在代码里灵活控制。这在写训练脚本的时候特别有用,我来教你几种方法:
在PyTorch中,你可以这样设置:
import torch
torch.cuda.set_device(0) # 使用第0块GPU
或者在TensorFlow中:
import tensorflow as tf
with tf.device(‘/GPU:0’):
# 你的模型代码
还有一种更灵活的方式,在代码中读取环境变量:
import os
gpu_ids = os.environ.get(‘CUDA_VISIBLE_DEVICES’, ‘0’)
print(f”当前使用的GPU: {gpu_ids}”)
这样你的代码就能根据不同的环境设置自动调整了,特别适合在多个服务器之间迁移代码。
六、多用户环境下的GPU管理策略
在公司或者实验室里,一台服务器通常有好几个人在用,这时候就需要一些管理策略了。我给大家分享几个实用的方案:
- 按用户分配GPU
每个用户固定使用某几块卡 - 按任务类型分配
训练任务用高性能卡,推理任务用普通卡 - 使用GPU调度器
比如Slurm、Kubernetes等
比如说,你们团队有4个人,服务器有8块GPU,可以这样分配:用户A用0,1号卡;用户B用2,3号卡,以此类推。然后在每个人的.bashrc文件里设置好对应的CUDA_VISIBLE_DEVICES。
还有一个技巧是使用nvidia-smi -lgc来设置GPU计算模式,避免其他用户误用你的卡。
七、常见问题与故障排除
在实际使用中,大家经常会遇到一些问题,我这里整理了几个最常见的:
问题1:设置了CUDA_VISIBLE_DEVICES,但程序还是用了所有GPU
这通常是因为在代码里又重复设置了设备。检查一下你的代码,确保没有在多个地方设置GPU设备。
问题2:GPU显示内存不足
可能是其他进程占用了显存。先用nvidia-smi看看是哪个进程,然后用kill -9 PID结束它。
问题3:GPU使用率总是0%
检查一下数据加载是不是成了瓶颈,或者模型太小,计算速度太快。可以用nvidia-smi dmon来实时监控GPU使用情况。
八、实战案例:深度学习训练中的GPU选择
我来举个实际例子。假设我们要训练一个视觉大模型,服务器有8块A100,我们想用其中4块进行训练。
首先写一个训练脚本train.py,然后在启动脚本里这样写:
#!/bin/bash
export CUDA_VISIBLE_DEVICES=0,1,2,3
python train.py \
–batch_size 64 \
–learning_rate 0.001
如果你想更智能一点,可以写个自动选择空闲GPU的脚本:
import subprocess
# 获取空闲GPU的逻辑
# 自动设置CUDA_VISIBLE_DEVICES
记住,选择GPU不是越少越好,也不是越多越好,要根据你的模型大小、数据量、还有训练时间来综合考虑。数据并行训练时,GPU数量增加到一定数量后,加速效果就不明显了。
希望这篇文章能帮你更好地理解和使用服务器GPU选卡命令。其实这些东西用多了就熟了,关键是动手实践。有什么问题欢迎随时交流!
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/145661.html