【问题标题】:RuntimeError: Attempting to deserialize object on CUDA device 2 but torch.cuda.device_count() is 1RuntimeError:尝试反序列化 CUDA 设备 2 上的对象,但 torch.cuda.device_count() 为 1
【发布时间】:2019-03-29 22:54:51
【问题描述】:

我有一个用于训练模型的 python 代码的 sn-p。问题是运行后:

loaded_state = torch.load(model_path+seq_to_seq_test_model_fname)

加载预训练模型,我得到:

  Traceback (most recent call last):
  File "img_to_text.py", line 480, in <module>
    main()
  File "img_to_text.py", line 475, in main
    r = setup_test()
  File "img_to_text.py", line 259, in setup_test
    s2s_data = s2s.setup_test()
  File "/media/ahrzb/datasets/notebooks/mzh/SemStyle/semstyle/code/seq2seq_pytorch.py", line 220, in setup_test
    loaded_state= torch.load(model_path+seq_to_seq_test_model_fname)
  File "/home/ahrzb/.pyenv/versions/2.7.15/envs/mzh2.7/lib/python2.7/site-packages/torch/serialization.py", line 358, in load
    return _load(f, map_location, pickle_module)
  File "/home/ahrzb/.pyenv/versions/2.7.15/envs/mzh2.7/lib/python2.7/site-packages/torch/serialization.py", line 542, in _load
    result = unpickler.load()
  File "/home/ahrzb/.pyenv/versions/2.7.15/envs/mzh2.7/lib/python2.7/site-packages/torch/serialization.py", line 508, in persistent_load
    data_type(size), location)
  File "/home/ahrzb/.pyenv/versions/2.7.15/envs/mzh2.7/lib/python2.7/site-packages/torch/serialization.py", line 372, in restore_location
    return default_restore_location(storage, location)
  File "/home/ahrzb/.pyenv/versions/2.7.15/envs/mzh2.7/lib/python2.7/site-packages/torch/serialization.py", line 104, in default_restore_location
    result = fn(storage, location)
  File "/home/ahrzb/.pyenv/versions/2.7.15/envs/mzh2.7/lib/python2.7/site-packages/torch/serialization.py", line 85, in _cuda_deserialize
    device, torch.cuda.device_count()))

我认为这是因为他们已经在两个 GPU 上训练了模型,我需要将它加载到一个 GPU 中。我改变了这一行:

loaded_state = torch.load(model_path+seq_to_seq_test_model_fname) 

loaded_state = torch.load(model_path+seq_to_seq_test_model_fname, map_location={'cuda:1': 'cuda:0'} ) 

为了将 cuda 1 的数据映射到 cuda 0 但它不起作用。

【问题讨论】:

    标签: python pytorch


    【解决方案1】:

    我刚刚想通了:

     loaded_state = torch.load(model_path+seq_to_seq_test_model_fname,map_location='cuda:0')
    

    解决办法

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2021-06-17
      • 2020-09-17
      • 2023-02-16
      • 2021-04-27
      • 2020-10-08
      • 2020-04-02
      • 2020-04-08
      • 2012-03-06
      相关资源
      最近更新 更多