python - 如何在 Pytorch 分布式中使用自定义 Rank 到 GPU 映射
问题描述
我正在运行分布在单个 4-gpu 节点上的 PyTorch,我不是唯一一个运行项目的节点。因此,有时某些 GPU 太忙,而其他 GPU 则处于空闲状态。
假设 GPU 0 和 GPU 2 很忙,但 GPU 1 和 GPU 3 没有,所以我只想使用这些 GPU。似乎默认情况下,在 pytorch 分布式中,Rank 0 始终是 GPU 0。
如何向 PyTorch 指定 Rank 0 应该对应于 GPU 1,而 Rank 1 应该对应于 GPU 3?
解决方案
您可以通过设置变量来告诉任何命令哪些 GPU 应该对它们可见CUDA_VISIBLE_DEVICES
。例如
CUDA_VISIBLE_DEVICES=2,3 python run.py <args>
这只会使 GPU 2 和 3 对该进程可见,因此 DDP 将仅在您指定的那些 GPU 上运行。(请注意,这是零索引的,即0
第一个 GPU。)
推荐阅读
- android - 搜索功能无法正确过滤
- javascript - 抓取脚本标签中的数据
- python - Kivy 中 blit 后快速重绘纹理
- android - react native ':app:packageRelease' 总是失败,因为它找到了我删除的旧密钥库
- xamarin.forms - Youtube 视频未以 Xamarin 形式播放 webview
- sql - 包含从 AA 到 ZZ 的所有可能组合的表格
- ios - Observable 是 Observing BehaviorRelay 只调用一次。RxSwift
- msbuild - Visual Studio 2019 v16.3 及更高版本无法使用 netcoreapp3.0 MSBuild 任务构建 netcoreapp3.0 项目的解决方法
- c++ - 如何使用此代码将 cin 转换为小写?
- java - 如何在java中修改多态程序