如何调控gpu训练参数
调整参数后的效果
1. --batch_size
(降低批大小)
-
效果:直接减少 GPU 显存占用,但可能会略微降低训练稳定性(梯度更新变少)。
-
如何选择:
-
从默认值
24
逐步降低(如16 → 8 → 4
),直到不报 OOM 错误。 -
如果训练时显存仍不足,需结合其他参数调整。
-
2. --img_size
(降低输入分辨率)
-
效果:
-
显存占用大幅减少(分辨率从
384x384
→256x256
可减少约 50% 显存)。 -
可能轻微影响模型精度(尤其是小物体识别任务)。
-
-
建议:
-
如果任务对细节要求不高(如场景分类),优先降低分辨率。
-
3. --mixed_precision True
(混合精度训练)
-
效果:
-
显存占用减少 30%~50%,训练速度可能提升 20%+。
-
对模型精度影响极小(现代模型普遍支持 FP16)。
-
-
注意:
-
需确保代码支持
torch.cuda.amp
(你的代码已支持--mixed_precision
参数)。
-
4. --gpu_ids 0
(减少 GPU 数量)
-
效果:
-
单卡训练显存需求更低,但训练速度变慢。
-
适用于调试或显存严重不足的情况。
-
补充:
这张图片显示的是运行`nvidia-smi`命令后得到的 NVIDIA GPU 状态信息。`nvidia-smi`(NVIDIA System Management Interface)是一个命令行工具,用于监控和管理 NVIDIA GPU 设备。以下是各部分信息的详细解释:
顶部信息
• Fri Jun 6 16:56:31 2025:显示命令执行的日期和时间。
• NVIDIA-SMI 572.16:显示 NVIDIA SMI 工具的版本号。
• Driver Version:572.16:显示当前安装的 NVIDIA 驱动程序版本。
• CUDA Version:12.8:显示当前支持的 CUDA 版本。
GPU 信息
• GPU:显示 GPU 的编号(如果有多个 GPU,会列出所有 GPU 的信息)。
• Name:显示 GPU 的型号,这里是 NVIDIA GeForce RTX 3050。
• Temp:显示 GPU 的当前温度,这里是 65°C。
• Perf:显示 GPU 的性能状态,P0 表示最大性能状态。
• Pwr:Usage/Cap:显示 GPU 当前功耗和最大功耗,这里是 61W/95W。
• Driver-Model:显示当前使用的驱动模型,WDDM 表示 Windows 显示驱动模型。
• Bus-Id:显示 GPU 总线 ID,用于识别特定的 GPU 设备。
• Disp.A:显示是否正在使用 GPU 进行显示输出,Off 表示没有使用。
• Memory-Usage:显示 GPU 显存的使用情况,这里是 3395MiB/4096MiB。
• GPU-Util:显示 GPU 的利用率,这里是 94%。
• Volatile Uncorr.ECC:显示易失性不可纠正的 ECC 错误,N/A 表示不适用。
• Compute M.:显示计算模式,Default 表示默认模式。
• MIG M.:显示多实例 GPU 模式,N/A 表示不适用。
进程信息
• Processes:显示当前使用 GPU 的进程信息。
• GPU:显示进程使用的 GPU 编号。
• PID:显示进程的进程 ID。
• Type:显示进程类型,C 表示计算进程。
• Process name:显示进程名称,这里是`python.exe`。
• GPU Memory Usage:显示进程使用的 GPU 显存量,这里是 N/A(不适用),可能是因为进程没有使用 GPU 进行计算。
总结:这张图片显示你的 NVIDIA GeForce RTX 3050 GPU 当前正在运行一个 Python 进程,GPU 利用率为 94%,温度为 65°C,显存使用了大约 3395MiB。