在 CentOS 上发现 PyTorch 占用资源(CPU / 内存 / GPU)很高,可以从“确认问题 → 定位原因 → 优化方案”三个层面来处理。
top
htop
看是不是 python 进程,以及 %CPU、RES。
nvidia-smi
看:
Memory-Usage)GPU-Util)现象:CPU 占用 100%,训练反而慢
解决:
torch.utils.data.DataLoader(
dataset,
batch_size=32,
num_workers=4, # 别太大,一般 4~8
pin_memory=True
)
CentOS 上尤其注意:
num_workers 超过 CPU 核心数反而更慢现象:CPU 高,GPU 几乎不忙
检查:
print(torch.cuda.is_available())
解决:
device = torch.device("cuda")
model.to(device)
data = data.to(device)
现象:nvidia-smi 显存满,但 GPU-Util 低
原因:
解决:
torch.cuda.empty_cache()
训练时:
with torch.no_grad():
...
现象:多个 python 占资源
查看:
ps -ef | grep python
杀掉:
kill -9 PID
float16model.half()
batch_sizetorch.compile()(PyTorch 2.x)export OMP_NUM_THREADS=4
export MKL_NUM_THREADS=4
nvidia-smi 看 GPUhtop 看 CPUcuda.is_available()num_workers 是否过大如果你愿意,可以把下面信息发我,我能更精准判断:
nvidia-smi 输出top / htop 截图或文本我可以帮你直接改代码。