我试图在塔可龙下载以下模型
import torch
tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2')
我收到了:
>>> import torch
>>> tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2')
Using cache found in .cache\torch\hub\nvidia_DeepLearningExamples_torchhub
...
File "Anaconda3\envs\env3_pytorch\lib\site-packages\torch\serialization.py", line 79, in validate_cuda_device
raise RuntimeError('Attempting to deserialize object on a CUDA '
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location='cpu' to map your storages to the CPU.
因此,我在map_location='cpu'
中使用了下面的代码,但仍然得到了相同的错误。
>>> tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2', map_location='cpu')
torch.version.cuda显示了一个版本,但是torch.cuda.is_available()是假的。
>>> import torch
>>> torch.version.cuda
'9.0'
>>> torch.cuda.is_available()
False
map_location
相关的错误,因为我准确地使用了要求使用的命令错误消息。发布于 2020-05-16 17:24:04
torch.hub.load
不专门支持map_location
,它只将额外的参数转发给模型的加载,因此它的实现取决于是否支持它。
在这种情况下,不支持加载,加载是在NVIDIA/DeepLearningExamples:torchhub - hubconf.py中实现的,并且不将任何map_location
传递给当加载检查点时。
这意味着您需要手动加载检查点并将其应用于模型。值得庆幸的是,可以通过设置pretrained=False
和torch.hub.load_state_dict_from_url
分别加载模型,而无需加载检查点就可以加载相同的配置,后者支持map_location
。状态dict只需要一个小的更改,因为它是用DistributedDataParallel
训练的,它封装了模块,因此模型中的每个layer
都变成了module.layer
。在状态判断中,需要删除module.
前缀。
tacotron2 = torch.hub.load('nvidia/DeepLearningExamples:torchhub', 'nvidia_tacotron2', pretrained=False)
checkpoint = torch.hub.load_state_dict_from_url('https://api.ngc.nvidia.com/v2/models/nvidia/tacotron2pyt_fp32/versions/1/files/nvidia_tacotron2pyt_fp32_20190306.pth', map_location="cpu")
# Unwrap the DistributedDataParallel module
# module.layer -> layer
state_dict = {key.replace("module.", ""): value for key, value in checkpoint["state_dict"].items()}
# Apply the state dict to the model
tacotron2.load_state_dict(state_dict)
https://stackoverflow.com/questions/61826246
复制相似问题