深度学习训练速度上不去(硬件篇)
【代码】深度学习训练速度上不去(硬件篇)
·
免责声明:本人纯小白,分析仅供参考
1. 训练时速度上不去,如何排查硬件问题
训练时数据流:
首先dataloader从硬盘读取数据集到内存,CPU对内存中的数据集做预处理,预处理后的数据加载到GPU的显存,GPU再对显存中的数据做前向和反向传播。- 上述任意一环节都可能成为瓶颈,木桶效应,训练速度会因为其中一个环节被拖慢。
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 使用率很高,功率却没跑满?
- 计算任务的类型:有些任务对 GPU 核心的浮点运算能力要求高,但对功耗并不敏感,例如训练深度学习模型中的特定阶段(如前向传播或计算损失)。这些任务可能会高度占用计算资源,但不一定消耗大量电力。
- 显存带宽:如果计算任务对显存的带宽需求较小,显存不需要频繁访问,也会降低总功耗。
为什么 GPU 使用率很高,显存占用却不多?
- 显存的使用情况与任务类型有关。深度学习任务中,显存通常用于存储模型参数、输入数据、梯度和中间层的特征图。如果你的模型较小或输入批量较小,显存占用就不会很大。然而,GPU 利用率高可能是因为计算密集型的操作(如卷积、矩阵乘法等)正在频繁进行,导致 GPU 的算力被充分利用,但显存的需求相对较小。
2.3 硬盘
sudo apt update
sudo apt install sysstat
iostat -d -x 1
问题补充:
- 场景描述:数据集存放在
/dev/nvme0n1
中,python的conda虚拟环境存放在/dev/nvme1n1
,你猜训练的时候哪个硬盘占用率高? - 我实测,在上述场景中,训练yolo11n模型的时候,
/dev/nvme1n1
的占用率到达60%的时候,/dev/nvme0n1
占用率只有6%。
更多推荐
所有评论(0)