GPEN如何监控GPU利用率?nvidia-smi使用技巧
本镜像基于GPEN人像修复增强模型构建,预装了完整的深度学习开发环境,集成了推理及评估所需的所有依赖,开箱即用。
1. 镜像环境说明
| 组件 | 版本 |
|---|---|
| 核心框架 | PyTorch 2.5.0 |
| CUDA 版本 | 12.4 |
| Python 版本 | 3.11 |
| 推理代码位置 | /root/GPEN |
主要依赖库:
facexlib: 用于人脸检测与对齐basicsr: 基础超分框架支持opencv-python,numpy<2.0,datasets==2.21.0,pyarrow==12.0.1sortedcontainers,addict,yapf
2. 快速上手
2.1 激活环境
conda activate torch252.2 模型推理 (Inference)
进入代码目录并使用预置脚本进行推理测试:
cd /root/GPEN使用下面命令进行推理测试,可以通过命令行参数灵活指定输入图片。
# 场景 1:运行默认测试图 # 输出将保存为: output_Solvay_conference_1927.png python inference_gpen.py # 场景 2:修复自定义图片 # 输出将保存为: output_my_photo.jpg python inference_gpen.py --input ./my_photo.jpg # 场景 3:直接指定输出文件名 # 输出将保存为: custom_name.png python inference_gpen.py -i test.jpg -o custom_name.png推理结果将自动保存在项目根目录下,测试结果如下:
3. 已包含权重文件
为保证开箱即用及离线推理能力,镜像内已预下载以下模型权重(如果没有运行推理脚本会自动下载):
- ModelScope 缓存路径:
~/.cache/modelscope/hub/iic/cv_gpen_image-portrait-enhancement - 包含内容:完整的预训练生成器、人脸检测器及对齐模型。
4. GPU资源监控:nvidia-smi 使用详解
GPEN作为基于生成对抗网络的高分辨率人像增强模型,在推理和训练过程中对GPU资源有较高需求。为了确保系统稳定运行并优化性能表现,掌握nvidia-smi工具的使用至关重要。
4.1 nvidia-smi 简介
nvidia-smi(NVIDIA System Management Interface)是NVIDIA官方提供的系统管理接口工具,可用于实时查看GPU状态、监控资源使用情况、设置功耗策略等。它是深度学习开发者日常调试和性能分析的核心工具之一。
执行以下命令即可查看当前GPU的基本信息:
nvidia-smi输出示例:
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM2-32GB Off | 00000000:00:1B.0 Off | 0 | | N/A 45C P0 35W / 300W | 8124MiB / 32768MiB | 78% Default | +-------------------------------+----------------------+----------------------+关键字段解释:
- Temp: GPU 温度(正常范围通常为 30–85°C)
- Memory-Usage: 显存占用情况(如 8124MiB / 32768MiB)
- GPU-Util: GPU 利用率(表示核心计算单元活跃程度)
- Pwr:Usage/Cap: 功耗使用与上限
- Compute M.: 计算模式(Default 表示可同时运行多个任务)
提示:GPEN 推理阶段以显存带宽和卷积计算为主,通常表现为中高 GPU 利用率(60%-90%),若长期低于30%,可能意味着存在数据加载瓶颈或批处理过小。
4.2 实时动态监控技巧
持续刷新监控(每秒一次)
nvidia-smi -l 1该命令每秒刷新一次GPU状态,适合观察推理过程中的资源波动。
监控特定指标(简洁输出)
如果你只关心利用率和显存,可以使用查询命令提取关键信息:
nvidia-smi --query-gpu=timestamp,name,temperature.gpu,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv输出示例:
timestamp, name, temperature.gpu, utilization.gpu [%], utilization.memory [%], memory.used [MiB], memory.total [MiB] 2025/04/05 10:23:45, Tesla V100-SXM2-32GB, 45, 78, 82, 8124, 32768此格式便于记录日志或导入Excel进行可视化分析。
指定GPU设备监控
多卡环境下,可通过-i参数指定某块GPU:
nvidia-smi -i 0 --query-gpu=utilization.gpu,memory.used --format=csv适用于分布式训练或多任务调度场景。
4.3 高级用法与实用技巧
设置自动采样并保存日志
将GPU使用情况持续记录到文件中,便于后续分析:
nvidia-smi -l 2 --query-gpu=timestamp,utilization.gpu,memory.used --format=csv >> gpu_usage.log &该命令每2秒采样一次,并追加写入gpu_usage.log文件,后台运行不影响当前操作。
查看进程占用情况
当显存异常占用时,可查看具体是哪个进程导致:
nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv输出示例:
pid, process_name, used_memory [MiB] 12345, python, 8124结合kill -9 <PID>可手动释放无响应进程。
限制GPU功耗(节能模式)
在非高性能需求场景下,可通过降低功耗限制来减少发热和能耗:
nvidia-smi -pl 200 # 将GPU 0 的最大功耗设为200W恢复默认:
nvidia-smi -rg注意:部分云平台实例不支持修改功耗策略。
5. GPEN推理性能优化建议
结合nvidia-smi监控数据,以下是针对GPEN模型的实际优化建议:
5.1 显存优化
GPEN支持多种分辨率输入(如512×512、1024×1024)。随着分辨率提升,显存消耗呈平方级增长。
| 分辨率 | 显存占用(估算) |
|---|---|
| 512×512 | ~4 GB |
| 1024×1024 | ~12 GB |
| 2048×2048 | >24 GB(需多卡或梯度检查点) |
建议:
- 使用
nvidia-smi观察实际显存峰值,避免OOM错误。 - 对超高分辨率图像,考虑分块处理(tiling)策略。
5.2 批量推理调优
虽然GPEN主要用于单张人像增强,但在批量处理场景下可通过调整batch_size提升吞吐效率。
监控GPU-Util指标:
- 若利用率长期低于50%,尝试增加
batch_size - 若显存不足,则启用
--fp16半精度推理(如支持)
示例修改推理脚本支持批量输入:
# 修改 inference_gpen.py 中的数据加载逻辑 dataloader = DataLoader(dataset, batch_size=4, shuffle=False)再配合nvidia-smi -l 1观察整体利用率变化。
5.3 性能瓶颈诊断流程
当你发现推理速度慢或GPU利用率偏低时,推荐按以下流程排查:
- 运行
nvidia-smi查看 GPU-Util 和 Memory-Usage- 若 GPU-Util < 30%,说明计算未饱和
- 检查CPU和磁盘I/O
- 使用
htop或iotop查看是否因图像解码或预处理阻塞
- 使用
- 启用异步数据加载
- 在PyTorch中设置
DataLoader(num_workers>0, pin_memory=True)
- 在PyTorch中设置
- 启用TensorRT或ONNX加速(进阶)
- 将GPEN模型导出为ONNX格式,结合TensorRT实现低延迟推理
6. 常见问题
- 数据集准备:官网训练数据为 FFHQ 公开数据集。本算法采用监督式的训练,因此需要事先准备好高质-低质的数据对,推荐使用RealESRGAN、BSRGAN等降质方式进行低质数据生成。
- 训练:提供训练数据对的读取地址,设置好需要的分辨率版本(推荐512x512),调整生成器和判别器的学习率以及总epoch数,即可开始训练。
7. 参考资料
- 官方仓库:yangxy/GPEN
- 魔搭社区地址:iic/cv_gpen_image-portrait-enhancement
8. 引用 (Citation)
@inproceedings{yang2021gpen, title={GAN-Prior Based Null-Space Learning for Consistent Super-Resolution}, author={Yang, Tao and Ren, Peiran and Xie, Xuansong and Zhang, Lei}, booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)}, year={2021} }获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。