keras - 如何检查 keras 训练是否已经在 GPU 中运行?
问题描述
有时我犯了一个错误,尝试在同一个 GPU(两个不同的脚本)中使用 keras 同时运行两个训练,导致我的机器崩溃或中断两个训练。
如果有一些训练正在运行,我希望能够在我的脚本中进行测试,因此要么更改 gpu,要么停止新的训练。
我发现寻找答案的唯一提示是用来nvidia-smi
检查在 gpus 中运行的进程?
nvidia-smi 输出示例:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 411.63 Driver Version: 411.63 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 TITAN Xp WDDM | 00000000:03:00.0 Off | N/A |
| 42% 67C P2 81W / 250W | 10114MiB / 12288MiB | 54% Default |
+-------------------------------+----------------------+----------------------+
| 1 TITAN Xp WDDM | 00000000:04:00.0 Off | N/A |
| 35% 58C P2 144W / 250W | 10315MiB / 12288MiB | 73% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 11660 C ...\conda\envs\tensorflow18-gpu\python.exe N/A |
| 1 1532 C+G Insufficient Permissions N/A |
| 1 5388 C+G C:\Windows\explorer.exe N/A |
| 1 6648 C+G Insufficient Permissions N/A |
| 1 7396 C+G ...t_cw5n1h2txyewy\ShellExperienceHost.exe N/A |
| 1 7688 C+G ...dows.Cortana_cw5n1h2txyewy\SearchUI.exe N/A |
| 1 9808 C ...\conda\envs\tensorflow18-gpu\python.exe N/A |
| 1 10820 C+G Insufficient Permissions N/A |
| 1 11232 C+G ...x64__8wekyb3d8bbwe\Microsoft.Photos.exe N/A |
+-----------------------------------------------------------------------------+
在这种情况下,python.exe 在 GPU 0 和 GPU 1 中运行。
有没有更直接的解决方案?谢谢
解决方案
你可以试试这个python包,GPUtil
推荐阅读
- python - VSCode 远程 Jupyter Notebook - 在 Jupyter Notebook 远程服务器上的特定文件夹中打开现有笔记本
- php - 在准备好的语句中调用 mysqli_commit() 而不是 mysqli_rollback()
- string - 在 VB.net 中将 Byte() 转换为 String 后从 String 中删除 null Char
- react-native - 是否可以关闭drawerBackground屏幕重叠?
- angular - Angular:如何从可观察对象中获取内容?
- java - 多个 if else if 在 JAVA8 中带有 && 条件
- vulkan - 在渲染通道内部和外部记录命令有什么区别?
- java - 如何在javafx中跨多个窗口创建“更改背景颜色选项”
- python - 删除以普通用户身份使用服务帐户创建的 Google Sheet 文件
- c# - 在 dot net core 3.1 中将 NLog 注册为非特定主机的记录器