温馨提示×

ubuntu跑pytorch卡怎么办

小樊
35
2026-10-01 21:08:30
栏目: 智能运维

在 Ubuntu 上跑 PyTorch 很卡,原因可能很多,下面按最常见 → 较少见的顺序帮你排查和优化。你可以一条条对照试。


一、先确认:卡在“CPU”还是“GPU”

1️⃣ 看是否用了 GPU

nvidia-smi

如果看不到 GPU,说明 PyTorch 在用 CPU。

检查 PyTorch 是否支持 CUDA:

import torch
print(torch.cuda.is_available())
  • False → 没用上 GPU(大问题)
  • True → 继续看下面

✅ 解决:

device = torch.device("cuda")
model.to(device)
x = x.to(device)

二、最常见的卡顿原因 & 解决办法

2️⃣ 模型 / 数据没放到 GPU(最常见)

即使 cuda.is_available() == True,如果:

model = Model()        # 在 CPU
x = x.cuda()           # 只在输入上

也会非常慢。

✅ 正确做法:

model = Model().cuda()
inputs = inputs.cuda()

3️⃣ DataLoader 太慢(非常常见)

如果你看到 GPU 利用率很低(nvidia-smi 里 Volatile GPU-Util 很低):

✅ 优化 DataLoader:

DataLoader(
    dataset,
    batch_size=32,
    num_workers=4,      # 很重要
    pin_memory=True
)

⚠️ 注意:

  • num_workers 一般 = CPU 核心数 / 2
  • 不要用 num_workers=0(极慢)

4️⃣ 显存爆了 → 自动变慢

nvidia-smi

如果显存快满(90%+),PyTorch 会变慢甚至卡死。

✅ 解决:

  • 减小 batch_size
  • 用 torch.cuda.empty_cache()
  • 用混合精度:
from torch.cuda.amp import autocast, GradScaler

三、系统 & 驱动层面问题

5️⃣ NVIDIA 驱动 / CUDA 不匹配

查看:

nvidia-smi
nvcc --version

✅ 建议:

  • 驱动 ≥ CUDA 要求
  • PyTorch 安装对应 CUDA 版本:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118

6️⃣ 电源模式没开“高性能”

cat /proc/cpuinfo | grep MHz

如果频率很低:

✅ 开启高性能:

sudo apt install cpufrequtils
sudo cpufreq-set -g performance

四、代码层面优化

7️⃣ 关掉梯度(推理时)

with torch.no_grad():
    output = model(x)

8️⃣ 用 torch.compile(PyTorch 2.x)

model = torch.compile(model)

通常能快 10–30%


五、快速自检清单 ✅

你只要确认这几件事:

  • [ ] torch.cuda.is_available() == True
  • [ ] model 和输入都 .cuda()
  • [ ] DataLoader num_workers > 0
  • [ ] nvidia-smi 里 GPU 有利用率
  • [ ] 没爆显存

如果你愿意,可以把下面信息贴出来,我可以直接帮你定位:

  1. nvidia-smi 输出
  2. torch.cuda.is_available() 结果
  3. 卡在 训练 / 推理 / 数据加载 哪一步
  4. GPU 型号 + PyTorch 版本

我可以直接告诉你“你这一步最该改什么”。

0 踩