如何记录GPU使用率并写入文件(如json),适配TensorFlow Keras开发场景
GPU使用率记录并写入JSON的可行实现方案
- 基于
nvidia-smi原生能力实现
你之前对nvidia-smi的认知存在偏差:它本身支持自定义输出字段、指定结构化格式,完全可以用来采集使用率后转存JSON。执行以下命令可以直接输出带时间戳的GPU利用率、显存占用等核心指标:
你可以写个简单的Python/Shell脚本定时执行该命令,把输出的CSV格式数据按字段拆解后,直接序列化写入JSON文件即可,无额外依赖,适配所有NVIDIA驱动环境。nvidia-smi --query-gpu=timestamp,utilization.gpu,memory.used,memory.total --format=csv,noheader,nounits - 基于pynvml库做Python原生内嵌采集
如果你不想额外启动独立进程,想把采集逻辑直接写在Keras训练脚本里,可以用NVIDIA官方的Python绑定库pynvml。你可以自定义Keras的回调函数,在每个epoch/step结束时调用pynvml接口读取GPU使用率,拿到数值后可以和训练的loss、准确率等指标一起存入JSON文件,和训练流程无缝结合,数据对齐度更高。 - 基于TensorFlow内置Profiler采集
如果你需要和TensorFlow训练 timeline 完全对齐的GPU使用率数据,可以用TensorFlow自带的tf.profiler接口,在训练过程中直接采集GPU的计算负载、显存占用数据,导出后可以直接转存为JSON格式,优势是数据和训练步骤严格对应,方便后续做性能瓶颈分析。
如果需要持续记录整个训练周期的GPU数据,建议单独开一个守护线程/进程跑采集逻辑,避免阻塞训练主进程。
内容的提问来源于stack exchange,提问作者user11849691
相关产品推荐
相关产品推荐

