免责声明:本人纯小白,分析仅供参考

1. 训练时速度上不去,如何排查硬件问题

  1. 训练时数据流:首先dataloader从硬盘读取数据集到内存,CPU对内存中的数据集做预处理,预处理后的数据加载到GPU的显存,GPU再对显存中的数据做前向和反向传播。
  2. 上述任意一环节都可能成为瓶颈,木桶效应,训练速度会因为其中一个环节被拖慢。

2. 监测硬件使用情况

2.1 CPU和内存

实时监测:
1. CPU每个核的使用率
2. 每个进程占用CPU的情况
3. 内存占用
4. swap交换空间使用

sudo apt update
sudo apt install htop
htop

2.2 GPU

实时监测:
1. GPU显存占用情况
2. 功耗使用
3. GPU总体使用率

watch -n 0.1 nvidia-smi

为什么 GPU 使用率很高,功率却没跑满?

  1. 计算任务的类型:有些任务对 GPU 核心的浮点运算能力要求高,但对功耗并不敏感,例如训练深度学习模型中的特定阶段(如前向传播或计算损失)。这些任务可能会高度占用计算资源,但不一定消耗大量电力。
  2. 显存带宽:如果计算任务对显存的带宽需求较小,显存不需要频繁访问,也会降低总功耗。

为什么 GPU 使用率很高,显存占用却不多?

  1. 显存的使用情况与任务类型有关。深度学习任务中,显存通常用于存储模型参数、输入数据、梯度和中间层的特征图。如果你的模型较小或输入批量较小,显存占用就不会很大。然而,GPU 利用率高可能是因为计算密集型的操作(如卷积、矩阵乘法等)正在频繁进行,导致 GPU 的算力被充分利用,但显存的需求相对较小。

2.3 硬盘

sudo apt update
sudo apt install sysstat
iostat -d -x 1

问题补充:

  1. 场景描述:数据集存放在/dev/nvme0n1中,python的conda虚拟环境存放在/dev/nvme1n1,你猜训练的时候哪个硬盘占用率高?
  2. 我实测,在上述场景中,训练yolo11n模型的时候,/dev/nvme1n1的占用率到达60%的时候,/dev/nvme0n1占用率只有6%。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐