此貼僅為記錄debug過程,為防后續再次遇見
問題
問題情境
復現文章模型,使用GPU跑代碼,有兩張GPU,設置在 cuda: 1 上跑
問題描述
在模型測試加載最優模型時報錯:torch.cuda.device_count()顯示GPU卡數量只有一張,無法加載使用卡1
報錯信息
運行超時
RuntimeError: Attempting to deserialize object on CUDA device 1 but torch.cuda.device_count() is 1. Please use torch.load with map_location to map your storages to an existing device.
解決
發現是以下代碼問題
os.environ['CUDA_VISIBLE_DEVICES'] = args.gpu
該語句限制了 PyTorch 進程可以看到的 GPU。例如,如果 x=“0”,則你的代碼只能看到一張 GPU(設備 0),即使你機器有多張卡,之后你調用 torch.cuda.device_count() 就只會返回 1
將該行代碼注釋后可以成功使用GPU 1 運行測試